CARMA C++
xercesUtils.h
1 #ifndef CARMA_UTIL_XERCESUTILS_H
2 #define CARMA_UTIL_XERCESUTILS_H
3 
4 #include <string>
5 #include <iostream>
6 
7 #include <xercesc/util/XMLString.hpp>
8 #include <xercesc/util/PlatformUtils.hpp>
9 
10 
11 namespace carma {
12 namespace util {
13 
14 
21 void xercesInit( );
22 
28 void xercesInit( ::xercesc::PanicHandler * panicHandler );
29 
30 
36 void xercesTerm( );
37 
38 
40 class XercesPanicHandler : public ::xercesc::PanicHandler {
41  public:
42  virtual void panic( PanicReasons reason );
43 };
44 
45 
48  public:
49  explicit AutoXMLString(const char * const orig);
50  explicit AutoXMLString(const XMLCh * const orig);
51  explicit AutoXMLString(const std::string & orig);
52 
53  /* virtual */ ~AutoXMLString();
54 
55  const char * get() const;
56 
57  ::std::string getString() const;
58 
59  const char * asCString() const;
60  const XMLCh * asXMLString() const;
61 
62  std::ostream& print(std::ostream & s) const;
63 
64  private:
65  // No copying
66  AutoXMLString(const AutoXMLString & rhs);
67  AutoXMLString & operator=(const AutoXMLString & rhs);
68 
69  char *text_;
70  XMLCh *xml_;
71 };
72 
73 
74 } // namespace carma::util
75 } // namespace carma
76 
77 inline std::ostream&
78 operator<<(std::ostream& s, const carma::util::AutoXMLString &obj)
79 {
80  return obj.print(s);
81 }
82 
83 inline
84 carma::util::AutoXMLString::AutoXMLString(const char * const orig)
85  : text_(xercesc::XMLString::replicate(orig))
86  , xml_(xercesc::XMLString::transcode(orig))
87 {
88  // intentionally left empty
89 }
90 
91 inline
92 carma::util::AutoXMLString::AutoXMLString(const XMLCh * const orig)
93  : text_(xercesc::XMLString::transcode(orig))
94  , xml_(xercesc::XMLString::replicate(orig))
95 {
96  // intentionally left empty
97 }
98 
99 inline
100 carma::util::AutoXMLString::AutoXMLString(const std::string &orig)
101  : text_(xercesc::XMLString::replicate(orig.c_str()))
102  , xml_(xercesc::XMLString::transcode(orig.c_str()))
103 {
104  // intentionally left empty
105 }
106 
107 inline
108 carma::util::AutoXMLString::~AutoXMLString()
109 {
110  xercesc::XMLString::release(&this->text_);
111  xercesc::XMLString::release(&this->xml_);
112 }
113 
114 inline const char *
115 carma::util::AutoXMLString::get() const
116 {
117  return this->text_;
118 }
119 
120 inline const char *
121 carma::util::AutoXMLString::asCString() const
122 {
123  return this->text_;
124 }
125 
126 inline const XMLCh *
127 carma::util::AutoXMLString::asXMLString() const
128 {
129  return this->xml_;
130 }
131 
132 inline ::std::string
133 carma::util::AutoXMLString::getString() const
134 {
135  return this->text_;
136 }
137 
138 inline std::ostream&
139 carma::util::AutoXMLString::print(std::ostream& s) const
140 {
141  s << this->text_;
142  return s;
143 }
144 
145 #endif
std::ostream & operator<<(::std::ostream &os, const carma::dbms::Table &table)
carma xerces panic handler that at least logs before dying
Definition: xercesUtils.h:40
void xercesInit()
Thread safe wrapper on xercesc::XMLPlatformUtils::Initialize.
auto cleanup class for xercesc::XMLString instances
Definition: xercesUtils.h:47
void xercesTerm()
Thread safe wrapper on xercesc::XMLPlatformUtils::Terminate.