00001 // Emacs -*- C++ -*- 00002 #ifndef ANAPHE_SYMBOL_MANAGER 00003 #define ANAPHE_SYMBOL_MANAGER 1 00004 00005 #include <string> 00006 #include <set> 00007 #include <map> 00008 00009 namespace Anaphe { 00010 namespace AIDA_Tuple_native { 00011 class IEvaluatorExpressionBaseFactory; 00012 class IFilterExpressionBaseFactory; 00013 00014 class SymbolManager { 00015 public: 00017 SymbolManager(); 00019 ~SymbolManager(); 00021 bool setIncludePaths( const std::set<std::string>& includes ); 00023 const std::set<std::string>& includePaths() const; 00025 IEvaluatorExpressionBaseFactory* makeAndLoadEvaluator( const std::string& fileName, 00026 const std::string& symbolName ); 00028 IFilterExpressionBaseFactory* makeAndLoadFilter( const std::string& fileName, 00029 const std::string& symbolName ); 00031 bool destroyAndUnload( IEvaluatorExpressionBaseFactory* factory ); 00033 bool destroyAndUnload( IFilterExpressionBaseFactory* factory ); 00034 00035 private: 00037 std::set< std::string > m_includePaths; 00039 std::map< IEvaluatorExpressionBaseFactory*, void*> m_evaluatorHandles; 00040 std::map< IFilterExpressionBaseFactory*, void*> m_filterHandles; 00041 }; 00042 00043 } 00044 } 00045 00046 #endif /* ifndef ANAPHE_SYMBOL_GENERATOR */