include/DataTypeWriterBase.h
branchv_0
changeset 1 c80d55cdb42d
equal deleted inserted replaced
0:5cb459cb2e58 1:c80d55cdb42d
       
     1 #pragma once
       
     2 
       
     3 #include <string>
       
     4 #include "typedefs.h"
       
     5 
       
     6 namespace relpipe {
       
     7 namespace writer {
       
     8 
       
     9 /**
       
    10  * This class contains common features that are independent from particular data type (generic/template type)
       
    11  */
       
    12 class DataTypeWriterBase {
       
    13 private:
       
    14 	const integer_t typeId;
       
    15 	const string_t typeCode;
       
    16 public:
       
    17 
       
    18 	DataTypeWriterBase(const integer_t typeId, const string_t typeCode) :
       
    19 	typeId(typeId), typeCode(typeCode) {
       
    20 	}
       
    21 
       
    22 	virtual ~DataTypeWriterBase() {
       
    23 	};
       
    24 
       
    25 	/**
       
    26 	 * @param input input stream, should be at position where the value is to be read; the stream will not be closed afred reading
       
    27 	 * @return read value in form of the string representation of given data type.
       
    28 	 * E.g. integer 123 is returned as a character string "123",
       
    29 	 * boolean true is returned as a character string "true".
       
    30 	 * See Relational pipes format specification for details.
       
    31 	 */
       
    32 	virtual string_t readString(std::istream &input) = 0;
       
    33 
       
    34 	/**
       
    35 	 * @param output output stream, should be at position where the value is to be written; the stream will not be closed not flushed after writing
       
    36 	 * @param stringValue write value as given data type (e.g. integer or boolean); stringValue parameter contains given value in string representation of given data type
       
    37 	 * E.g. integer 123 is passed as a character string "123"
       
    38 	 * boolean true is passed as a character string "true".
       
    39 	 * See Relational pipes format specification for details.
       
    40 	 */
       
    41 	virtual void writeString(std::ostream& output, const string_t &stringValue) = 0;
       
    42 
       
    43 	/**
       
    44 	 * @param dataType data type code as defined in DDP L0
       
    45 	 * @return whether this class supports conversions of this type
       
    46 	 */
       
    47 	virtual bool supports(const integer_t &dataType);
       
    48 
       
    49 	/**
       
    50 	 * @param dataType data type name as defined in DDP L0
       
    51 	 * @return whether this class supports conversions of this type
       
    52 	 */
       
    53 	virtual bool supports(const string_t &dataType);
       
    54 
       
    55 	integer_t getTypeId();
       
    56 
       
    57 	string_t getTypeCode();
       
    58 };
       
    59 
       
    60 }
       
    61 }