src/DataTypeReader.h
branchv_0
changeset 18 e11f1ad20826
parent 15 09ca53671b28
child 29 755978b0935c
equal deleted inserted replaced
17:ec750c536705 18:e11f1ad20826
     1 #pragma once
     1 #pragma once
       
     2 
       
     3 #include <sstream>
       
     4 #include <functional>
     2 
     5 
     3 #include "DataTypeReaderBase.h"
     6 #include "DataTypeReaderBase.h"
     4 
     7 
     5 namespace relpipe {
     8 namespace relpipe {
     6 namespace reader {
     9 namespace reader {
    18 
    21 
    19 	virtual string_t readString(std::istream &input) {
    22 	virtual string_t readString(std::istream &input) {
    20 		return toString(readValue(input));
    23 		return toString(readValue(input));
    21 	}
    24 	}
    22 
    25 
       
    26 	virtual void read(std::istream &input, std::function<void(const void *, const std::type_info&) > handler) override {
       
    27 		T value = readValue(input);
       
    28 		handler(&value, typeid (T));
       
    29 	}
       
    30 
       
    31 	virtual void read(std::istream &input, std::function<void(const string_t&, const void *, const std::type_info&) > handler) override {
       
    32 		T value = readValue(input);
       
    33 		handler(toString(value), &value, typeid (T));
       
    34 	}
       
    35 
    23 	virtual string_t toString(const T& value) = 0;
    36 	virtual string_t toString(const T& value) = 0;
    24 
    37 
    25 };
    38 };
    26 
    39 
    27 }
    40 }