diff --git a/codegen/abstract_facet.hpp.j2 b/codegen/abstract_facet.hpp.j2 index e1fc17c..76985b6 100644 --- a/codegen/abstract_facet.hpp.j2 +++ b/codegen/abstract_facet.hpp.j2 @@ -43,6 +43,8 @@ public: // types /** integer identifying a type **/ using typeseq = xo::facet::typeseq; + using Copaque = const void *; + using Opaque = void *; {% for ty in types %} /** {{ty.doc}} **/ using {{ty.name}} = {{ty.definition}}; diff --git a/codegen/genfacet b/codegen/genfacet index eef2eec..788faf4 100755 --- a/codegen/genfacet +++ b/codegen/genfacet @@ -265,8 +265,8 @@ def gen_facet_impl(env, # doc section for facet facet_doc = '\n'.join(idl['doc']) - types = facet_idl['types'] - for ty in types: + facet_types = facet_idl['types'] + for ty in facet_types: ty['doc'] = '\n'.join(ty['doc']) const_methods = facet_idl['const_methods'] @@ -328,6 +328,8 @@ def gen_facet_impl(env, # repr_ns2: nested namespace for repr [e.g. scm]. repr_ns2 = idl['namespace2'] + # local_types: addition type defs (e.g. repr_ns2 != facet_ns2) + local_types = idl['local_types'] # iface_facet_repr: IFoo_DRepr iface_facet_repr = f'{iface_facet}_{data_repr}' @@ -379,7 +381,8 @@ def gen_facet_impl(env, 'router_facet_hpp_j2': 'router_facet.hpp.j2', 'router_facet_hpp_fname': router_facet_hpp_fname, # - 'types': types, + 'types': facet_types, + 'local_types': local_types, # 'const_methods': const_methods, # diff --git a/codegen/iface_facet_repr.hpp.j2 b/codegen/iface_facet_repr.hpp.j2 index 55b7994..221d679 100644 --- a/codegen/iface_facet_repr.hpp.j2 +++ b/codegen/iface_facet_repr.hpp.j2 @@ -46,6 +46,11 @@ namespace {{repr_ns1}} { {% for ty in types %} using {{ty.name}} = {{facet_ns1}}::{{facet_ns2}}::{{abstract_facet}}::{{ty.name}}; {% endfor %} + using Copaque = {{facet_ns1}}::{{facet_ns2}}::{{abstract_facet}}::Copaque; + using Opaque = {{facet_ns1}}::{{facet_ns2}}::{{abstract_facet}}::Opaque; + {% for ty in local_types %} + using {{ty.name}} = {{ty.definition}}; + {% endfor %} {% if using_dox %} ///@} /** @defgroup {{repr_ns2}}-{{facet_name_lc}}-{{data_repr_lc}}-methods **/