diff -r 2d7109286408 -r 543f1613c2da src/DataTypeReaderBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/DataTypeReaderBase.h Sat Aug 25 17:39:27 2018 +0200 @@ -0,0 +1,52 @@ +#pragma once + +#include +#include "../include/relpipe/reader/typedefs.h" + +namespace relpipe { +namespace reader { + +/** + * This class contains common features that are independent from particular data type (generic/template type) + */ +class DataTypeReaderBase { +private: + const integer_t typeId; + const string_t typeCode; +public: + + DataTypeReaderBase(const integer_t typeId, const string_t typeCode) : + typeId(typeId), typeCode(typeCode) { + } + + virtual ~DataTypeReaderBase() { + }; + + /** + * @param input input stream, should be at position where the value is to be read; the stream will not be closed afred reading + * @return read value in form of the string representation of given data type. + * E.g. integer 123 is returned as a character string "123", + * boolean true is returned as a character string "true". + * See Relational pipes format specification for details. + */ + virtual string_t readString(std::istream &input) = 0; + + /** + * @param dataType data type code as defined in DDP L0 + * @return whether this class supports conversions of this type + */ + virtual bool supports(const integer_t &dataType); + + /** + * @param dataType data type name as defined in DDP L0 + * @return whether this class supports conversions of this type + */ + virtual bool supports(const string_t &dataType); + + integer_t getTypeId(); + + string_t getTypeCode(); +}; + +} +} \ No newline at end of file