Namespaces | |
namespace | cca |
namespace | support |
The namespace for it is neo::cca to reduce the repetitive stress injuries on cca code writers.
The goal here is two-part: 1. Minimize the intrusion of our chosen memory technique (using boost shared_ptr.hpp) on science component writers. That is, the most common user objects (Component, Port, Services) are simply virtual interfaces and have strict life-cycle rules so that reference counting is not needed and not inflicted on the component-writer's code.
2. Make a standards-based ( STL+boost ) memory-safe interface for folks who want a simple "interfaces only" C++ binding for CCA components instead of using a heavyweight, multilanguage middleware. There are many exotic little objects in framework-related service Ports that must be reference counted.
We have chosen the boost::shared_ptr as the least annoying solution in the open-standards c++ world. Component writers accessing these (mostly little used) framework services may encounter shared_ptr. They should consult doc/README-memory.txt for tips on sensible usage.
Largely the names used are the same as in the classic version to reduce editing needed when converting to neo from classic. In a most cases, return codes nobody was checking anyway have been converted to exception throwing per the SIDL spec. A concrete exception class implementing the std::exception is thrown. A component may not support both classic and neo specifications in the same compilation, due to c++ overloading rules. It's possible, with appropriate ifdef, to build either kind of component from the same source files, but why bother?