From: jesjones@halcyon.com (Jesse Jones)
Subject: [ANN] Raven 1.0 A new C++ framework
I’ve recently uploaded Raven 1.0 to Info-Mac. Raven is a new C++ framework
for Macintosh programming. Raven is similar to PowerPlant and MacApp but
takes full advantage of newer C++ features, has a more modular structure,
and makes extensive use of programming by contract.
Like ODF and MacApp Raven makes extensive use of multiple inheritance by
means of mixin classes. Raven also uses the standard C++ classes wherever
possible, including the string class, the standard exception classes, and
STL. Raven also makes use of template classes and RTTI.
Raven is divided into four layers: Foundation, Core, Application, and
Esoteria. Each layer is composed of a number of packages. For example the
Core layer has a Files package containing classes to manage things like
reading/writing a file, iterating over files, accessing the Desktop
Manager, and CustomGetFile and CustomPutFile.
The Foundation layer contains low level classes for things like memory
management, debugging, broadcast/listener, exceptions, string utilities,
and geometry classes.
The Core layer includes a large number of generally useful classes for
things like graphics, sound, files, menus, command objects, drag and drop,
preferences, etc.
The Application layer contains higher level classes for views, windows, and
application objects.
The Esoteria layer contains more exotic classes that most applications
won’t need. It includes classes for compression, parsing, 2D graphing, and
mathematics.
Because the lower layers are independant of the higher layers and coupling
between packages is minimized you can easily use parts of Raven with other
frameworks. For example, most of the Foundation and Core layers can be used
with PowerPlant.
Raven includes a rich set of debugging tools that include several excellent
debug macros, a powerful debug menu, a framework for developing unit tests,
and a flexible replacement for the default operator new that keeps a stack
crawl for each allocated block.
In addition the member functions in Raven classes do a good job of
verifying the validity of their arguments and many of the classes include
Invariant methods to catch bugs within Raven or within ill behaved
subclasses.
There are currently four example programs written using Raven:
IconEdit – A simple document oriented application similar to the MacApp
example of the same name.
DropCount – A drag and drop app that counts the number of source lines in
C/C++ code.
Skeleton – A do nothing app for use as the base for new projects.
Quill – The Raven view editor.
info-mac/dev/raven-10.hqx; 2776K
info-mac/dev/raven-10-examples.hqx; 1915K
— Jesse (jesjones@halcyon.com)