00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef _CACCESSORPLUGIN
00025
#define _CACCESSORPLUGIN
00026
#include "libMRML/include/uses-declarations.h"
00027
#include <sys/types.h>
00028
#include <dirent.h>
00029
#include <dlfcn.h>
00030
00031
#include <iostream>
00032
#include <string>
00033
#include <map>
00034
00035
#include "libMRML/include/CAccessor.h"
00036
#include "libMRML/include/CXMLElement.h"
00037
#include "libMRML/include/CAccessorFactory.h"
00038
00039
class CAFPlugin:
public CAccessorFactory{
00040
protected:
00042
void* mDlOpenHandle;
00044 string mName;
00046
CAccessor* (*mMakeAccessor)(
const CXMLElement&);
00048
char* (*mGetName)(
void);
00050
bool mIsSane;
00051
public:
00052
00062
CAccessor*
makeAccessor(
const CXMLElement&)const;
00064
char* getName();
00066 CAFPlugin(string,string,string);
00068 CAFPlugin(CAFPlugin&);
00070 ~CAFPlugin();
00072
bool isSane()const;
00074
void registerFactory(
CAccessorFactoryContainer& outContainer);
00075
00076 };
00077
00078 #endif