00001 //-------------------------------------------------- 00008 //--------------------------------------------------- 00009 00010 #ifndef IMEDGINE_ALGORITHM_DEFINITION_H_ 00011 #define IMEDGINE_ALGORITHM_DEFINITION_H_ 00012 00013 #include <boost/shared_ptr.hpp> 00014 #include <string> 00015 #include <vector> 00016 #include <set> 00017 #include "dataset_definition.h" 00018 00019 namespace imedgine 00020 { 00021 //--------------------------------------------------- 00073 //--------------------------------------------------- 00074 00075 class AlgorithmDefinition 00076 { 00077 public: 00078 00079 //--------------------------------------------------- 00082 00083 typedef boost::shared_ptr<DatasetDefinition> dataset_definition_pointer_type; 00084 00085 //--------------------------------------------------- 00088 00089 typedef std::map<std::string, dataset_definition_pointer_type> dataset_definition_collection_type; 00090 00091 //--------------------------------------------------- 00094 00095 typedef std::set<dataset_type> accepted_datasets_type; 00096 00097 //--------------------------------------------------- 00100 00101 typedef std::map<std::string, accepted_datasets_type> accepted_datasets_collection_type; 00102 00103 //--------------------------------------------------- 00106 00107 typedef std::vector<accepted_datasets_collection_type> combinations_definition_list_type; 00108 00109 //--------------------------------------------------- 00113 00114 typedef std::map<std::string, dataset_type> already_set_datasets_type; 00115 00116 //--------------------------------------------------- 00119 00120 AlgorithmDefinition(); 00121 00122 //--------------------------------------------------- 00125 00126 ~AlgorithmDefinition(); 00127 00128 //--------------------------------------------------- 00132 00133 void setName(std::string name); 00134 00135 //--------------------------------------------------- 00139 00140 void setClassification(std::string classification); 00141 00142 //--------------------------------------------------- 00146 00147 void setLibraryName(std::string library_name); 00148 00149 //--------------------------------------------------- 00153 00154 00155 void addDatasetCombination(accepted_datasets_collection_type accepted_datasets); 00156 00157 //--------------------------------------------------- 00161 00162 void setDatasetCombinations(combinations_definition_list_type combinations); 00163 00164 //--------------------------------------------------- 00168 00169 std::string getName(); 00170 00171 //--------------------------------------------------- 00175 00176 std::string getClassification(); 00177 00178 //--------------------------------------------------- 00182 00183 std::string getLibraryName(); 00184 00185 //--------------------------------------------------- 00189 00190 combinations_definition_list_type getDatasetCombinations(); 00191 00192 //--------------------------------------------------- 00195 00196 void addInputDataset(dataset_definition_pointer_type dataset); 00197 00198 //--------------------------------------------------- 00201 00202 void addOutputDataset(dataset_definition_pointer_type dataset); 00203 00204 //--------------------------------------------------- 00207 00208 dataset_definition_pointer_type getInputDataset(std::string name); 00209 00210 //--------------------------------------------------- 00213 00214 dataset_definition_collection_type getInputDatasets(); 00215 00216 //--------------------------------------------------- 00219 00220 dataset_definition_collection_type getOutputDatasets(); 00221 00222 //--------------------------------------------------- 00225 00226 accepted_datasets_type getPossibleCombinations(std::string name, already_set_datasets_type already_set_datasets); 00227 00228 //--------------------------------------------------- 00231 00232 void setOutputDatasetIds(config_dataset_id_to_output_map_type &dataset_id_map); 00233 00234 //--------------------------------------------------- 00237 00238 std::string toString(); 00239 private: 00240 std::string name_; 00241 std::string classification_; 00242 std::string library_name_; 00243 00244 dataset_definition_collection_type input_datasets_; 00245 dataset_definition_collection_type output_datasets_; 00246 combinations_definition_list_type dataset_combinations_; 00247 }; 00248 } 00249 00250 #endif // IMEDGINE_ALGORITHM_DEFINITION_ 00251