Skip to content

Work towards providing a native C++ interface to swig client

Jonathan Hanks requested to merge jonathan-hanks/nds2-client:c++-cleanup into master

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.

Edited by Jonathan Hanks

Merge request reports