module_dl.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __UTILS_SYSTEM_DYNAMIC_MODULE_MODULE_DL_H_
00026 #define __UTILS_SYSTEM_DYNAMIC_MODULE_MODULE_DL_H_
00027
00028 #include <utils/system/dynamic_module/module.h>
00029 #include <string>
00030
00031 namespace fawkes {
00032
00033 class ModuleDL : public Module {
00034 public:
00035
00036 ModuleDL(std::string filename, Module::ModuleFlags flags = Module::MODULE_FLAGS_DEFAULT);
00037
00038 virtual ~ModuleDL();
00039
00040 virtual void open();
00041 virtual bool close();
00042
00043 virtual void ref();
00044 virtual void unref();
00045 virtual bool notref();
00046 virtual unsigned int get_ref_count();
00047
00048
00049 virtual bool has_symbol(const char *symbol_name);
00050 virtual void * get_symbol(const char *symbol_name);
00051
00052 virtual bool operator==(ModuleDL &cmod);
00053
00054 virtual std::string get_filename();
00055 virtual std::string get_base_filename();
00056
00057 static const char * get_file_extension();
00058
00059 private:
00060 static const char *FILE_EXTENSION;
00061
00062 void * handle;
00063 std::string filename;
00064 ModuleFlags flags;
00065 bool file_found;
00066 bool is_resident;
00067 unsigned int ref_count;
00068 };
00069
00070 }
00071
00072 #endif