00001 //-------------------------------------------------- 00014 //--------------------------------------------------- 00015 00016 #ifndef IMEDGINE_ALGORITHM_CONFIG_H_ 00017 #define IMEDGINE_ALGORITHM_CONFIG_H_ 00018 00019 #include <vector> 00020 #include <string> 00021 #include <map> 00022 #include <boost/shared_ptr.hpp> 00023 #include "../global/global_definitions.h" 00024 #include "algorithm_definition.h" 00025 #include <iostream> 00026 00027 namespace imedgine 00028 { 00029 //-------------------------------------------------- 00049 00050 class AlgorithmConfig 00051 { 00052 00053 public: 00054 //-------------------------------------------------- 00057 00058 typedef boost::shared_ptr<AlgorithmConfig> algorithm_config_pointer_type; 00059 00060 //-------------------------------------------------- 00063 00064 typedef boost::shared_ptr<AlgorithmDefinition> algorithm_definition_pointer_type; 00065 00066 //-------------------------------------------------- 00069 00070 typedef std::map<std::string, algorithm_definition_pointer_type> algorithm_definitions_container_type; 00071 00072 //-------------------------------------------------- 00075 00076 AlgorithmConfig(); 00077 00078 //-------------------------------------------------- 00081 00082 ~AlgorithmConfig(); 00083 00084 //-------------------------------------------------- 00090 00091 bool addAlgorithmDefinition(algorithm_definition_pointer_type definition); 00092 00093 00094 //-------------------------------------------------- 00100 00101 algorithm_definition_pointer_type getAlgorithmDefinition(std::string name) const 00102 throw(); 00103 00104 //-------------------------------------------------- 00109 00110 algorithm_definitions_container_type getAlgorithmDefinitions() const; 00111 00112 //-------------------------------------------------- 00117 00118 algorithm_name_container_type getLoadedAlgorithmNames() const; 00119 00120 //-------------------------------------------------- 00125 00126 std::string getAlgorithmLibraryPath() const; 00127 00128 //-------------------------------------------------- 00133 00134 void setAlgorithmLibraryPath(std::string path); 00135 00136 private: 00137 algorithm_definitions_container_type algorithm_definitions_; 00138 std::string algorithm_library_path_; 00139 }; 00140 } 00141 00142 #endif // IMEDGINE_CONFIG_HANDLER_ 00143