aboutsummaryrefslogtreecommitdiff
path: root/xsde/cxx/hybrid/generator.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xsde/cxx/hybrid/generator.cxx')
-rw-r--r--xsde/cxx/hybrid/generator.cxx17
1 files changed, 14 insertions, 3 deletions
diff --git a/xsde/cxx/hybrid/generator.cxx b/xsde/cxx/hybrid/generator.cxx
index e47a3c9..fa6f358 100644
--- a/xsde/cxx/hybrid/generator.cxx
+++ b/xsde/cxx/hybrid/generator.cxx
@@ -2390,7 +2390,7 @@ namespace CXX
// CXX
//
{
- Context ctx (cxx, schema, file_path, ops, 0, &hxx_obj_expr, 0);
+ Context ctx (cxx, schema, file_path, ops, 0, &hxx_expr, 0);
Indentation::Clip<Indentation::SLOC, WideChar> cxx_sloc (cxx);
@@ -2419,7 +2419,7 @@ namespace CXX
cxx << "#include " << ctx.process_include_path (hxx_name) << endl
<< endl;
- generate_parser_source (ctx);
+ generate_parser_source (ctx, hxx_obj_expr);
if (aggr)
generate_parser_aggregate_source (ctx);
@@ -2540,6 +2540,9 @@ namespace CXX
NarrowString hxx_suffix (ops.value <CLI::hxx_suffix> ());
NarrowString cxx_suffix (ops.value <CLI::cxx_suffix> ());
+ NarrowString hxx_obj_regex (
+ find_value (ops.value <CLI::hxx_regex> (), ""));
+
NarrowString hxx_skel_regex (
find_value (ops.value <CLI::hxx_regex> (), "sskel"));
NarrowString hxx_regex (
@@ -2547,6 +2550,14 @@ namespace CXX
NarrowString cxx_regex (
find_value (ops.value <CLI::cxx_regex> (), "simpl"));
+ // Here we need to make sure that hxx_obj_expr is the same
+ // as in generate().
+ //
+ Regex hxx_obj_expr (
+ hxx_obj_regex.empty ()
+ ? "#^(.+?)(\\.[^./\\\\]+)?$#$1" + hxx_suffix + "#"
+ : hxx_obj_regex);
+
// Here we need to make sure that hxx_skel_expr is the same
// as in the C++/Serializer generator.
//
@@ -2828,7 +2839,7 @@ namespace CXX
cxx << "#include " << ctx.process_include_path (hxx_name) << endl
<< endl;
- generate_serializer_source (ctx);
+ generate_serializer_source (ctx, hxx_obj_expr);
if (aggr)
generate_serializer_aggregate_source (ctx);