From 956fab80f55ba64a15e736a8ccdbf89af9f71f2b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 25 Nov 2010 15:34:52 +0200 Subject: Generate "weak" includes in the serializer implementation source file --- xsde/cxx/hybrid/generator.cxx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'xsde/cxx/hybrid/generator.cxx') 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 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 ()); NarrowString cxx_suffix (ops.value ()); + NarrowString hxx_obj_regex ( + find_value (ops.value (), "")); + NarrowString hxx_skel_regex ( find_value (ops.value (), "sskel")); NarrowString hxx_regex ( @@ -2547,6 +2550,14 @@ namespace CXX NarrowString cxx_regex ( find_value (ops.value (), "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); -- cgit v1.1