From 630ac70c2efd683d17b76f6f17efe777f4b7ed76 Mon Sep 17 00:00:00 2001 From: Alexey Fedoseev Date: Fri, 10 May 2024 22:28:34 +0300 Subject: [PATCH] separate graphml format & format string --- cyberiadamlpp.cpp | 25 +++++++++++++++++++++---- cyberiadamlpp.h | 9 ++++++--- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/cyberiadamlpp.cpp b/cyberiadamlpp.cpp index aa59378..0c5309d 100644 --- a/cyberiadamlpp.cpp +++ b/cyberiadamlpp.cpp @@ -1256,7 +1256,8 @@ std::ostream& StateMachine::dump(std::ostream& os) const // ----------------------------------------------------------------------------- Document::Document(): ElementCollection(NULL, elementRoot, "", ""), - format(DEFAULT_GRAPHML_FORMAT), + format_str(DEFAULT_GRAPHML_FORMAT), + format(formatCyberiada10), metainfo_element(NULL) { reset(); @@ -1268,7 +1269,8 @@ void Document::reset() metainfo.standard_version = STANDARD_VERSION; metainfo.transition_order_flag = false; metainfo.event_propagation_flag = false; - format = DEFAULT_GRAPHML_FORMAT; + format = formatCyberiada10; + format_str = DEFAULT_GRAPHML_FORMAT; metainfo_element = NULL; clear(); } @@ -1949,7 +1951,12 @@ void Document::load(const String& path, DocumentFormat f) try { CYB_ASSERT(doc.format); - format = doc.format; + format_str = doc.format; + if (format_str == DEFAULT_GRAPHML_FORMAT) { + format = formatCyberiada10; + } else { + format = formatLegacyYED; + } CYB_ASSERT(doc.meta_info); CYB_ASSERT(doc.meta_info->standard_version); @@ -2211,6 +2218,16 @@ void Document::save(const String& path, DocumentFormat f) const cyberiada_cleanup_sm_document(&doc); } +String Document::get_format_str() const +{ + if (format == formatCyberiada10) { + return DEFAULT_GRAPHML_FORMAT; + } else { + CYB_ASSERT(format == formatLegacyYED); + return format_str; + } +} + std::list Document::get_state_machines() const { std::list result; @@ -2251,7 +2268,7 @@ const StateMachine* Document::get_parent_sm(const Element* element) const std::ostream& Document::dump(std::ostream& os) const { Element::dump(os); - os << ", format: '" << format << "', meta: {"; + os << ", format: '" << get_format_str() << "', meta: {"; std::list params; if (!metainfo.standard_version.empty()) { params.push_back("standard version: '" + metainfo.standard_version + "'"); diff --git a/cyberiadamlpp.h b/cyberiadamlpp.h index 778b1fd..559fc4e 100644 --- a/cyberiadamlpp.h +++ b/cyberiadamlpp.h @@ -630,7 +630,9 @@ namespace Cyberiada { virtual void set_name(const Name& name); const DocumentMetainformation& meta() const { return metainfo; } DocumentMetainformation& meta() { return metainfo; } - + DocumentFormat get_format() const { return format; } + String get_format_str() const; + std::list get_state_machines() const; std::list get_state_machines(); const StateMachine* get_parent_sm(const Element* element) const; @@ -657,8 +659,9 @@ namespace Cyberiada { void check_transition_target(const Element* element) const; void check_comment_subject_element(const Element* element) const; void check_transition_action(const Action& action) const; - - String format; + + String format_str; + DocumentFormat format; DocumentMetainformation metainfo; Comment* metainfo_element; };