Work towards providing a native C++ interface to swig client
The goal of this work is to refactor the code such that a C++ user would be comfortable using the C++ library that underlies the SWIG wrappings.
The main idea is to provide an interface that presents vector instead of vector<shared_ptr >. SWIG needs the extra layer of indirection in order to manage lifetimes properly, a C++ user does not, it is just another layer of access that needs to be checked.
This merge request lays the ground work for this by splitting the C++ interface and the SWIG interface. It DOES NOT make the change to vector.
Changes in this request:
-
Convert the availability interface to have an internal (to the C++ code) representation that is vector but still providing a view of vector<shared_ptr > to the SWIG layer. This reduces 1 level of indirection in the fetch planning code (simplifying the code a small bit) and brings it in line with how we handle buffers/channels/...
-
This update was a refactoring only
-
Add a NDS_swig namespace with a NDS_swig::connection proxy object. This object will be used to provide the SWIG compatible interface, proxying all requests to a NDS::connection object. It frees up the NDS::connection object to be change to be more of a C++ style object.
-
This update was a refactoring only change, no existing tests needed modifications to pass.
This will introduce some overhead into the system with extra copies.
The next merge will remove that overhead as C++11 is enabled and operations turn to moves.