From 5e527213a2430bb3018e5eebd909aef294edf9b5 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 18 Dec 2020 18:48:46 +0300 Subject: Switch to build2 --- xsd/xsd/type-map/type-map.hxx | 178 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 xsd/xsd/type-map/type-map.hxx (limited to 'xsd/xsd/type-map/type-map.hxx') diff --git a/xsd/xsd/type-map/type-map.hxx b/xsd/xsd/type-map/type-map.hxx new file mode 100644 index 0000000..dd2ec2c --- /dev/null +++ b/xsd/xsd/type-map/type-map.hxx @@ -0,0 +1,178 @@ +// file : xsd/type-map/type-map.hxx +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#ifndef XSD_XSD_TYPE_MAP_TYPE_MAP_HXX +#define XSD_XSD_TYPE_MAP_TYPE_MAP_HXX + +#include + +#include + +#include + +namespace TypeMap +{ + typedef cutl::re::wregex Pattern; + + class Type + { + public: + Type (String const& xsd_name, + String const& cxx_ret_name, + String const& cxx_arg_name) + : xsd_name_ (xsd_name), + cxx_ret_name_ (cxx_ret_name), + cxx_arg_name_ (cxx_arg_name) + { + } + + Type (Pattern const& xsd_name, + String const& cxx_ret_name, + String const& cxx_arg_name) + : xsd_name_ (xsd_name), + cxx_ret_name_ (cxx_ret_name), + cxx_arg_name_ (cxx_arg_name) + { + } + + Pattern const& + xsd_name () const + { + return xsd_name_; + } + + String const& + cxx_ret_name () const + { + return cxx_ret_name_; + } + + String const& + cxx_arg_name () const + { + return cxx_arg_name_; + } + + private: + Pattern xsd_name_; + String cxx_ret_name_; + String cxx_arg_name_; + }; + + class Namespace + { + public: + Namespace (String const& xsd_name) + : xsd_name_ (xsd_name), has_cxx_name_ (false) + { + } + + Namespace (Pattern const& xsd_name) + : xsd_name_ (xsd_name), has_cxx_name_ (false) + { + } + + Namespace (Pattern const& xsd_name, String const& cxx_name) + : xsd_name_ (xsd_name), has_cxx_name_ (true), cxx_name_ (cxx_name) + { + } + + Namespace (Pattern const& xsd_name, + bool has_cxx_name, + String const& cxx_name) + : xsd_name_ (xsd_name), + has_cxx_name_ (has_cxx_name), + cxx_name_ (cxx_name) + { + } + + // + // + typedef std::vector Includes; + typedef Includes::const_iterator IncludesIterator; + + IncludesIterator + includes_begin () const + { + return includes_.begin (); + } + + IncludesIterator + includes_end () const + { + return includes_.end (); + } + + void + includes_push_back (String const& i) + { + includes_.push_back (i); + } + + // + // + typedef std::vector Types; + typedef Types::const_iterator TypesIterator; + + TypesIterator + types_begin () const + { + return types_.begin (); + } + + TypesIterator + types_end () const + { + return types_.end (); + } + + void + types_push_back (String const& xsd_type, + String const& cxx_ret_type, + String const& cxx_arg_type = L"") + { + types_.push_back (Type (xsd_type, cxx_ret_type, cxx_arg_type)); + } + + void + types_push_back (Pattern const& xsd_type, + String const& cxx_ret_type, + String const& cxx_arg_type = L"") + { + types_.push_back (Type (xsd_type, cxx_ret_type, cxx_arg_type)); + } + + // + // + Pattern const& + xsd_name () const + { + return xsd_name_; + } + + // + // + bool + has_cxx_name () const + { + return has_cxx_name_; + } + + String const& + cxx_name () const + { + return cxx_name_; + } + + private: + Includes includes_; + Types types_; + Pattern xsd_name_; + bool has_cxx_name_; + String cxx_name_; + }; + + typedef std::vector Namespaces; +} + +#endif // XSD_XSD_TYPE_MAP_TYPE_MAP_HXX -- cgit v1.1