src/StreamRelationalWriter.h
branchv_0
changeset 17 f2cccaa9dd38
parent 16 3613617d3076
child 20 bef6648e79b1
equal deleted inserted replaced
16:3613617d3076 17:f2cccaa9dd38
    90 			columnTypes[c] = typeId;
    90 			columnTypes[c] = typeId;
    91 		}
    91 		}
    92 
    92 
    93 	}
    93 	}
    94 
    94 
    95 	void writeRecord(std::vector<string_t> attributes) override {
    95 	void writeAttribute(const string_t& value) override {
    96 		// FIXME: check vector size
    96 		if (currentColumn == 0) integerWriter.writeValue(output, DATA_PART_ROW);
    97 		// FIXME: check currentColumn == 0
    97 		writeString(value, columnTypes[currentColumn]);
    98 		for (size_t c = 0; c < columnCount; c++) {
    98 		if (++currentColumn == columnCount) currentColumn = 0;
    99 			// TODO: do not support multiple rows in a single method call
       
   100 			if (c % columnCount == 0) {
       
   101 				integerWriter.writeValue(output, DATA_PART_ROW);
       
   102 			}
       
   103 
       
   104 			wstring stringValue = attributes[c];
       
   105 			TypeId typeId = columnTypes[c % columnCount];
       
   106 			writeString(stringValue, typeId);
       
   107 		}
       
   108 	}
    99 	}
   109 
   100 
   110 	void writeAttribute(const void* value, const std::type_info& type) override {
   101 	void writeAttribute(const void* value, const std::type_info& type) override {
   111 		if (currentColumn == 0) integerWriter.writeValue(output, DATA_PART_ROW);
   102 		if (currentColumn == 0) integerWriter.writeValue(output, DATA_PART_ROW);
   112 		writeRaw(value, type, columnTypes[currentColumn]);
   103 		writeRaw(value, type, columnTypes[currentColumn]);