00001 #ifndef _TypedInControlRegistry_hxx_ 00002 #define _TypedInControlRegistry_hxx_ 00003 00004 #include <string> 00005 #include <vector> 00006 #include <CLAM/BaseTypedInControl.hxx> 00007 00008 namespace CLAM{ 00009 00010 class TypedInControlRegistry { 00011 std::vector<BaseTypedInControl*> mTypedInControls; 00012 00013 public: 00014 typedef std::vector<BaseTypedInControl*>::iterator Iterator; 00015 typedef std::vector<BaseTypedInControl*>::const_iterator ConstIterator; 00016 00017 BaseTypedInControl& Get( const std::string & name ) const; 00018 BaseTypedInControl& GetByNumber(int index) const; 00019 bool Has(const std::string& name) const; 00020 00021 int Size() const; 00022 void Clear(){ mTypedInControls.clear(); } 00023 Iterator Begin(); 00024 Iterator End(); 00025 ConstIterator Begin() const; 00026 ConstIterator End() const; 00027 void ProcessingInterface_Register(BaseTypedInControl *); 00028 void ProcessingInterface_Unregister(BaseTypedInControl *); 00029 00030 private: 00031 std::string AvailableNames() const; 00032 }; 00033 } // namespace CLAM 00034 #endif