From 58ea29170ddbd7005ec7e42671bf24b2f54b886a Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 14 Jan 2026 16:32:58 -0500 Subject: [PATCH] xo-facet xo-object2: facet fixes + IPrintable_DString --- codegen/facet.hpp.j2 | 4 ++++ codegen/genfacet | 4 ++++ codegen/router_facet.hpp.j2 | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/codegen/facet.hpp.j2 b/codegen/facet.hpp.j2 index 2eeaa5d..82678c5 100644 --- a/codegen/facet.hpp.j2 +++ b/codegen/facet.hpp.j2 @@ -18,4 +18,8 @@ #include "{{impl_hpp_subdir}}/{{iface_facet_xfer_hpp_fname}}" #include "{{impl_hpp_subdir}}/{{router_facet_hpp_fname}}" +{% for include_fname in user_hpp_includes %} +#include {{include_fname}} +{% endfor %} + /* end {{facet_hpp_fname}} */ diff --git a/codegen/genfacet b/codegen/genfacet index 788faf4..4d4f3fe 100755 --- a/codegen/genfacet +++ b/codegen/genfacet @@ -93,6 +93,8 @@ def gen_facet(env, # extra include files (or perhaps other definitions) facet_includes = idl['includes'] + # extra (post) includes for user .hpp e.g. Sequence.hpp + user_hpp_includes = idl['user_hpp_includes'] # arbitrary text after includes, before opening namespaces facet_pretext = idl['pretext'] # detail @@ -163,6 +165,8 @@ def gen_facet(env, 'facet_ns2': facet_ns2, 'facet_name_lc': facet_name_lc, 'facet_hpp_fname': facet_hpp_fname, + # + 'user_hpp_includes': user_hpp_includes, #'name': facet_name, 'idl_fname': idl_fname, # diff --git a/codegen/router_facet.hpp.j2 b/codegen/router_facet.hpp.j2 index 7dba767..b8d7073 100644 --- a/codegen/router_facet.hpp.j2 +++ b/codegen/router_facet.hpp.j2 @@ -46,6 +46,9 @@ public: {% endif %} {{router_facet}}() {} {{router_facet}}(Object::DataPtr data) : Object{std::move(data)} {} + {{router_facet}}(const {{abstract_facet}} * iface, void * data) + requires std::is_same_v + : Object(iface, data) {} {% if using_dox %} ///@} @@ -61,7 +64,7 @@ public: } {% endfor %} - // non-const methods + // non-const methods (still const in router!) {% for md in nonconst_methods %} {{md.return_type}} {{md.name}}({{md.args | argsnodata}}) {{md | staticqual}} { return O::iface()->{{md.name}}({{md.args | argrouting}});