separate graphml format & format string

This commit is contained in:
Alexey Fedoseev
2024-05-10 22:28:34 +03:00
parent 8444ed38e0
commit 630ac70c2e
2 changed files with 27 additions and 7 deletions

View File

@@ -1256,7 +1256,8 @@ std::ostream& StateMachine::dump(std::ostream& os) const
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
Document::Document(): Document::Document():
ElementCollection(NULL, elementRoot, "", ""), ElementCollection(NULL, elementRoot, "", ""),
format(DEFAULT_GRAPHML_FORMAT), format_str(DEFAULT_GRAPHML_FORMAT),
format(formatCyberiada10),
metainfo_element(NULL) metainfo_element(NULL)
{ {
reset(); reset();
@@ -1268,7 +1269,8 @@ void Document::reset()
metainfo.standard_version = STANDARD_VERSION; metainfo.standard_version = STANDARD_VERSION;
metainfo.transition_order_flag = false; metainfo.transition_order_flag = false;
metainfo.event_propagation_flag = false; metainfo.event_propagation_flag = false;
format = DEFAULT_GRAPHML_FORMAT; format = formatCyberiada10;
format_str = DEFAULT_GRAPHML_FORMAT;
metainfo_element = NULL; metainfo_element = NULL;
clear(); clear();
} }
@@ -1949,7 +1951,12 @@ void Document::load(const String& path, DocumentFormat f)
try { try {
CYB_ASSERT(doc.format); 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);
CYB_ASSERT(doc.meta_info->standard_version); 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); 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<const StateMachine*> Document::get_state_machines() const std::list<const StateMachine*> Document::get_state_machines() const
{ {
std::list<const StateMachine*> result; std::list<const StateMachine*> result;
@@ -2251,7 +2268,7 @@ const StateMachine* Document::get_parent_sm(const Element* element) const
std::ostream& Document::dump(std::ostream& os) const std::ostream& Document::dump(std::ostream& os) const
{ {
Element::dump(os); Element::dump(os);
os << ", format: '" << format << "', meta: {"; os << ", format: '" << get_format_str() << "', meta: {";
std::list<String> params; std::list<String> params;
if (!metainfo.standard_version.empty()) { if (!metainfo.standard_version.empty()) {
params.push_back("standard version: '" + metainfo.standard_version + "'"); params.push_back("standard version: '" + metainfo.standard_version + "'");

View File

@@ -630,6 +630,8 @@ namespace Cyberiada {
virtual void set_name(const Name& name); virtual void set_name(const Name& name);
const DocumentMetainformation& meta() const { return metainfo; } const DocumentMetainformation& meta() const { return metainfo; }
DocumentMetainformation& meta() { return metainfo; } DocumentMetainformation& meta() { return metainfo; }
DocumentFormat get_format() const { return format; }
String get_format_str() const;
std::list<const StateMachine*> get_state_machines() const; std::list<const StateMachine*> get_state_machines() const;
std::list<StateMachine*> get_state_machines(); std::list<StateMachine*> get_state_machines();
@@ -658,7 +660,8 @@ namespace Cyberiada {
void check_comment_subject_element(const Element* element) const; void check_comment_subject_element(const Element* element) const;
void check_transition_action(const Action& action) const; void check_transition_action(const Action& action) const;
String format; String format_str;
DocumentFormat format;
DocumentMetainformation metainfo; DocumentMetainformation metainfo;
Comment* metainfo_element; Comment* metainfo_element;
}; };