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