equal
deleted
inserted
replaced
27 namespace tr { |
27 namespace tr { |
28 namespace infertypes { |
28 namespace infertypes { |
29 |
29 |
30 class DataMode : public Mode { |
30 class DataMode : public Mode { |
31 private: |
31 private: |
|
32 static const std::wregex BOOLEAN_PATTERN; |
|
33 static const std::wregex INTEGER_PATTERN; |
32 relpipe::common::type::StringX name; |
34 relpipe::common::type::StringX name; |
33 std::vector<relpipe::reader::handlers::AttributeMetadata> attributes; |
35 std::vector<relpipe::reader::handlers::AttributeMetadata> attributes; |
34 std::vector<relpipe::common::type::StringX> values; |
36 std::vector<relpipe::common::type::StringX> values; |
35 |
37 |
36 bool matches(int attributeIndex, const std::wregex& pattern) { |
38 bool matches(int attributeIndex, const std::wregex& pattern) { |
55 virtual ~DataMode() { |
57 virtual ~DataMode() { |
56 std::vector<bool> booleans(attributes.size(), true); |
58 std::vector<bool> booleans(attributes.size(), true); |
57 std::vector<bool> integers(attributes.size(), true); |
59 std::vector<bool> integers(attributes.size(), true); |
58 |
60 |
59 for (int i = 0, limit = attributes.size(); i < limit; i++) { |
61 for (int i = 0, limit = attributes.size(); i < limit; i++) { |
60 booleans[i] = matches(i, std::wregex(L"true|false")); |
62 booleans[i] = matches(i, BOOLEAN_PATTERN); |
61 integers[i] = matches(i, std::wregex(L"[0-9]+")); |
63 integers[i] = matches(i, INTEGER_PATTERN); |
62 } |
64 } |
63 |
65 |
64 vector<writer::AttributeMetadata> writerMetadata; |
66 vector<writer::AttributeMetadata> writerMetadata; |
65 for (int i = 0, limit = attributes.size(); i < limit; i++) { |
67 for (int i = 0, limit = attributes.size(); i < limit; i++) { |
66 relpipe::reader::handlers::AttributeMetadata& am = attributes[i]; |
68 relpipe::reader::handlers::AttributeMetadata& am = attributes[i]; |
76 relationalWriter->startRelation(name, writerMetadata, true); |
78 relationalWriter->startRelation(name, writerMetadata, true); |
77 for (relpipe::common::type::StringX& value : values) relationalWriter->writeAttribute(value); |
79 for (relpipe::common::type::StringX& value : values) relationalWriter->writeAttribute(value); |
78 } |
80 } |
79 }; |
81 }; |
80 |
82 |
|
83 const std::wregex DataMode::BOOLEAN_PATTERN = std::wregex(L"true|false"); |
|
84 const std::wregex DataMode::INTEGER_PATTERN = std::wregex(L"[0-9]+"); |
81 |
85 |
82 } |
86 } |
83 } |
87 } |
84 } |
88 } |