00001
00002
00003
00004
00005
00006
00007 #ifndef __WVMONIKERREGISTRY_H
00008 #define __WVMONIKERREGISTRY_H
00009
00010 #include "wvmoniker.h"
00011 #include "wvscatterhash.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)
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 IObject *obj = NULL, void *userdata = NULL);
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