On Tue, Jun 14, 2016 at 02:00:14 +0200, Tobias Hunger wrote:
> Implementing new Protocol Versions:
> ==============================
<snip>
> Deprecating old Protocol Versions:
> ============================
<snip>
One idea that came up on a previous project was the following:
namespace protocol {
namespace aspect1 {
namespace v1 {
}
namespace v2 {
}
}
namespace aspect2 {
namespace v1 {
}
}
namespace v1 {
namespace aspect1 = aspect1::v1;
namespace aspect2 = aspect1::v1;
Version version(1, 0);
bool deprecated = true;
}
namespace v2 {
namespace aspect1 = aspect1::v2;
namespace aspect2 = aspect1::v1;
Version version(2, 0);
bool deprecated = false;
}
namespace latest = v2;
}
Then the code can use `protocol::v1::aspect1::` for explicit v1
communication and `protocol::latest::` in any normal code. It does
require C++11 though. There's probably some template metaprogramming
magic that could be done to instantiate communication ends for each
protocol namespace once communication is done.
I have no idea how maintainable in the long-term this is though.
--Ben
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers