00001
00002
00003
00004
00005
00006
00007 #ifndef __WVMONIKERREGISTRY_H
00008 #define __WVMONIKERREGISTRY_H
00009
00010 #include "wvmoniker.h"
00011 #include "wvlinklist.h"
00012
00018 class WvMonikerRegistry
00019 {
00020 struct Registration
00021 {
00022 WvString id;
00023 WvMonikerCreateFunc *func;
00024
00025 Registration(WvStringParm _id, WvMonikerCreateFunc *_func)
00026 : id(_id), func(_func)
00027 { }
00028 };
00029
00030 DeclareWvList(Registration);
00031
00032 unsigned refcount;
00033
00034 public:
00035 UUID reg_iid;
00036 RegistrationList list;
00037
00038 WvMonikerRegistry(const UUID &iid);
00039 virtual ~WvMonikerRegistry();
00040
00041 virtual void add(WvStringParm id, WvMonikerCreateFunc *func,
00042 const bool override = false);
00043 virtual void del(WvStringParm id);
00044
00045 virtual void *create(WvStringParm _s, IObject *_obj);
00046
00047
00048 static WvMonikerRegistry *find_reg(const UUID &iid);
00049
00050
00051 virtual IObject *getInterface(const UUID &uuid);
00052
00053
00054
00055 virtual unsigned int addRef();
00056 virtual unsigned int release();
00057 };
00058
00059
00060 #endif // __WVMONIKERREGISTRY_H