57 cerr <<
"Cannot open library: " << dlerror() <<
'\n';
60 DWORD dw = GetLastError();
61 sprintf(szBuf,
"%s failed: GetLastError returned %i\n",
62 (
char*)plugin_file, (
int)dw);
71 farp = GetProcAddress(handle,
"DestroyIODeviceFactory");
79 if(this->CreateIODeviceFactory!=NULL)
80 m_factory = this->CreateIODeviceFactory();
86 this->DestroyIODeviceFactory();
88 CreateIODeviceFactory = NULL;
89 DestroyIODeviceFactory = NULL;
102 if(pfx==NULL)
return NULL;
108 for(
int i=0;i<n;i++) narray[i] = array[i];
125 if(m_factory!=NULL) {
128 if(array[j]==iodevice) {
130 m_factory->Destroy(iodevice);
136 for(i=0;i<j;i++) narray[i] = array[i];
137 for(i=j;i<(n-1);i++) narray[i] = array[i+1];
155 if(!stricmp(effect_name,
"nil"))
return NULL;
160 complete_name+=
moText(
"_d");
162 complete_name +=
moText(
".dll");
166 complete_name+=
moText(
"d");
168 complete_name += moPluginExtension;
175 for(
MOuint i = 0; i < plugins.Count(); i++)
176 if(!stricmp(plugins[i]->GetName(), complete_name))
186 plg_index = plugins.Count();
188 plugins.Add( pplugin );
192 if(plugins[plg_index]->m_factory!=NULL)
193 return plugins[plg_index]->Create();
204 if( IODevice->
GetName() ==
"")
return false;
209 complete_name+=
moText(
"d");
211 complete_name +=
moText(
".dll");
215 complete_name+=
moText(
"d");
217 complete_name += moPluginExtension;
224 for(
MOuint i = 0; i < plugins.Count(); i++)
225 if(!stricmp(plugins[i]->GetName(), complete_name))
236 bool res = plugins[plg_index]->Destroy(IODevice);
239 if (res && plugins[plg_index]->n == 0) {
240 plugins[plg_index]->Unload();
241 plugins.Remove(plg_index);
static void Error(moText p_text)
Anuncia un error.
const moText & GetName() const
void Load(moText plugin_file)
clase de para manejar textos
virtual ~moIODeviceFactory()
void moUnloadPlugin(MOpluginHandle &handle)
static const moText & GetModulesDir()
LIBMOLDEO_API bool moDeleteIODevice(moIODevice *IODevice, moIODevicePluginsArray &plugins)
moDefineDynamicArray(moIODevicePluginsArray) using namespace std
clase base para un plugin de dipositivos de E/S
LIBMOLDEO_API moIODevice * moNewIODevice(moText effect_name, moIODevicePluginsArray &plugins)
void(MO_PLG_ENTRY * DestroyIODeviceFactoryFunction)()
moIODeviceFactory *(MO_PLG_ENTRY * CreateIODeviceFactoryFunction)()
MOpluginHandle moLoadPlugin(moText fn)
bool Destroy(moIODevice *iodevice)