src/DataTypeWriterBase.h
branchv_0
changeset 9 0a40752e401d
parent 5 7fe870c3362f
child 15 8fd6c4d44071
equal deleted inserted replaced
8:03750aff8619 9:0a40752e401d
       
     1 #pragma once
       
     2 
       
     3 #include <string>
       
     4 #include "../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 output output stream, should be at position where the value is to be written; the stream will not be closed not flushed after writing
       
    27 	 * @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
       
    28 	 * E.g. integer 123 is passed as a character string "123"
       
    29 	 * boolean true is passed as a character string "true".
       
    30 	 * See Relational pipes format specification for details.
       
    31 	 */
       
    32 	virtual void writeString(std::ostream& output, const string_t &stringValue) = 0;
       
    33 
       
    34 	/**
       
    35 	 * @param dataType data type code as defined in DDP L0
       
    36 	 * @return whether this class supports conversions of this type
       
    37 	 */
       
    38 	virtual bool supports(const integer_t &dataType) {
       
    39 		return dataType == typeId;
       
    40 	}
       
    41 
       
    42 	/**
       
    43 	 * @param dataType data type name as defined in DDP L0
       
    44 	 * @return whether this class supports conversions of this type
       
    45 	 */
       
    46 	virtual bool supports(const string_t &dataType) {
       
    47 		return dataType == typeCode;
       
    48 	}
       
    49 
       
    50 	integer_t getTypeId() {
       
    51 		return typeId;
       
    52 	}
       
    53 
       
    54 	string_t getTypeCode() {
       
    55 		return typeCode;
       
    56 	}
       
    57 };
       
    58 
       
    59 }
       
    60 }