00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <xplc/IFactory.h>
00024 #include <xplc/core.h>
00025 #include <xplc/utils.h>
00026 #include "new.h"
00027
00028 UUID_MAP_BEGIN(NewMoniker)
00029 UUID_MAP_ENTRY(IObject)
00030 UUID_MAP_ENTRY(IMoniker)
00031 UUID_MAP_END
00032
00033 NewMoniker::~NewMoniker() {
00034 }
00035
00036 IObject* NewMoniker::resolve(const char* aName) {
00037 IServiceManager* servmgr;
00038 IMoniker* monikers;
00039 IFactory* factory;
00040 IObject* obj = 0;
00041
00042 servmgr = XPLC_getServiceManager();
00043 if(servmgr) {
00044 monikers = mutate<IMoniker>(servmgr->getObject(XPLC_monikers));
00045
00046 if(monikers) {
00047 factory = mutate<IFactory>(monikers->resolve(aName));
00048
00049 if(factory) {
00050 obj = factory->createObject();
00051 factory->release();
00052 }
00053
00054 monikers->release();
00055 }
00056
00057 servmgr->release();
00058 }
00059
00060 return obj;
00061 }
00062