diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2017-05-02 21:26:58 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2017-05-02 23:55:21 +0300 |
commit | 424e315dfa9a78aebf0653c95f83fe6ed452dd8e (patch) | |
tree | 59759d1d4eac4096df104d4dbab24a531ada3399 /libstudxml/parser.txx | |
parent | 3d2b5b2a7064abe35614ebb32db03bd2881adcf0 (diff) |
Add hxx extension for headers and libstud prefix for library dir
Diffstat (limited to 'libstudxml/parser.txx')
-rw-r--r-- | libstudxml/parser.txx | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/libstudxml/parser.txx b/libstudxml/parser.txx new file mode 100644 index 0000000..11f9e7d --- /dev/null +++ b/libstudxml/parser.txx @@ -0,0 +1,43 @@ +// file : libstudxml/parser.txx +// copyright : Copyright (c) 2013-2017 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#include <libstudxml/value-traits.hxx> + +namespace xml +{ + template <typename T> + T parser:: + attribute (const qname_type& qn, const T& dv) const + { + if (const element_entry* e = get_element ()) + { + attribute_map_type::const_iterator i (e->attr_map_.find (qn)); + + if (i != e->attr_map_.end ()) + { + if (!i->second.handled) + { + i->second.handled = true; + e->attr_unhandled_--; + } + return value_traits<T>::parse (i->second.value, *this); + } + } + + return dv; + } + + template <typename T> + T parser:: + element (const qname_type& qn, const T& dv) + { + if (peek () == start_element && qname () == qn) + { + next (); + return element<T> (); + } + + return dv; + } +} |