Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members  

cca.h

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; // proposed extension
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 // end namespace gov.cca
00235 } CCA_NAMESPACE_ENDSEMICOLON // end namespace gov
00236 #endif //__CCA_H_ 

Generated on Tue Aug 20 14:30:31 2002 for CCA Specification/Proposals by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002