From 5ec1c8ff21b5c19e39d5bd12aa3a017a78b56b98 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 19 Feb 2010 10:31:47 +0200 Subject: Add support for translating schema paths in fpt mode New options: --schema-file-regex, --schema-file-regex-trace. --- xsd/cxx/parser/generator.cxx | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) (limited to 'xsd/cxx/parser/generator.cxx') diff --git a/xsd/cxx/parser/generator.cxx b/xsd/cxx/parser/generator.cxx index 60d2785..617ff4f 100644 --- a/xsd/cxx/parser/generator.cxx +++ b/xsd/cxx/parser/generator.cxx @@ -613,6 +613,7 @@ namespace CXX generate (Parser::CLI::Options const& ops, Schema& schema, Path const& file_path, + Boolean fpt, StringLiteralMap const& string_literal_map, Boolean gen_driver, const WarningSet& disabled_warnings, @@ -935,22 +936,13 @@ namespace CXX cxx_driver_path = Path (cxx_driver_name, boost::filesystem::native); } - if (NarrowString dir = ops.value ()) + Path out_dir; + + if (NarrowString dir = ops.value ()) { try { - Path path (dir, boost::filesystem::native); - - hxx_path = path / hxx_path; - ixx_path = path / ixx_path; - cxx_path = path / cxx_path; - - if (impl || driver) - { - hxx_impl_path = path / hxx_impl_path; - cxx_impl_path = path / cxx_impl_path; - cxx_driver_path = path /cxx_driver_path; - } + out_dir = Path (dir, boost::filesystem::native); } catch (InvalidPath const&) { @@ -959,6 +951,32 @@ namespace CXX } } + if (fpt && !generate_xml_schema) + { + // In the file-per-type mode the schema files are always local + // unless the user added the directory so that we propagate this + // to the output files. + // + Path fpt_dir (file_path.branch_path ()); + + if (!fpt_dir.empty ()) + out_dir /= fpt_dir; + } + + if (!out_dir.empty ()) + { + hxx_path = out_dir / hxx_path; + ixx_path = out_dir / ixx_path; + cxx_path = out_dir / cxx_path; + + if (impl || driver) + { + hxx_impl_path = out_dir / hxx_impl_path; + cxx_impl_path = out_dir / cxx_impl_path; + cxx_driver_path = out_dir /cxx_driver_path; + } + } + // Open the impl files first so that if open fails, the skel files // are not deleted. // -- cgit v1.1