00001 #ifndef _BaseTypedOutControl_ 00002 #define _BaseTypedOutControl_ 00003 00004 #include <string> 00005 #include <list> 00006 #include <typeinfo> 00007 #include <CLAM/Assert.hxx> 00008 #include <CLAM/BaseTypedInControl.hxx> 00009 00010 00011 namespace CLAM { 00012 class Processing; 00013 00018 class BaseTypedOutControl{ 00019 std::string mName; 00020 Processing * mProcessing; 00021 public: 00022 BaseTypedOutControl(const std::string &name, Processing * proc = 0); 00023 virtual ~BaseTypedOutControl(); 00027 virtual void AddLink(BaseTypedInControl& in) = 0; 00028 virtual void RemoveLink(BaseTypedInControl& in) = 0; 00029 virtual bool IsLinkable(const BaseTypedInControl& in) = 0; 00030 virtual bool IsConnected() = 0; 00031 virtual bool IsConnectedTo(BaseTypedInControl& in) = 0; 00032 00033 const std::string& GetName() const { return mName; } 00034 Processing * GetProcessing() const { return mProcessing; } 00035 virtual std::list<BaseTypedInControl*>::iterator BeginInControlsConnected() = 0; 00036 virtual std::list<BaseTypedInControl*>::iterator EndInControlsConnected() = 0; 00037 }; 00038 } // END NAMESPACE CLAM 00039 #endif // _BaseTypedOutControl_