# HG changeset patch # User František Kučera # Date 1607193741 -3600 # Node ID 399380ea975089c8d3d561c849ca5ad7ad01facd # Parent c176766462c5f3a416b4c18d602afbacf8f84f05 simplify types (namespaces) diff -r c176766462c5 -r 399380ea9750 src/YAMLCommand.h --- a/src/YAMLCommand.h Sat Dec 05 19:32:05 2020 +0100 +++ b/src/YAMLCommand.h Sat Dec 05 19:42:21 2020 +0100 @@ -32,6 +32,9 @@ class YAMLCommand { private: + using string_t = relpipe::writer::string_t; + using RelpipeWriterException = relpipe::writer::RelpipeWriterException; + std::wstring_convert> convertor; // YAML strings are in UTF-8 class YAMLEvent { @@ -50,12 +53,12 @@ return event.type; } - const relpipe::writer::string_t getTypeName() const { + const string_t getTypeName() const { return findTypeName(event.type); } /** Just for debugging and error handling */ - static const relpipe::writer::string_t findTypeName(const yaml_event_type_t eventType) { + static const string_t findTypeName(const yaml_event_type_t eventType) { if (eventType == YAML_NO_EVENT) return L"NO"; else if (eventType == YAML_STREAM_START_EVENT) return L"STREAM_START"; else if (eventType == YAML_STREAM_END_EVENT) return L"STREAM_END"; @@ -119,30 +122,30 @@ YAMLParser parser; std::shared_ptr writer; - relpipe::writer::string_t relationName; - std::vector record; + string_t relationName; + std::vector record; std::vector attributesMetadata; - relpipe::writer::string_t y2s(const yaml_char_t* value) { + string_t y2s(const yaml_char_t* value) { return value ? convertor.from_bytes((const char*) value) : L""; } - relpipe::writer::string_t fetchScalarValue(YAMLEvent_p event) { + string_t fetchScalarValue(YAMLEvent_p event) { if (event->getType() == YAML_SCALAR_EVENT) return y2s(event->getEvent()->data.scalar.value); - else throw relpipe::writer::RelpipeWriterException(L"Invalid YAML structure: expected SCALAR but got: " + event->getTypeName()); + else throw RelpipeWriterException(L"Invalid YAML structure: expected SCALAR but got: " + event->getTypeName()); } - void consumeEvent(const yaml_event_type_t expectedEventType, relpipe::writer::string_t expectedScalarValue = L"") { + void consumeEvent(const yaml_event_type_t expectedEventType, string_t expectedScalarValue = L"") { YAMLEvent_p event = YAMLEvent_p(parser.next()); - if (!event) throw relpipe::writer::RelpipeWriterException(L"Invalid YAML structure: missing event: " + YAMLEvent::findTypeName(expectedEventType)); - if (event->getType() != expectedEventType) throw relpipe::writer::RelpipeWriterException(L"Invalid YAML structure: expected event: " + YAMLEvent::findTypeName(expectedEventType) + L", but got: " + event->getTypeName()); - if (expectedEventType == YAML_SCALAR_EVENT && expectedScalarValue.size() && expectedScalarValue != fetchScalarValue(event)) throw relpipe::writer::RelpipeWriterException(L"Invalid YAML structure: expected scalar value: " + expectedScalarValue + L", but got " + fetchScalarValue(event)); + if (!event) throw RelpipeWriterException(L"Invalid YAML structure: missing event: " + YAMLEvent::findTypeName(expectedEventType)); + if (event->getType() != expectedEventType) throw RelpipeWriterException(L"Invalid YAML structure: expected event: " + YAMLEvent::findTypeName(expectedEventType) + L", but got: " + event->getTypeName()); + if (expectedEventType == YAML_SCALAR_EVENT && expectedScalarValue.size() && expectedScalarValue != fetchScalarValue(event)) throw RelpipeWriterException(L"Invalid YAML structure: expected scalar value: " + expectedScalarValue + L", but got " + fetchScalarValue(event)); } - relpipe::writer::string_t consumeScalarEvent() { + string_t consumeScalarEvent() { YAMLEvent_p event = YAMLEvent_p(parser.next()); if (event && event->getType() == YAML_SCALAR_EVENT) return fetchScalarValue(event); - else throw relpipe::writer::RelpipeWriterException(L"Invalid YAML structure: expected SCALAR, but got: " + event->getTypeName()); + else throw RelpipeWriterException(L"Invalid YAML structure: expected SCALAR, but got: " + event->getTypeName()); } bool until(const yaml_event_type_t until, YAMLEvent_p& event) { @@ -154,7 +157,7 @@ YAMLEvent_p event = YAMLEvent_p(parser.next()); if (event->getType() == YAML_MAPPING_START_EVENT) processRelationWithMetadata(); else if (event->getType() == YAML_SEQUENCE_START_EVENT)processRelationWithoutMetadata(); - else throw relpipe::writer::RelpipeWriterException(L"Invalid YAML structure: expected MAPPING or SEQUENCE, but got: " + event->getTypeName()); + else throw RelpipeWriterException(L"Invalid YAML structure: expected MAPPING or SEQUENCE, but got: " + event->getTypeName()); } void processRelationWithMetadata() { @@ -162,9 +165,9 @@ consumeEvent(YAML_SEQUENCE_START_EVENT); for (YAMLEvent_p event; until(YAML_SEQUENCE_END_EVENT, event);) { - if (event->getType() != YAML_MAPPING_START_EVENT) throw relpipe::writer::RelpipeWriterException(L"Invalid YAML structure: expected MAPPING (attribute-metadata), but got: " + event->getTypeName()); - relpipe::writer::string_t name; - relpipe::writer::string_t type = L"string"; + if (event->getType() != YAML_MAPPING_START_EVENT) throw RelpipeWriterException(L"Invalid YAML structure: expected MAPPING (attribute-metadata), but got: " + event->getTypeName()); + string_t name; + string_t type = L"string"; for (YAMLEvent_p event; until(YAML_MAPPING_END_EVENT, event);) { auto key = fetchScalarValue(event); auto value = consumeScalarEvent(); @@ -185,7 +188,7 @@ } else if (event->getType() == YAML_MAPPING_END_EVENT) { // empty relation, no records } else { - relpipe::writer::RelpipeWriterException(L"Invalid YAML structure: expected 'record' or MAPPING_END, but got: " + event->getTypeName()); + RelpipeWriterException(L"Invalid YAML structure: expected 'record' or MAPPING_END, but got: " + event->getTypeName()); } } @@ -208,7 +211,7 @@ void processRecords() { for (YAMLEvent_p event; until(YAML_SEQUENCE_END_EVENT, event);) { - if (event->getType() != YAML_MAPPING_START_EVENT) throw relpipe::writer::RelpipeWriterException(L"Invalid YAML structure: expected MAPPING (record), but got: " + event->getTypeName()); + if (event->getType() != YAML_MAPPING_START_EVENT) throw RelpipeWriterException(L"Invalid YAML structure: expected MAPPING (record), but got: " + event->getTypeName()); record.clear(); record.resize(attributesMetadata.size()); for (YAMLEvent_p event; until(YAML_MAPPING_END_EVENT, event);) {