#include "module_wrapper.h" IRCModuleWrapper::IRCModuleWrapper() { // } IRCModuleWrapper::~IRCModuleWrapper() { // } void IRCModuleWrapper::LoadModule(char *filename) { void *handle = dlopen(filename, RTLD_NOW); if(handle == NULL) { std::cerr << dlerror() << std::endl; exit(-1); } void *maker = dlsym(handle, "GiveModulePtrToProg"); IRCModule *module = ((IRCModule *(*)())(maker))(); if(!module_list) { module_list = new IRCModuleList; module_list->loaded = false; module_list->module = module; module_list->info = module->getModuleInfo(); module_list->next = 0; RegisterModule(module_list, module->getModuleInfo(), module); } else { RegisterModule(module_list, module->getModuleInfo(), module); } } void IRCModuleWrapper::UnloadModule() { // } void IRCModuleWrapper::RegisterModule(IRCModuleList *mod_list, IRCModuleInfo *info, IRCModule *module) { if(!mod_list->module) { if(!mod_list->next) { mod_list->next = new IRCModuleList; mod_list->next->info = 0; mod_list->next->loaded = false; mod_list->next->module = 0; mod_list->next->next = 0; } RegisterModule(mod_list->next, info, module); } else { mod_list->loaded = false; mod_list->info = info; mod_list->module = module; } } void IRCModuleWrapper::UnregisterModule() { // }