00001 #ifndef __CCA_H__
00002 #define __CCA_H__
00003
00004
00010 #define CONST
00011
00015 #define ENDSEMI ; // use of this macro is deprecated
00016 #define CCA_NAMESPACE_ENDSEMICOLON ;
00017
00023 #define CFREE
00024 #define CDELETE
00025
00026
00027 namespace gov {
00041 namespace cca {
00042
00046 class Version {
00047 public:
00049 static CONST char *name();
00051 static CONST char *id();
00057 static CONST int Major();
00062 static CONST int Minor();
00065 static CONST int Patch();
00067 };
00068
00069 #if 0 // not needed, as doesn't make generic containers any easier
00070 #define CCA_OBJECTCOUNTABLE_DEFINED
00071
00075 class ObjectCountable {
00076 public:
00078 virtual ~ObjectCountable (){}
00080 virtual void addReference() = 0;
00081 virtual void deleteReference() = 0;
00082 };
00083 #endif // objectcountable bypass
00084
00087 class Port {
00088 public:
00090 virtual ~Port (){}
00091 };
00092
00094 class PortInfo {
00095 public:
00097 virtual ~PortInfo(){}
00098
00101 virtual CONST char* getType() CONST = 0;
00102
00106 virtual CONST char* getName() CONST = 0;
00107
00110 virtual CONST char* getProperty(char* name) = 0;
00111
00112 };
00113
00115 class ComponentID {
00116 public:
00118 virtual ~ComponentID() {}
00119
00125 virtual CFREE char* toString()=0;
00126
00127
00128 };
00129
00132 class Services {
00133 public:
00135 virtual ~Services (){}
00136
00147 virtual PortInfo * createPortInfo(CONST char *name, CONST char *type, CONST char** properties) = 0;
00148
00155 virtual Port *getPort(CONST char *name) = 0;
00156
00161 virtual void releasePort(CONST char *name) = 0;
00162 #ifdef ROB
00163
00173 virtual Port *getMultipleUsesPort(CONST char *name) = 0;
00174
00178 virtual void releaseMultipleUsesPort(CONST char *name) = 0;
00179 #endif //ROB
00180
00187 virtual int registerUsesPort(PortInfo *name_and_type) = 0;
00188
00195 virtual int unregisterUsesPort(CONST char *name) = 0;
00196
00203 virtual int addProvidesPort(Port *inPort, PortInfo *name) = 0;
00204
00207 virtual void removeProvidesPort(CONST char *name) = 0;
00208
00211 virtual CDELETE ComponentID* getComponentID() = 0;
00212
00215 virtual CFREE PortInfo** getProvidedPorts(int& length) = 0;
00216
00219 virtual CFREE PortInfo** getRegisteredPorts(int& length)= 0;
00220
00221 };
00222
00224 class Component {
00225 public:
00227 virtual ~Component(){}
00228
00231 virtual void setServices(Services *cc)=0;
00232 };
00233
00234 } CCA_NAMESPACE_ENDSEMICOLON
00235 } CCA_NAMESPACE_ENDSEMICOLON
00236 #endif //__CCA_H_