  | 
   Handy Object Registration Macro 
   Submitted by  |   
  
  
This is a simple little macro that can be used to perform some type of
one-time, start-up operation.  I usually use it to register some object
with some singleton-based server object.  For instance, I used this
macro to register several resource objects with a general purpose
resource parser.  In order to make this macro more useful, you'd gonna
have to tweak it to make the constructor/destructor do whatever
application specific code you need to do.  All static objects are
guarented to be created before you get to a main/WinMain, but the order
of object creation isn't.  So you're gonna have to be careful what you
make this macro do.  In the case of the resource parser, I did a lazy
creation of the singleton object, i.e. create it when you try to access
it.
 
 #define REGISTER_OBJECT(x) \
    class x##_Register \
    { \
    public: \
        x##_Register() \
        { \
            ResourceParser::Register(x##::GetTag(), x##::CreateInstance); \
        } \
        \
        ~x##_Register() \
        { \
            ResourceParser::Unregister(x##::GetTag()); \
        } \
        \
        static x##_Register object; \
    }; \
    \
    x##_Register x##_Register::object;  |  
 
  
 | 
 
 
 
The zip file viewer built into the Developer Toolbox made use
of the zlib library, as well as the zlibdll source additions.
 
 
 |