diff --git a/xo-expression2/include/xo/expression2/DGlobalSymtab.hpp b/xo-expression2/include/xo/expression2/DGlobalSymtab.hpp index 566d8981..8eec6d2e 100644 --- a/xo-expression2/include/xo/expression2/DGlobalSymtab.hpp +++ b/xo-expression2/include/xo/expression2/DGlobalSymtab.hpp @@ -47,6 +47,9 @@ namespace xo { obj mm, const ArenaHashMapConfig & cfg); + /** non-trivial destructor for @ref map_ **/ + ~DGlobalSymtab() = default; + ///@} /** @defgroup scm-globalsymtab-access-methods access methods **/ ///@{ diff --git a/xo-interpreter2/include/xo/interpreter2/VirtualSchematikaMachine.hpp b/xo-interpreter2/include/xo/interpreter2/VirtualSchematikaMachine.hpp index 2cbd08e4..a34310ab 100644 --- a/xo-interpreter2/include/xo/interpreter2/VirtualSchematikaMachine.hpp +++ b/xo-interpreter2/include/xo/interpreter2/VirtualSchematikaMachine.hpp @@ -81,6 +81,11 @@ namespace xo { VirtualSchematikaMachine(const VsmConfig & config, obj aux_mm); + /** non-trivial dtor because of @ref reader_ + * indirect dependency on DGlobalSymtab + **/ + ~VirtualSchematikaMachine() = default; + /** allocator for schematika data **/ obj allocator() const noexcept; /** allocator for runtime errors **/ diff --git a/xo-reader2/include/xo/reader2/ParserStateMachine.hpp b/xo-reader2/include/xo/reader2/ParserStateMachine.hpp index 74a3e9bb..38cff2b8 100644 --- a/xo-reader2/include/xo/reader2/ParserStateMachine.hpp +++ b/xo-reader2/include/xo/reader2/ParserStateMachine.hpp @@ -57,6 +57,9 @@ namespace xo { obj expr_alloc, obj aux_alloc); + /** non-trivial dtor for @ref global_symtab_ **/ + ~ParserStateMachine() = default; + /** @defgroup scm-parserstatemachine-accessors accessor methods **/ ///@{ @@ -313,12 +316,12 @@ namespace xo { **/ DLocalSymtab * local_symtab_ = nullptr; -#ifdef NOT_YET /** global symbol table. * Toplevel definitions go here. + * + * Uses mmap -> non-trivial destructor. **/ - DGlobalSymtab * global_symtab_ = nullptr; -#endif + dp global_symtab_; /** current output from parser **/ ParserResult result_; diff --git a/xo-reader2/include/xo/reader2/SchematikaParser.hpp b/xo-reader2/include/xo/reader2/SchematikaParser.hpp index 13cb18ee..ee86e6d5 100644 --- a/xo-reader2/include/xo/reader2/SchematikaParser.hpp +++ b/xo-reader2/include/xo/reader2/SchematikaParser.hpp @@ -178,6 +178,9 @@ namespace xo { obj aux_alloc, bool debug_flag); + /** non-trivial dtor because of @ref psm_ **/ + ~SchematikaParser() = default; + /** scm-schematikaparser-access-methods **/ ///@{ diff --git a/xo-reader2/include/xo/reader2/SchematikaReader.hpp b/xo-reader2/include/xo/reader2/SchematikaReader.hpp index 6f2b325e..73b8166b 100644 --- a/xo-reader2/include/xo/reader2/SchematikaReader.hpp +++ b/xo-reader2/include/xo/reader2/SchematikaReader.hpp @@ -51,6 +51,9 @@ namespace xo { obj expr_alloc, obj fixed_alloc); + /** non-trivial dtor because of @p parser **/ + ~SchematikaReader() = default; + /** visit reader-owned memory pools; call visitor(info) for each. * Specifically exclude expr_alloc, since we don't consider * that reader-owned