diff --git a/include/xo/reader2/DApplySsm.hpp b/include/xo/reader2/DApplySsm.hpp index b9ff3d8b..d53b3c5c 100644 --- a/include/xo/reader2/DApplySsm.hpp +++ b/include/xo/reader2/DApplySsm.hpp @@ -88,8 +88,12 @@ namespace xo { /** create instance using memory from @p parser_mm. * with function to be called supplied by @p fn_expr. **/ - static DApplySsm * make(DArena & parser_mm, - obj fn_expr); + static DApplySsm * _make(DArena & parser_mm, + obj fn_expr); + + /** create fop referring to new DApplySsm **/ + static obj make(DArena & parser_mm, + obj fn_expr); /** * Start apply. Will trigger this after input like diff --git a/include/xo/reader2/DExpectExprSsm.hpp b/include/xo/reader2/DExpectExprSsm.hpp index 473a89d3..c963c9c1 100644 --- a/include/xo/reader2/DExpectExprSsm.hpp +++ b/include/xo/reader2/DExpectExprSsm.hpp @@ -25,9 +25,14 @@ namespace xo { explicit DExpectExprSsm(bool allow_defs, bool cxl_on_rightparen); - static DExpectExprSsm * make(DArena & parser_mm, - bool allow_defs, - bool cxl_on_rightbrace); + static DExpectExprSsm * _make(DArena & parser_mm, + bool allow_defs, + bool cxl_on_rightbrace); + + /** create fop referring to new DExpectExprSsm **/ + static obj make(DArena & parser_mm, + bool allow_defs, + bool cxl_on_rightbrace); static void start(DArena & parser_mm, bool allow_defs, diff --git a/include/xo/reader2/DExpectSymbolSsm.hpp b/include/xo/reader2/DExpectSymbolSsm.hpp index d1cf3a3c..b621985b 100644 --- a/include/xo/reader2/DExpectSymbolSsm.hpp +++ b/include/xo/reader2/DExpectSymbolSsm.hpp @@ -29,7 +29,10 @@ namespace xo { DExpectSymbolSsm(); /** create instance using memory from @p parser_mm **/ - static DExpectSymbolSsm * make(DArena & parser_mm); + static DExpectSymbolSsm * _make(DArena & parser_mm); + + /** create fop referring to new DExpectSymbolSsm **/ + static obj make(DArena & parser_mm); /** start nested parser expecting a symbol, * on top of parser state machine @p p_psm. diff --git a/include/xo/reader2/DExpectTypeSsm.hpp b/include/xo/reader2/DExpectTypeSsm.hpp index 6719bfb8..8d67b448 100644 --- a/include/xo/reader2/DExpectTypeSsm.hpp +++ b/include/xo/reader2/DExpectTypeSsm.hpp @@ -6,6 +6,7 @@ #pragma once #include "DSyntaxStateMachine.hpp" +#include #include namespace xo { @@ -31,7 +32,10 @@ namespace xo { public: DExpectTypeSsm(); - static DExpectTypeSsm * make(DArena & parser_mm); + static DExpectTypeSsm * _make(DArena & parser_mm); + + /** create fop referring to new DExpectTypeSsm **/ + static obj make(DArena & parser_mm); static void start(ParserStateMachine * p_psm); diff --git a/include/xo/reader2/DIfElseSsm.hpp b/include/xo/reader2/DIfElseSsm.hpp index 986ffcd7..345f3fa5 100644 --- a/include/xo/reader2/DIfElseSsm.hpp +++ b/include/xo/reader2/DIfElseSsm.hpp @@ -65,20 +65,16 @@ namespace xo { ///@{ explicit DIfElseSsm(DIfElseExpr * ifelse_expr); -#ifdef NOT_YET - /** create instance using memory from @p parser_mm - * with initial scaffold @p ifelse_expr - **/ - static obj make(DArena & parser_mm, - DIfElseExpr * ifelse_expr); -#endif - /** create instance using memory from @p parser_mm * with initial scaffold @p ifelse_expr. **/ static DIfElseSsm * _make(DArena & parser_mm, DIfElseExpr * ifelse_expr); + /** create fop referring to new DIfElseSsm **/ + static obj make(DArena & parser_mm, + DIfElseExpr * ifelse_expr); + /** start nested parser for an if-else expression * on top of parser state machine @p p_psm. * Use @p parser_mm to allocate syntax state machines diff --git a/include/xo/reader2/DProgressSsm.hpp b/include/xo/reader2/DProgressSsm.hpp index c43caacd..cc0eb0c5 100644 --- a/include/xo/reader2/DProgressSsm.hpp +++ b/include/xo/reader2/DProgressSsm.hpp @@ -96,9 +96,14 @@ namespace xo { public: DProgressSsm(obj lhs, optype op); - static DProgressSsm * make(DArena & parser_mm, - obj lhs, - optype op); + static DProgressSsm * _make(DArena & parser_mm, + obj lhs, + optype op); + + /** create fop referring to new DProgressSsm **/ + static obj make(DArena & parser_mm, + obj lhs, + optype op); static void start(DArena & parser_mm, ParserStateMachine * p_psm); diff --git a/src/reader2/DApplySsm.cpp b/src/reader2/DApplySsm.cpp index a741ce4b..d6f5e151 100644 --- a/src/reader2/DApplySsm.cpp +++ b/src/reader2/DApplySsm.cpp @@ -58,8 +58,8 @@ namespace xo { } DApplySsm * - DApplySsm::make(DArena & arena, - obj fn_expr) + DApplySsm::_make(DArena & arena, + obj fn_expr) { obj mm(&arena); @@ -83,6 +83,13 @@ namespace xo { return new (mem) DApplySsm(applystate, fn_expr, args); } + obj + DApplySsm::make(DArena & arena, + obj fn_expr) + { + return obj(_make(arena, fn_expr)); + } + void DApplySsm::start(obj fn_expr, ParserStateMachine * p_psm) @@ -91,10 +98,7 @@ namespace xo { DArena::Checkpoint ckp = p_psm->parser_alloc().checkpoint(); - DApplySsm * apply_ssm - = DApplySsm::make(p_psm->parser_alloc(), fn_expr); - - obj ssm(apply_ssm); + auto ssm = DApplySsm::make(p_psm->parser_alloc(), fn_expr); p_psm->push_ssm(ckp, ssm); } diff --git a/src/reader2/DExpectExprSsm.cpp b/src/reader2/DExpectExprSsm.cpp index 767df9bf..a2db5967 100644 --- a/src/reader2/DExpectExprSsm.cpp +++ b/src/reader2/DExpectExprSsm.cpp @@ -52,9 +52,9 @@ namespace xo { } DExpectExprSsm * - DExpectExprSsm::make(DArena & mm, - bool allow_defs, - bool cxl_on_rightbrace) + DExpectExprSsm::_make(DArena & mm, + bool allow_defs, + bool cxl_on_rightbrace) { void * mem = mm.alloc(typeseq::id(), sizeof(DExpectExprSsm)); @@ -63,6 +63,14 @@ namespace xo { cxl_on_rightbrace); } + obj + DExpectExprSsm::make(DArena & mm, + bool allow_defs, + bool cxl_on_rightbrace) + { + return obj(_make(mm, allow_defs, cxl_on_rightbrace)); + } + void DExpectExprSsm::start(DArena & mm, bool allow_defs, @@ -71,12 +79,7 @@ namespace xo { { DArena::Checkpoint ckp = mm.checkpoint(); - DExpectExprSsm * exp_expr - = DExpectExprSsm::make(mm, - allow_defs, - cxl_on_rightbrace); - obj ssm - = with_facet::mkobj(exp_expr); + auto ssm = DExpectExprSsm::make(mm, allow_defs, cxl_on_rightbrace); p_psm->push_ssm(ckp, ssm); } diff --git a/src/reader2/DExpectSymbolSsm.cpp b/src/reader2/DExpectSymbolSsm.cpp index 6f289edd..8a750751 100644 --- a/src/reader2/DExpectSymbolSsm.cpp +++ b/src/reader2/DExpectSymbolSsm.cpp @@ -20,7 +20,7 @@ namespace xo { {} DExpectSymbolSsm * - DExpectSymbolSsm::make(DArena & mm) + DExpectSymbolSsm::_make(DArena & mm) { void * mem = mm.alloc(typeseq::id(), sizeof(DExpectSymbolSsm)); @@ -28,19 +28,18 @@ namespace xo { return new (mem) DExpectSymbolSsm(); } + obj + DExpectSymbolSsm::make(DArena & mm) + { + return obj(_make(mm)); + } + void DExpectSymbolSsm::start(ParserStateMachine * p_psm) { DArena::Checkpoint ckp = p_psm->parser_alloc().checkpoint(); - DExpectSymbolSsm * sym_ssm - = DExpectSymbolSsm::make(p_psm->parser_alloc()); - - // note: - // relying on [ISyntaxStateMachine_DExpectedSymbolSsm.hpp] - // - obj ssm - = with_facet::mkobj(sym_ssm); + auto ssm = DExpectSymbolSsm::make(p_psm->parser_alloc()); p_psm->push_ssm(ckp, ssm); } diff --git a/src/reader2/DExpectTypeSsm.cpp b/src/reader2/DExpectTypeSsm.cpp index 412a5cab..b4fa8819 100644 --- a/src/reader2/DExpectTypeSsm.cpp +++ b/src/reader2/DExpectTypeSsm.cpp @@ -23,7 +23,7 @@ namespace xo { {} DExpectTypeSsm * - DExpectTypeSsm::make(DArena & mm) + DExpectTypeSsm::_make(DArena & mm) { void * mem = mm.alloc(typeseq::id(), sizeof(DArena)); @@ -31,16 +31,18 @@ namespace xo { return new (mem) DExpectTypeSsm(); } + obj + DExpectTypeSsm::make(DArena & mm) + { + return obj(_make(mm)); + } + void DExpectTypeSsm::start(ParserStateMachine * p_psm) { DArena::Checkpoint ckp = p_psm->parser_alloc().checkpoint(); - DExpectTypeSsm * expect_type_ssm - = DExpectTypeSsm::make(p_psm->parser_alloc()); - - auto ssm - = with_facet::mkobj(expect_type_ssm); + auto ssm = DExpectTypeSsm::make(p_psm->parser_alloc()); p_psm->push_ssm(ckp, ssm); } diff --git a/src/reader2/DIfElseSsm.cpp b/src/reader2/DIfElseSsm.cpp index 521a59a1..e78d187b 100644 --- a/src/reader2/DIfElseSsm.cpp +++ b/src/reader2/DIfElseSsm.cpp @@ -63,6 +63,13 @@ namespace xo { return new (mem) DIfElseSsm(ifelse_expr); } + obj + DIfElseSsm::make(DArena & mm, + DIfElseExpr * ifelse_expr) + { + return obj(_make(mm, ifelse_expr)); + } + void DIfElseSsm::start(DArena & parser_mm, obj expr_mm, @@ -73,10 +80,8 @@ namespace xo { DArena::Checkpoint ckp = parser_mm.checkpoint(); DIfElseExpr * if_expr = DIfElseExpr::_make_empty(expr_mm); - DIfElseSsm * if_ssm = DIfElseSsm::_make(parser_mm, if_expr); - obj ssm - = with_facet::mkobj(if_ssm); + auto ssm = DIfElseSsm::make(parser_mm, if_expr); p_psm->push_ssm(ckp, ssm); diff --git a/src/reader2/DProgressSsm.cpp b/src/reader2/DProgressSsm.cpp index e4cdf46b..4af449c0 100644 --- a/src/reader2/DProgressSsm.cpp +++ b/src/reader2/DProgressSsm.cpp @@ -146,16 +146,22 @@ namespace xo { } DProgressSsm * - DProgressSsm::make(DArena & mm, - obj lhs, - optype op) + DProgressSsm::_make(DArena & mm, + obj lhs, + optype op) { void * mem = mm.alloc(typeseq::id(), sizeof(DProgressSsm)); return new (mem) DProgressSsm(lhs, op); + } - //return std::make_unique(progress_xs(std::move(valex), op)); + obj + DProgressSsm::make(DArena & mm, + obj lhs, + optype op) + { + return obj(_make(mm, lhs, op)); } void @@ -166,10 +172,7 @@ namespace xo { { DArena::Checkpoint ckp = parser_mm.checkpoint(); - DProgressSsm * progress_ssm - = DProgressSsm::make(parser_mm, lhs, op); - - obj ssm(progress_ssm); + auto ssm = DProgressSsm::make(parser_mm, lhs, op); p_psm->push_ssm(ckp, ssm); }