> Oh. I thought ZooLib was portable.
ZooLib is portable, but it depends on the presence of atomic math, which is
not something that is typically provided in high-level languages. If the
ZAtomic stuff compiles at all without the use of assembler, it is simply
incorrect, as you cannot do that sort of thing from C++.
Some operating systems, like the BeOS, provide library routines with access to
atomic math but ZooLib's author Andy Green says he has been unable to form a
complete set of atomic operations from even the routines provided by the BeOS.
Hence there is a small amount of assembly code for each supported platform.
I would strongly disagree with you that there are logical errors in the C++; I
have yet to meet a programmer who pays more slavish attention to detail and
correctness of C++ code than ZooLib's author. I don't doubt that there may be
some, but _I_ certainly have not had the pleasure of meeting them.
You will find that there are only a few platform-specific files in the whole
of ZooLib, and some of the classes have platform-specific members as
implementation details that are not publicly visible. For example, there is
ZOSWindow_Mac, there is the ZAtomic inline assembler, and there are the
different kinds of platform-dependent bitmaps hidden inside a ZDCPixmap.
ZooLib _is_ portable but that does not mean it has been _ported_ to every
platform; because both threaded code and graphical user interface code are
highly platform specific, effort is required to port to a new platform, it
doesn't just compile out of the box.
Imagine, if you will, implementing the ZAtomic and ZThread classes and
operations on top of Solaris threads - you can certainly do that, and there
would likely be advantages to you on your platform if you did. But you
couldn't expect to do so without having to write some code which was native to
the Solaris operating system.
Michael D. Crawford
GoingWare Inc. - Expert Software Development and Consulting
Tilting at Windmills for a Better Tomorrow.