diff -r bef6648e79b1 -r 118b68d73420 src/Factory.cpp --- a/src/Factory.cpp Mon Aug 13 20:30:55 2018 +0200 +++ b/src/Factory.cpp Sun Aug 19 20:36:33 2018 +0200 @@ -1,3 +1,5 @@ +#include + #include "../include/relpipe/writer/RelationalWriter.h" #include "../include/relpipe/writer/Factory.h" #include "StreamRelationalWriter.h" @@ -9,5 +11,20 @@ return new StreamRelationalWriter(output); } +/** + * Some basic constants defined in lib-protocol are re-exported in public headers of lib-reader and lib-writer, + * so we should check (during compile-time) that they match. + */ +#define PROTOCOL_VIOLATION_TYPE_ID_ERROR "type id does not match with protocol" +static_assert((int) TypeId::BOOLEAN == relpipe::protocol::DATA_TYPE_ID_BOOLEAN, PROTOCOL_VIOLATION_TYPE_ID_ERROR); +static_assert((int) TypeId::STRING == relpipe::protocol::DATA_TYPE_ID_STRING, PROTOCOL_VIOLATION_TYPE_ID_ERROR); +static_assert((int) TypeId::INTEGER == relpipe::protocol::DATA_TYPE_ID_INTEGER, PROTOCOL_VIOLATION_TYPE_ID_ERROR); + +#define PROTOCOL_VIOLATION_TYPE_DEF_ERROR "type definition does not match with protocol" +static_assert(std::is_same::value, PROTOCOL_VIOLATION_TYPE_DEF_ERROR); +static_assert(std::is_same::value, PROTOCOL_VIOLATION_TYPE_DEF_ERROR); +static_assert(std::is_same::value, PROTOCOL_VIOLATION_TYPE_DEF_ERROR); +static_assert(std::is_same::value, PROTOCOL_VIOLATION_TYPE_DEF_ERROR); + } } \ No newline at end of file