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]); |