wvmonikerregistry.h

00001 /* -*- Mode: C++ -*-
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  * 
00005  * Support for moniker registries.  See wvmoniker.h.
00006  */
00007 #ifndef __WVMONIKERREGISTRY_H
00008 #define __WVMONIKERREGISTRY_H
00009 
00010 #include "wvmoniker.h"
00011 #include "wvscatterhash.h"
00012 
00018 class WvMonikerRegistry //: public GenericComponent<IObject>
00019 {
00020     struct Registration
00021     {
00022         WvString id;
00023         WvMonikerCreateFunc *func;
00024         
00025         Registration(WvStringParm _id, WvMonikerCreateFunc *_func) 
00026             : id(_id)
00027             { func = _func; }
00028     };
00029     
00030     DeclareWvScatterDict(Registration, WvString, id);
00031 
00032     unsigned refcount;
00033     
00034 public:
00035     UUID reg_iid;
00036     RegistrationDict dict;
00037     
00038     WvMonikerRegistry(const UUID &iid);
00039     virtual ~WvMonikerRegistry();
00040     
00041     virtual void add(WvStringParm id, WvMonikerCreateFunc *func);
00042     virtual void del(WvStringParm id);
00043     
00044     virtual void *create(WvStringParm _s);
00045     
00046     // find a registry for objects of the given interface UUID
00047     static WvMonikerRegistry *find_reg(const UUID &iid);
00048     
00049     // IObject stuff
00050     virtual IObject *getInterface(const UUID &uuid);
00051     
00052     // we can't use GenericComponent's implementation, since we have to
00053     // unregister ourselves on the second-last release().
00054     virtual unsigned int addRef();
00055     virtual unsigned int release();
00056 };
00057 
00058 
00059 #endif // __WVMONIKERREGISTRY_H

Generated on Fri Oct 5 18:20:28 2007 for WvStreams by  doxygen 1.5.3