serializer.ixx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. // file : xml/serializer.ixx
  2. // copyright : Copyright (c) 2013-2014 Code Synthesis Tools CC
  3. // license : MIT; see accompanying LICENSE file
  4. #include <xml/value-traits>
  5. namespace xml
  6. {
  7. inline void serializer::
  8. start_element (const qname_type& qname)
  9. {
  10. start_element (qname.namespace_ (), qname.name ());
  11. }
  12. inline void serializer::
  13. start_element (const std::string& name)
  14. {
  15. start_element (std::string (), name);
  16. }
  17. inline void serializer::
  18. element (const std::string& v)
  19. {
  20. if (!v.empty ())
  21. characters (v);
  22. end_element ();
  23. }
  24. template <typename T>
  25. inline void serializer::
  26. element (const T& v)
  27. {
  28. element (value_traits<T>::serialize (v, *this));
  29. }
  30. inline void serializer::
  31. element (const std::string& n, const std::string& v)
  32. {
  33. element (std::string (), n, v);
  34. }
  35. template <typename T>
  36. inline void serializer::
  37. element (const std::string& n, const T& v)
  38. {
  39. element (n, value_traits<T>::serialize (v, *this));
  40. }
  41. inline void serializer::
  42. element (const qname_type& qn, const std::string& v)
  43. {
  44. element (qn.namespace_ (), qn.name (), v);
  45. }
  46. template <typename T>
  47. inline void serializer::
  48. element (const qname_type& qn, const T& v)
  49. {
  50. element (qn, value_traits<T>::serialize (v, *this));
  51. }
  52. template <typename T>
  53. inline void serializer::
  54. element (const std::string& ns, const std::string& n, const T& v)
  55. {
  56. element (ns, n, value_traits<T>::serialize (v, *this));
  57. }
  58. inline void serializer::
  59. start_attribute (const qname_type& qname)
  60. {
  61. start_attribute (qname.namespace_ (), qname.name ());
  62. }
  63. inline void serializer::
  64. start_attribute (const std::string& name)
  65. {
  66. start_attribute (std::string (), name);
  67. }
  68. inline void serializer::
  69. attribute (const qname_type& qname, const std::string& value)
  70. {
  71. attribute (qname.namespace_ (), qname.name (), value);
  72. }
  73. template <typename T>
  74. inline void serializer::
  75. attribute (const qname_type& qname, const T& value)
  76. {
  77. attribute (qname, value_traits<T>::serialize (value, *this));
  78. }
  79. inline void serializer::
  80. attribute (const std::string& name, const std::string& value)
  81. {
  82. attribute (std::string (), name, value);
  83. }
  84. template <typename T>
  85. inline void serializer::
  86. attribute (const std::string& name, const T& value)
  87. {
  88. attribute (name, value_traits<T>::serialize (value, *this));
  89. }
  90. template <typename T>
  91. inline void serializer::
  92. attribute (const std::string& ns, const std::string& name, const T& value)
  93. {
  94. attribute (ns, name, value_traits<T>::serialize (value, *this));
  95. }
  96. template <typename T>
  97. inline void serializer::
  98. characters (const T& value)
  99. {
  100. characters (value_traits<T>::serialize (value, *this));
  101. }
  102. }