diff --git a/xo-facet/codegen/genfacet b/xo-facet/codegen/genfacet index 8edadc1c..062683be 100755 --- a/xo-facet/codegen/genfacet +++ b/xo-facet/codegen/genfacet @@ -458,7 +458,7 @@ def main(): # --output-impl-hpp: putting this in .json5, will be able to drop this. parser.add_argument('--output-impl-hpp', required=True, help='.hpp detail subdir') parser.add_argument('--output-hpp', required=True, help='.hpp output directory') - parser.add_argument('--output-cpp', required=True, help='.cpp output directory') + parser.add_argument('--output-cpp', required=False, help='.cpp output directory') args = parser.parse_args() @@ -473,7 +473,12 @@ def main(): output_impl_hpp_dir = Path(args.output_hpp) / output_impl_hpp_subdir output_impl_hpp_dir.mkdir(parents=False, exist_ok=True) - output_cpp_dir = Path(args.output_cpp) + if 'output_cpp_dir' in idl: + output_cpp_dir = Path(idl['output_cpp_dir']) + elif args.output_cpp: + output_cpp_dir = Path(args.output_cpp) + else: + parser.error("--output-cpp required when .json5 lacks output_cpp_dir") output_cpp_dir.mkdir(parents=False, exist_ok=True) # setup jinja2 diff --git a/xo-procedure2/idl/IGCObject_DPrimitive_gco_2_gco_gco.json5 b/xo-procedure2/idl/IGCObject_DPrimitive_gco_2_gco_gco.json5 index b2fb4014..79ee61d4 100644 --- a/xo-procedure2/idl/IGCObject_DPrimitive_gco_2_gco_gco.json5 +++ b/xo-procedure2/idl/IGCObject_DPrimitive_gco_2_gco_gco.json5 @@ -1,5 +1,6 @@ { mode: "implementation", + output_cpp_dir: "src/procedure2", includes: [ // "", diff --git a/xo-procedure2/idl/IPrintable_DPrimitive_gco_2_gco_gco.json5 b/xo-procedure2/idl/IPrintable_DPrimitive_gco_2_gco_gco.json5 index 15cff1b4..5eb7bf34 100644 --- a/xo-procedure2/idl/IPrintable_DPrimitive_gco_2_gco_gco.json5 +++ b/xo-procedure2/idl/IPrintable_DPrimitive_gco_2_gco_gco.json5 @@ -1,5 +1,6 @@ { mode: "implementation", + output_cpp_dir: "src/procedure2", includes: [ "", "", diff --git a/xo-procedure2/idl/IProcedure_DPrimitive_gco_2_gco_gco.json5 b/xo-procedure2/idl/IProcedure_DPrimitive_gco_2_gco_gco.json5 index fb22bad5..b0a770fd 100644 --- a/xo-procedure2/idl/IProcedure_DPrimitive_gco_2_gco_gco.json5 +++ b/xo-procedure2/idl/IProcedure_DPrimitive_gco_2_gco_gco.json5 @@ -1,5 +1,6 @@ { mode: "implementation", + output_cpp_dir: "src/procedure2", includes: [ "", "", diff --git a/xo-procedure2/idl/IRuntimeContext_DSimpleRcx.json5 b/xo-procedure2/idl/IRuntimeContext_DSimpleRcx.json5 index ed838629..4765285d 100644 --- a/xo-procedure2/idl/IRuntimeContext_DSimpleRcx.json5 +++ b/xo-procedure2/idl/IRuntimeContext_DSimpleRcx.json5 @@ -1,5 +1,6 @@ { mode: "implementation", + output_cpp_dir: "src/procedure2", includes: [ //"", //"", diff --git a/xo-procedure2/idl/Procedure.json5 b/xo-procedure2/idl/Procedure.json5 index 449414f0..7933c3a2 100644 --- a/xo-procedure2/idl/Procedure.json5 +++ b/xo-procedure2/idl/Procedure.json5 @@ -4,6 +4,7 @@ { mode: "facet", + output_cpp_dir: "src/procedure2", // includes in ASyntaxStateMachine.hpp includes: [ "\"RuntimeContext.hpp\"", diff --git a/xo-procedure2/idl/RuntimeContext.json5 b/xo-procedure2/idl/RuntimeContext.json5 index e80c0bc5..c896cc64 100644 --- a/xo-procedure2/idl/RuntimeContext.json5 +++ b/xo-procedure2/idl/RuntimeContext.json5 @@ -1,5 +1,6 @@ { mode: "facet", + output_cpp_dir: "src/procedure2", // includes in ARuntimeContext.hpp includes: [ "" diff --git a/xo-procedure2/include/xo/procedure2/detail/RProcedure.hpp b/xo-procedure2/include/xo/procedure2/detail/RProcedure.hpp index 61bcb7f7..191bd37e 100644 --- a/xo-procedure2/include/xo/procedure2/detail/RProcedure.hpp +++ b/xo-procedure2/include/xo/procedure2/detail/RProcedure.hpp @@ -46,6 +46,8 @@ public: /** @defgroup scm-procedure-router-methods **/ ///@{ + // explicit injected content + // builtin methods typeseq _typeseq() const noexcept { return O::iface()->_typeseq(); } void _drop() const noexcept { O::iface()->_drop(O::data()); } diff --git a/xo-procedure2/include/xo/procedure2/detail/RRuntimeContext.hpp b/xo-procedure2/include/xo/procedure2/detail/RRuntimeContext.hpp index a6df812e..a9e161ed 100644 --- a/xo-procedure2/include/xo/procedure2/detail/RRuntimeContext.hpp +++ b/xo-procedure2/include/xo/procedure2/detail/RRuntimeContext.hpp @@ -46,6 +46,8 @@ public: /** @defgroup scm-runtimecontext-router-methods **/ ///@{ + // explicit injected content + // builtin methods typeseq _typeseq() const noexcept { return O::iface()->_typeseq(); } void _drop() const noexcept { O::iface()->_drop(O::data()); }