diff -r 543f1613c2da -r e8de089f95dd src/Factory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Factory.cpp Sat Aug 25 18:16:53 2018 +0200 @@ -0,0 +1,31 @@ +#include + +#include "../include/relpipe/reader/TypeId.h" +#include "../include/relpipe/reader/RelationalReader.h" +#include "../include/relpipe/reader/Factory.h" +#include "StreamRelationalReader.h" + +namespace relpipe { +namespace reader { + +RelationalReader* Factory::create(std::istream& input) { + return new StreamRelationalReader(input); +} + +/** + * Some basic constants defined in lib-protocol are re-exported in public headers of lib-reader and lib-reader, + * 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