From f0d4e5801040ce1d854a65d1c5a631397dedfd0b Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 25 Mar 2026 17:11:46 -0400 Subject: [PATCH] xo-reader2 stack: refactor for ssm file location --- idl/IPrintable_DQuoteSsm.json5 | 4 +- idl/ISyntaxStateMachine_DQuoteSsm.json5 | 4 +- .../reader2/define/IPrintable_DDefineSsm.hpp | 62 +++++++++++++ .../define/ISyntaxStateMachine_DDefineSsm.hpp | 87 ++++++++++++++++++ .../xo/reader2/quote/IPrintable_DQuoteSsm.hpp | 62 +++++++++++++ .../quote/ISyntaxStateMachine_DQuoteSsm.hpp | 87 ++++++++++++++++++ src/reader2/CMakeLists.txt | 4 +- src/reader2/facet/IPrintable_DDefineSsm.cpp | 28 ++++++ .../{ => facet}/IPrintable_DQuoteSsm.cpp | 2 +- .../facet/ISyntaxStateMachine_DDefineSsm.cpp | 89 +++++++++++++++++++ .../ISyntaxStateMachine_DQuoteSsm.cpp | 2 +- 11 files changed, 423 insertions(+), 8 deletions(-) create mode 100644 include/xo/reader2/define/IPrintable_DDefineSsm.hpp create mode 100644 include/xo/reader2/define/ISyntaxStateMachine_DDefineSsm.hpp create mode 100644 include/xo/reader2/quote/IPrintable_DQuoteSsm.hpp create mode 100644 include/xo/reader2/quote/ISyntaxStateMachine_DQuoteSsm.hpp create mode 100644 src/reader2/facet/IPrintable_DDefineSsm.cpp rename src/reader2/{ => facet}/IPrintable_DQuoteSsm.cpp (94%) create mode 100644 src/reader2/facet/ISyntaxStateMachine_DDefineSsm.cpp rename src/reader2/{ => facet}/ISyntaxStateMachine_DQuoteSsm.cpp (98%) diff --git a/idl/IPrintable_DQuoteSsm.json5 b/idl/IPrintable_DQuoteSsm.json5 index d1c28a15..d7c41b0a 100644 --- a/idl/IPrintable_DQuoteSsm.json5 +++ b/idl/IPrintable_DQuoteSsm.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: "quote", includes: [ "", "" ], local_types: [], diff --git a/idl/ISyntaxStateMachine_DQuoteSsm.json5 b/idl/ISyntaxStateMachine_DQuoteSsm.json5 index a70a4aa4..60d41730 100644 --- a/idl/ISyntaxStateMachine_DQuoteSsm.json5 +++ b/idl/ISyntaxStateMachine_DQuoteSsm.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: "quote", includes: [ "\"SyntaxStateMachine.hpp\"", "\"ssm/ISyntaxStateMachine_Xfer.hpp\"" ], local_types: [ ], diff --git a/include/xo/reader2/define/IPrintable_DDefineSsm.hpp b/include/xo/reader2/define/IPrintable_DDefineSsm.hpp new file mode 100644 index 00000000..d50b0394 --- /dev/null +++ b/include/xo/reader2/define/IPrintable_DDefineSsm.hpp @@ -0,0 +1,62 @@ +/** @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/define/ISyntaxStateMachine_DDefineSsm.hpp b/include/xo/reader2/define/ISyntaxStateMachine_DDefineSsm.hpp new file mode 100644 index 00000000..3487a328 --- /dev/null +++ b/include/xo/reader2/define/ISyntaxStateMachine_DDefineSsm.hpp @@ -0,0 +1,87 @@ +/** @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/include/xo/reader2/quote/IPrintable_DQuoteSsm.hpp b/include/xo/reader2/quote/IPrintable_DQuoteSsm.hpp new file mode 100644 index 00000000..2b969c50 --- /dev/null +++ b/include/xo/reader2/quote/IPrintable_DQuoteSsm.hpp @@ -0,0 +1,62 @@ +/** @file IPrintable_DQuoteSsm.hpp + * + * Generated automagically from ingredients: + * 1. code generator: + * [xo-facet/codegen/genfacet] + * arguments: + * --input [idl/IPrintable_DQuoteSsm.json5] + * 2. jinja2 template for abstract facet .hpp file: + * [iface_facet_repr.hpp.j2] + * 3. idl for facet methods + * [idl/IPrintable_DQuoteSsm.json5] + **/ + +#pragma once + +#include "Printable.hpp" +#include +#include +#include "DQuoteSsm.hpp" + +namespace xo { namespace scm { class IPrintable_DQuoteSsm; } } + +namespace xo { + namespace facet { + template <> + struct FacetImplementation + { + using ImplType = xo::print::IPrintable_Xfer + ; + }; + } +} + +namespace xo { + namespace scm { + /** @class IPrintable_DQuoteSsm + **/ + class IPrintable_DQuoteSsm { + public: + /** @defgroup scm-printable-dquotessm-type-traits **/ + ///@{ + using ppindentinfo = xo::print::APrintable::ppindentinfo; + using Copaque = xo::print::APrintable::Copaque; + using Opaque = xo::print::APrintable::Opaque; + ///@} + /** @defgroup scm-printable-dquotessm-methods **/ + ///@{ + // const methods + /** Pretty-printing support for this object. +See [xo-indentlog/xo/indentlog/pretty.hpp] **/ + static bool pretty(const DQuoteSsm & self, const ppindentinfo & ppii); + + // non-const methods + ///@} + }; + + } /*namespace scm*/ +} /*namespace xo*/ + +/* end */ \ No newline at end of file diff --git a/include/xo/reader2/quote/ISyntaxStateMachine_DQuoteSsm.hpp b/include/xo/reader2/quote/ISyntaxStateMachine_DQuoteSsm.hpp new file mode 100644 index 00000000..811119c5 --- /dev/null +++ b/include/xo/reader2/quote/ISyntaxStateMachine_DQuoteSsm.hpp @@ -0,0 +1,87 @@ +/** @file ISyntaxStateMachine_DQuoteSsm.hpp + * + * Generated automagically from ingredients: + * 1. code generator: + * [xo-facet/codegen/genfacet] + * arguments: + * --input [idl/ISyntaxStateMachine_DQuoteSsm.json5] + * 2. jinja2 template for abstract facet .hpp file: + * [iface_facet_repr.hpp.j2] + * 3. idl for facet methods + * [idl/ISyntaxStateMachine_DQuoteSsm.json5] + **/ + +#pragma once + +#include "SyntaxStateMachine.hpp" +#include "SyntaxStateMachine.hpp" +#include "ssm/ISyntaxStateMachine_Xfer.hpp" +#include "DQuoteSsm.hpp" + +namespace xo { namespace scm { class ISyntaxStateMachine_DQuoteSsm; } } + +namespace xo { + namespace facet { + template <> + struct FacetImplementation + { + using ImplType = xo::scm::ISyntaxStateMachine_Xfer + ; + }; + } +} + +namespace xo { + namespace scm { + /** @class ISyntaxStateMachine_DQuoteSsm + **/ + class ISyntaxStateMachine_DQuoteSsm { + public: + /** @defgroup scm-syntaxstatemachine-dquotessm-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-dquotessm-methods **/ + ///@{ + // const methods + /** identify a type of syntax state machine **/ + static syntaxstatetype ssm_type(const DQuoteSsm & self) noexcept; + /** text describing expected/allowed input to this ssm in current state **/ + static std::string_view get_expect_str(const DQuoteSsm & self) noexcept; + + // non-const methods + /** operate state machine for incoming token @p tk **/ + static void on_token(DQuoteSsm & self, const Token & tk, ParserStateMachine * p_psm); + /** update stat machine for incoming parsed symbol @p sym **/ + static void on_parsed_symbol(DQuoteSsm & self, std::string_view sym, ParserStateMachine * p_psm); + /** operate state machine for incoming type description @p td **/ + static void on_parsed_typedescr(DQuoteSsm & self, TypeDescr td, ParserStateMachine * p_psm); + /** update state machine for type emitted by nested ssm **/ + static void on_parsed_type(DQuoteSsm & self, obj type, ParserStateMachine * p_psm); + /** operate state machine for formal emitted by nested ssm **/ + static void on_parsed_formal(DQuoteSsm & 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(DQuoteSsm & 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(DQuoteSsm & self, DArray * arglist, ParserStateMachine * p_psm); + /** update state machine for nested parsed expression @p expr **/ + static void on_parsed_expression(DQuoteSsm & 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(DQuoteSsm & self, obj expr, const Token & tk, ParserStateMachine * p_psm); + /** update state machine for nested quoted literal @p lit **/ + static void on_quoted_literal(DQuoteSsm & self, obj lit, ParserStateMachine * p_psm); + /** gc support: move immediate children to to-space and sub forwarding pointer **/ + static void forward_children(DQuoteSsm & 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 99b9a580..c2ba12e9 100644 --- a/src/reader2/CMakeLists.txt +++ b/src/reader2/CMakeLists.txt @@ -99,8 +99,8 @@ set(SELF_SRCS IPrintable_DProgressSsm.cpp DQuoteSsm.cpp - ISyntaxStateMachine_DQuoteSsm.cpp - IPrintable_DQuoteSsm.cpp + facet/ISyntaxStateMachine_DQuoteSsm.cpp + facet/IPrintable_DQuoteSsm.cpp ) diff --git a/src/reader2/facet/IPrintable_DDefineSsm.cpp b/src/reader2/facet/IPrintable_DDefineSsm.cpp new file mode 100644 index 00000000..c63eaf7f --- /dev/null +++ b/src/reader2/facet/IPrintable_DDefineSsm.cpp @@ -0,0 +1,28 @@ +/** @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 "define/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/IPrintable_DQuoteSsm.cpp b/src/reader2/facet/IPrintable_DQuoteSsm.cpp similarity index 94% rename from src/reader2/IPrintable_DQuoteSsm.cpp rename to src/reader2/facet/IPrintable_DQuoteSsm.cpp index 303acefb..b190ec52 100644 --- a/src/reader2/IPrintable_DQuoteSsm.cpp +++ b/src/reader2/facet/IPrintable_DQuoteSsm.cpp @@ -11,7 +11,7 @@ * [idl/IPrintable_DQuoteSsm.json5] **/ -#include "ssm/IPrintable_DQuoteSsm.hpp" +#include "quote/IPrintable_DQuoteSsm.hpp" namespace xo { namespace scm { diff --git a/src/reader2/facet/ISyntaxStateMachine_DDefineSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DDefineSsm.cpp new file mode 100644 index 00000000..9867898f --- /dev/null +++ b/src/reader2/facet/ISyntaxStateMachine_DDefineSsm.cpp @@ -0,0 +1,89 @@ +/** @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 "define/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/ISyntaxStateMachine_DQuoteSsm.cpp b/src/reader2/facet/ISyntaxStateMachine_DQuoteSsm.cpp similarity index 98% rename from src/reader2/ISyntaxStateMachine_DQuoteSsm.cpp rename to src/reader2/facet/ISyntaxStateMachine_DQuoteSsm.cpp index c219db80..9624c899 100644 --- a/src/reader2/ISyntaxStateMachine_DQuoteSsm.cpp +++ b/src/reader2/facet/ISyntaxStateMachine_DQuoteSsm.cpp @@ -11,7 +11,7 @@ * [idl/ISyntaxStateMachine_DQuoteSsm.json5] **/ -#include "ssm/ISyntaxStateMachine_DQuoteSsm.hpp" +#include "quote/ISyntaxStateMachine_DQuoteSsm.hpp" namespace xo { namespace scm {