aboutsummaryrefslogtreecommitdiff
path: root/xsde/cxx/hybrid/generator.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-11-25 15:34:52 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-11-25 15:34:52 +0200
commit956fab80f55ba64a15e736a8ccdbf89af9f71f2b (patch)
treeeb26cf24b22303d73a7a2ee824e273ced21556d4 /xsde/cxx/hybrid/generator.cxx
parentc5e3c6ee3e291a5dfc6670160677f4962d526dc4 (diff)
Generate "weak" includes in the serializer implementation source file
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);