From 15028cbe92dd88b25b261fb360970cfdf61636e4 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Sun, 18 Jan 2026 19:09:48 -0500 Subject: [PATCH] xo-reader2: + init_reader2 + reader2_register_types --- .../include/xo/reader2/init_reader2.hpp | 21 ++++++++++ .../xo/reader2/reader2_register_types.hpp | 17 ++++++++ xo-reader2/src/reader2/CMakeLists.txt | 6 +-- xo-reader2/src/reader2/init_reader2.cpp | 41 +++++++++++++++++++ .../src/reader2/reader2_register_types.cpp | 29 +++++++++++++ 5 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 xo-reader2/include/xo/reader2/init_reader2.hpp create mode 100644 xo-reader2/include/xo/reader2/reader2_register_types.hpp create mode 100644 xo-reader2/src/reader2/init_reader2.cpp create mode 100644 xo-reader2/src/reader2/reader2_register_types.cpp diff --git a/xo-reader2/include/xo/reader2/init_reader2.hpp b/xo-reader2/include/xo/reader2/init_reader2.hpp new file mode 100644 index 00000000..e0bf18b4 --- /dev/null +++ b/xo-reader2/include/xo/reader2/init_reader2.hpp @@ -0,0 +1,21 @@ +/** @file init_reader2.hpp + * + * @author Roland Conybeare, Jan 2026 + **/ + +#pragma once + +#include + +namespace xo { + /* tag to represent the xo-reader2/ subsystem within ordered initialization */ + enum S_reader2_tag {}; + + template <> + struct InitSubsys { + static void init(); + static InitEvidence require(); + }; +} /*namespace xo*/ + +/* end init_reader2.hpp */ diff --git a/xo-reader2/include/xo/reader2/reader2_register_types.hpp b/xo-reader2/include/xo/reader2/reader2_register_types.hpp new file mode 100644 index 00000000..a7e6c0e1 --- /dev/null +++ b/xo-reader2/include/xo/reader2/reader2_register_types.hpp @@ -0,0 +1,17 @@ +/** @file reader2_register_types.hpp + * + * @author Roland Conybeare, Jan 2026 + **/ + +#pragma once + +#include + +namespace xo { + namespace scm { + /** Register reader2 gc-aware types with collector **/ + bool reader2_register_types(obj gc); + } +} + +/* end reader2_register_types.hpp */ diff --git a/xo-reader2/src/reader2/CMakeLists.txt b/xo-reader2/src/reader2/CMakeLists.txt index ee214f56..f6fc817f 100644 --- a/xo-reader2/src/reader2/CMakeLists.txt +++ b/xo-reader2/src/reader2/CMakeLists.txt @@ -2,7 +2,7 @@ set(SELF_LIB xo_reader2) set(SELF_SRCS - #init_reader2.cpp + init_reader2.cpp ParserStateMachine.cpp ParserStack.cpp @@ -14,7 +14,7 @@ set(SELF_SRCS ISyntaxStateMachine_DExprSeqState.cpp reader2_register_facets.cpp - #reader2_register_types.cpp + reader2_register_types.cpp ) xo_add_shared_library4(${SELF_LIB} ${PROJECT_NAME}Targets ${PROJECT_VERSION} 1 ${SELF_SRCS}) @@ -26,5 +26,5 @@ xo_dependency(${SELF_LIB} xo_expression2) #xo_dependency(${SELF_LIB} xo_object2) #xo_dependency(${SELF_LIB} xo_printable2) #xo_dependency(${SELF_LIB} xo_flatstring) -#xo_dependency(${SELF_LIB} subsys) +xo_dependency(${SELF_LIB} subsys) #xo_dependency(${SELF_LIB} indentlog) diff --git a/xo-reader2/src/reader2/init_reader2.cpp b/xo-reader2/src/reader2/init_reader2.cpp new file mode 100644 index 00000000..aa7e291c --- /dev/null +++ b/xo-reader2/src/reader2/init_reader2.cpp @@ -0,0 +1,41 @@ +/** @file init_reader2.cpp + * + * @author Roland Conybeare, Jan 2026 + **/ + +#include "init_reader2.hpp" +#include "reader2_register_facets.hpp" +#include "reader2_register_types.hpp" + +#include +#include + +namespace xo { + using xo::scm::reader2_register_facets; + using xo::scm::reader2_register_types; + using xo::mm::CollectorTypeRegistry; + + void + InitSubsys::init() + { + reader2_register_facets(); + + CollectorTypeRegistry::instance().register_types(&reader2_register_types); + } + + InitEvidence + InitSubsys::require() + { + InitEvidence retval; + + /* direct subsystem deps for xo-reader2/ */ + retval ^= InitSubsys::require(); + + /* xo-reader2/'s own initialization code */ + retval ^= Subsystem::provide("reader2", &init); + + return retval; + } +} /*namespace xo*/ + +/* end init_reader2.cpp */ diff --git a/xo-reader2/src/reader2/reader2_register_types.cpp b/xo-reader2/src/reader2/reader2_register_types.cpp new file mode 100644 index 00000000..3720752d --- /dev/null +++ b/xo-reader2/src/reader2/reader2_register_types.cpp @@ -0,0 +1,29 @@ +/** @file reader2_register_types.cpp + * + * @author Roland Conybeare, Jan 2026 + **/ + +#include "reader2_register_types.hpp" + +#include + +namespace xo { + using xo::mm::ACollector; + using xo::scope; + + namespace scm { + bool + reader2_register_types(obj /*gc*/) + { + scope log(XO_DEBUG(true)); + + bool ok = true; + + /* no gc-aware types yet; scaffold for future use */ + + return ok; + } + } +} /*namespace xo*/ + +/* end reader2_register_types.cpp */