From 2615896faa646e5830abf2c269150e1165c66515 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 18 Dec 2020 18:48:46 +0300 Subject: Switch to build2 --- libxsd/libxsd/cxx/tree/element-map.txx | 69 ++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 libxsd/libxsd/cxx/tree/element-map.txx (limited to 'libxsd/libxsd/cxx/tree/element-map.txx') diff --git a/libxsd/libxsd/cxx/tree/element-map.txx b/libxsd/libxsd/cxx/tree/element-map.txx new file mode 100644 index 0000000..fba9206 --- /dev/null +++ b/libxsd/libxsd/cxx/tree/element-map.txx @@ -0,0 +1,69 @@ +// file : libxsd/cxx/tree/element-map.txx +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +namespace xsd +{ + namespace cxx + { + namespace tree + { + // element_map + // + template + void element_map:: + register_parser (const qualified_name& n, parser p) + { + (*map_)[n].parser_ = p; + } + + template + void element_map:: + register_serializer (const qualified_name& n, serializer s) + { + (*map_)[n].serializer_ = s; + } + + // element_map_init + // + template + element_map_init:: + element_map_init () + { + if (element_map::count_ == 0) + element_map::map_ = new typename element_map::map; + + ++element_map::count_; + } + + template + element_map_init:: + ~element_map_init () + { + if (--element_map::count_ == 0) + delete element_map::map_; + } + + // parser_init + // + template + parser_init:: + parser_init (const std::basic_string& name, + const std::basic_string& ns) + { + element_map::register_parser ( + xml::qualified_name (name, ns), &parser_impl); + } + + // serializer_init + // + template + serializer_init:: + serializer_init (const std::basic_string& name, + const std::basic_string& ns) + { + element_map::register_serializer ( + xml::qualified_name (name, ns), &serializer_impl); + } + } + } +} -- cgit v1.1