diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-11-25 15:34:52 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-11-25 15:34:52 +0200 |
commit | 956fab80f55ba64a15e736a8ccdbf89af9f71f2b (patch) | |
tree | eb26cf24b22303d73a7a2ee824e273ced21556d4 /xsde/cxx/hybrid/generator.cxx | |
parent | c5e3c6ee3e291a5dfc6670160677f4962d526dc4 (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.cxx | 17 |
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); |