#ifndef macros_CCA_H #define macros_CCA_H // provide a port #define PROVIDE(p,name,type) \ frameworkServices->addProvidesPort(p,frameworkServices->createPortInfo(name,type,0)) // remove a port #define UNPROVIDE(name) \ frameworkServices->removeProvidesPort(name) // define a port to be used. #define REGISTER(name,classname,props)\ frameworkServices->registerUsesPort(frameworkServices->createPortInfo(name, classname, props)) // release/undefine a port that used to be used and set our pointer to it, // if any, to 0. #define UNREGISTER(p,name) \ if ((p) != 0) { \ frameworkServices->releasePort(name); \ p = 0; \ } \ frameworkServices->unregisterUsesPort(name) // release a port if not null #define RELEASE(p,name) \ if (p != 0) { \ frameworkServices->releasePort(name); \ } \ p = 0 // get a port #define GETPORT(p, ptr, name, ctype) \ p = frameworkServices->getPort(name); \ if (p == 0) { return -1; } \ (ptr) = dynamic_cast< ctype * >(p); \ if ((ptr) == 0) { cout << "\n!! Connected to something other than a(n) " \ << #ctype << " port!!" << endl; return -1 ; } \ (p) = 0 #endif // macros_CCA_H