diff --git a/idl/IPrintable_DDefineSsm.json5 b/idl/IPrintable_DDefineSsm.json5 index 28463e92..fbac5a89 100644 --- a/idl/IPrintable_DDefineSsm.json5 +++ b/idl/IPrintable_DDefineSsm.json5 @@ -1,8 +1,8 @@ { mode: "implementation", - output_cpp_dir: "src/reader2", + output_cpp_dir: "src/reader2/facet", output_hpp_dir: "include/xo/reader2", - output_impl_subdir: "ssm", + output_impl_subdir: "define", includes: [ "", "" ], local_types: [], diff --git a/idl/ISyntaxStateMachine_DDefineSsm.json5 b/idl/ISyntaxStateMachine_DDefineSsm.json5 index 8b3fff2a..c4f7d357 100644 --- a/idl/ISyntaxStateMachine_DDefineSsm.json5 +++ b/idl/ISyntaxStateMachine_DDefineSsm.json5 @@ -1,8 +1,8 @@ { mode: "implementation", - output_cpp_dir: "src/reader2", + output_cpp_dir: "src/reader2/facet", output_hpp_dir: "include/xo/reader2", - output_impl_subdir: "ssm", + output_impl_subdir: "define", includes: [ "\"SyntaxStateMachine.hpp\"", "\"ssm/ISyntaxStateMachine_Xfer.hpp\"" ], local_types: [ ], diff --git a/include/xo/reader2/DefineSsm.hpp b/include/xo/reader2/DefineSsm.hpp index 4a4489a0..7ccdd2db 100644 --- a/include/xo/reader2/DefineSsm.hpp +++ b/include/xo/reader2/DefineSsm.hpp @@ -6,7 +6,7 @@ #pragma once #include "DDefineSsm.hpp" -#include "ssm/ISyntaxStateMachine_DDefineSsm.hpp" -#include "ssm/IPrintable_DDefineSsm.hpp" +#include "define/ISyntaxStateMachine_DDefineSsm.hpp" +#include "define/IPrintable_DDefineSsm.hpp" /* end DefineSsm.hpp */ diff --git a/include/xo/reader2/ssm/IPrintable_DDefineSsm.hpp b/include/xo/reader2/ssm/IPrintable_DDefineSsm.hpp deleted file mode 100644 index d50b0394..00000000 --- a/include/xo/reader2/ssm/IPrintable_DDefineSsm.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/** @file IPrintable_DDefineSsm.hpp - * - * Generated automagically from ingredients: - * 1. code generator: - * [xo-facet/codegen/genfacet] - * arguments: - * --input [idl/IPrintable_DDefineSsm.json5] - * 2. jinja2 template for abstract facet .hpp file: - * [iface_facet_repr.hpp.j2] - * 3. idl for facet methods - * [idl/IPrintable_DDefineSsm.json5] - **/ - -#pragma once - -#include "Printable.hpp" -#include -#include -#include "DDefineSsm.hpp" - -namespace xo { namespace scm { class IPrintable_DDefineSsm; } } - -namespace xo { - namespace facet { - template <> - struct FacetImplementation - { - using ImplType = xo::print::IPrintable_Xfer - ; - }; - } -} - -namespace xo { - namespace scm { - /** @class IPrintable_DDefineSsm - **/ - class IPrintable_DDefineSsm { - public: - /** @defgroup scm-printable-ddefinessm-type-traits **/ - ///@{ - using ppindentinfo = xo::print::APrintable::ppindentinfo; - using Copaque = xo::print::APrintable::Copaque; - using Opaque = xo::print::APrintable::Opaque; - ///@} - /** @defgroup scm-printable-ddefinessm-methods **/ - ///@{ - // const methods - /** Pretty-printing support for this object. -See [xo-indentlog/xo/indentlog/pretty.hpp] **/ - static bool pretty(const DDefineSsm & self, const ppindentinfo & ppii); - - // non-const methods - ///@} - }; - - } /*namespace scm*/ -} /*namespace xo*/ - -/* end */ \ No newline at end of file diff --git a/include/xo/reader2/ssm/ISyntaxStateMachine_DDefineSsm.hpp b/include/xo/reader2/ssm/ISyntaxStateMachine_DDefineSsm.hpp deleted file mode 100644 index 3487a328..00000000 --- a/include/xo/reader2/ssm/ISyntaxStateMachine_DDefineSsm.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/** @file ISyntaxStateMachine_DDefineSsm.hpp - * - * Generated automagically from ingredients: - * 1. code generator: - * [xo-facet/codegen/genfacet] - * arguments: - * --input [idl/ISyntaxStateMachine_DDefineSsm.json5] - * 2. jinja2 template for abstract facet .hpp file: - * [iface_facet_repr.hpp.j2] - * 3. idl for facet methods - * [idl/ISyntaxStateMachine_DDefineSsm.json5] - **/ - -#pragma once - -#include "SyntaxStateMachine.hpp" -#include "SyntaxStateMachine.hpp" -#include "ssm/ISyntaxStateMachine_Xfer.hpp" -#include "DDefineSsm.hpp" - -namespace xo { namespace scm { class ISyntaxStateMachine_DDefineSsm; } } - -namespace xo { - namespace facet { - template <> - struct FacetImplementation - { - using ImplType = xo::scm::ISyntaxStateMachine_Xfer - ; - }; - } -} - -namespace xo { - namespace scm { - /** @class ISyntaxStateMachine_DDefineSsm - **/ - class ISyntaxStateMachine_DDefineSsm { - public: - /** @defgroup scm-syntaxstatemachine-ddefinessm-type-traits **/ - ///@{ - using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr; - using ACollector = xo::scm::ASyntaxStateMachine::ACollector; - using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject; - using Copaque = xo::scm::ASyntaxStateMachine::Copaque; - using Opaque = xo::scm::ASyntaxStateMachine::Opaque; - ///@} - /** @defgroup scm-syntaxstatemachine-ddefinessm-methods **/ - ///@{ - // const methods - /** identify a type of syntax state machine **/ - static syntaxstatetype ssm_type(const DDefineSsm & self) noexcept; - /** text describing expected/allowed input to this ssm in current state **/ - static std::string_view get_expect_str(const DDefineSsm & self) noexcept; - - // non-const methods - /** operate state machine for incoming token @p tk **/ - static void on_token(DDefineSsm & self, const Token & tk, ParserStateMachine * p_psm); - /** update stat machine for incoming parsed symbol @p sym **/ - static void on_parsed_symbol(DDefineSsm & self, std::string_view sym, ParserStateMachine * p_psm); - /** operate state machine for incoming type description @p td **/ - static void on_parsed_typedescr(DDefineSsm & self, TypeDescr td, ParserStateMachine * p_psm); - /** update state machine for type emitted by nested ssm **/ - static void on_parsed_type(DDefineSsm & self, obj type, ParserStateMachine * p_psm); - /** operate state machine for formal emitted by nested ssm **/ - static void on_parsed_formal(DDefineSsm & self, const DUniqueString * param_name, TypeDescr param_type, ParserStateMachine * p_psm); - /** operate state machine for formal emitted by nested ssm **/ - static void on_parsed_formal_with_token(DDefineSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm); - /** consume formal arglist emitted by nested ssm **/ - static void on_parsed_formal_arglist(DDefineSsm & self, DArray * arglist, ParserStateMachine * p_psm); - /** update state machine for nested parsed expression @p expr **/ - static void on_parsed_expression(DDefineSsm & self, obj expr, ParserStateMachine * p_psm); - /** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/ - static void on_parsed_expression_with_token(DDefineSsm & self, obj expr, const Token & tk, ParserStateMachine * p_psm); - /** update state machine for nested quoted literal @p lit **/ - static void on_quoted_literal(DDefineSsm & self, obj lit, ParserStateMachine * p_psm); - /** gc support: move immediate children to to-space and sub forwarding pointer **/ - static void forward_children(DDefineSsm & self, obj gc); - ///@} - }; - - } /*namespace scm*/ -} /*namespace xo*/ - -/* end */ \ No newline at end of file diff --git a/src/reader2/CMakeLists.txt b/src/reader2/CMakeLists.txt index 30f11169..99b9a580 100644 --- a/src/reader2/CMakeLists.txt +++ b/src/reader2/CMakeLists.txt @@ -27,8 +27,8 @@ set(SELF_SRCS IPrintable_DToplevelSeqSsm.cpp DDefineSsm.cpp - ISyntaxStateMachine_DDefineSsm.cpp - IPrintable_DDefineSsm.cpp + facet/ISyntaxStateMachine_DDefineSsm.cpp + facet/IPrintable_DDefineSsm.cpp DDeftypeSsm.cpp facet/ISyntaxStateMachine_DDeftypeSsm.cpp diff --git a/src/reader2/DDefineSsm.cpp b/src/reader2/DDefineSsm.cpp index 5e6b57ea..f9be0335 100644 --- a/src/reader2/DDefineSsm.cpp +++ b/src/reader2/DDefineSsm.cpp @@ -7,8 +7,7 @@ #include "DExpectSymbolSsm.hpp" #include "DExpectTypeSsm.hpp" #include "DExpectExprSsm.hpp" -#include "ssm/ISyntaxStateMachine_DDefineSsm.hpp" -#include "ssm/IPrintable_DDefineSsm.hpp" +#include "DefineSsm.hpp" #include #include #include diff --git a/src/reader2/DIfElseSsm.cpp b/src/reader2/DIfElseSsm.cpp index 2be7f71c..03bd1589 100644 --- a/src/reader2/DIfElseSsm.cpp +++ b/src/reader2/DIfElseSsm.cpp @@ -5,7 +5,8 @@ #include "ifelse/DIfElseSsm.hpp" #include "ifelse/ISyntaxStateMachine_DIfElseSsm.hpp" -#include "ssm/IPrintable_DDefineSsm.hpp" +#include "DefineSsm.hpp" +//#include "define/IPrintable_DDefineSsm.hpp" #include "DExpectExprSsm.hpp" #include #include diff --git a/src/reader2/IPrintable_DDefineSsm.cpp b/src/reader2/IPrintable_DDefineSsm.cpp deleted file mode 100644 index dbd0bfc9..00000000 --- a/src/reader2/IPrintable_DDefineSsm.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/** @file IPrintable_DDefineSsm.cpp - * - * Generated automagically from ingredients: - * 1. code generator: - * [xo-facet/codegen/genfacet] - * arguments: - * --input [idl/IPrintable_DDefineSsm.json5] - * 2. jinja2 template for abstract facet .hpp file: - * [iface_facet_any.hpp.j2] - * 3. idl for facet methods - * [idl/IPrintable_DDefineSsm.json5] -**/ - -#include "ssm/IPrintable_DDefineSsm.hpp" - -namespace xo { - namespace scm { - auto - IPrintable_DDefineSsm::pretty(const DDefineSsm & self, const ppindentinfo & ppii) -> bool - { - return self.pretty(ppii); - } - - - } /*namespace scm*/ -} /*namespace xo*/ - -/* end IPrintable_DDefineSsm.cpp */ diff --git a/src/reader2/ISyntaxStateMachine_DDefineSsm.cpp b/src/reader2/ISyntaxStateMachine_DDefineSsm.cpp deleted file mode 100644 index 139a3314..00000000 --- a/src/reader2/ISyntaxStateMachine_DDefineSsm.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/** @file ISyntaxStateMachine_DDefineSsm.cpp - * - * Generated automagically from ingredients: - * 1. code generator: - * [xo-facet/codegen/genfacet] - * arguments: - * --input [idl/ISyntaxStateMachine_DDefineSsm.json5] - * 2. jinja2 template for abstract facet .hpp file: - * [iface_facet_any.hpp.j2] - * 3. idl for facet methods - * [idl/ISyntaxStateMachine_DDefineSsm.json5] -**/ - -#include "ssm/ISyntaxStateMachine_DDefineSsm.hpp" - -namespace xo { - namespace scm { - auto - ISyntaxStateMachine_DDefineSsm::ssm_type(const DDefineSsm & self) noexcept -> syntaxstatetype - { - return self.ssm_type(); - } - - auto - ISyntaxStateMachine_DDefineSsm::get_expect_str(const DDefineSsm & self) noexcept -> std::string_view - { - return self.get_expect_str(); - } - - auto - ISyntaxStateMachine_DDefineSsm::on_token(DDefineSsm & self, const Token & tk, ParserStateMachine * p_psm) -> void - { - self.on_token(tk, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::on_parsed_symbol(DDefineSsm & self, std::string_view sym, ParserStateMachine * p_psm) -> void - { - self.on_parsed_symbol(sym, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::on_parsed_typedescr(DDefineSsm & self, TypeDescr td, ParserStateMachine * p_psm) -> void - { - self.on_parsed_typedescr(td, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::on_parsed_type(DDefineSsm & self, obj type, ParserStateMachine * p_psm) -> void - { - self.on_parsed_type(type, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::on_parsed_formal(DDefineSsm & self, const DUniqueString * param_name, TypeDescr param_type, ParserStateMachine * p_psm) -> void - { - self.on_parsed_formal(param_name, param_type, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::on_parsed_formal_with_token(DDefineSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm) -> void - { - self.on_parsed_formal_with_token(param_name, param_type, tk, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::on_parsed_formal_arglist(DDefineSsm & self, DArray * arglist, ParserStateMachine * p_psm) -> void - { - self.on_parsed_formal_arglist(arglist, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::on_parsed_expression(DDefineSsm & self, obj expr, ParserStateMachine * p_psm) -> void - { - self.on_parsed_expression(expr, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::on_parsed_expression_with_token(DDefineSsm & self, obj expr, const Token & tk, ParserStateMachine * p_psm) -> void - { - self.on_parsed_expression_with_token(expr, tk, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::on_quoted_literal(DDefineSsm & self, obj lit, ParserStateMachine * p_psm) -> void - { - self.on_quoted_literal(lit, p_psm); - } - auto - ISyntaxStateMachine_DDefineSsm::forward_children(DDefineSsm & self, obj gc) -> void - { - self.forward_children(gc); - } - - } /*namespace scm*/ -} /*namespace xo*/ - -/* end ISyntaxStateMachine_DDefineSsm.cpp */ diff --git a/src/reader2/ParserStateMachine.cpp b/src/reader2/ParserStateMachine.cpp index 63c333e1..b6f69439 100644 --- a/src/reader2/ParserStateMachine.cpp +++ b/src/reader2/ParserStateMachine.cpp @@ -902,8 +902,8 @@ namespace xo { void ParserStateMachine::forward_children(obj gc) noexcept { - static_assert(!stringtable_.is_gc_eligible()); - static_assert(!parser_alloc_.is_gc_eligible()); + assert(!stringtable_.is_gc_eligible()); + assert(!parser_alloc_.is_gc_eligible()); if (stack_) { stack_->forward_children(gc); diff --git a/utest/SchematikaParser.test.cpp b/utest/SchematikaParser.test.cpp index e33348fc..57436c70 100644 --- a/utest/SchematikaParser.test.cpp +++ b/utest/SchematikaParser.test.cpp @@ -6,8 +6,7 @@ #include #include #include -#include -#include +#include #include #include #include