Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
XString.cpp
Go to the documentation of this file.
1 /*
2  * XString: a simple class for translation between
3  * XMLCh strings and local coding
4  *
5  * Class implementation
6  * September 21, 2003
7  * Richard Jones
8  */
9 
10 #include "XString.hpp"
11 #include <iostream>
12 
13 int dumper = 0;
14 
16  : fStringCollection()
17 {}
18 
19 XString::XString(const XMLCh* const x)
20  : fStringCollection()
21 {
22  if (x)
23  {
24  char* str = xercesc::XMLString::transcode(x);
25  fStringCollection.push_back(str);
26  (std::string&)*this = str;
27  }
28 }
29 
30 XString::XString(const char* const s)
31  : fStringCollection()
32 {
33  if (s)
34  {
35  (std::string&)*this = s;
36  }
37 }
38 
40  : fStringCollection()
41 {
42  if (s.size())
43  {
44  (std::string&)*this = s;
45  }
46 }
47 
49  : fStringCollection()
50 {
51  (std::string&)*this = (std::string&)X;
52 }
53 
55 {
56  std::list<char*>::iterator iter;
57  for (iter = fStringCollection.begin();
58  iter != fStringCollection.end();
59  ++iter)
60  {
61  delete [] *iter;
62  }
63 }
64 
66 {
67  (std::string&)*this = (std::string&)X;
68  return *this;
69 }
70 
71 const XMLCh* XString::unicode_str()
72 {
73  XMLCh* ustr = xercesc::XMLString::transcode(this->c_str());
74  fStringCollection.push_back((char*)ustr);
75  return ustr;
76 }
77 
79 {
80  XString s(*this);
81  size_type p = s.find_last_of("/");
82  if (p != npos)
83  {
84  s = s.substr(p+1,s.size());
85  }
86  return s;
87 }
88 
90 {
91  std::cerr << ">>> XString dump:" << std::endl
92  << " >first the addresses: ";
93  std::list<char*>::iterator iter;
94  for (iter = fStringCollection.begin();
95  iter != fStringCollection.end();
96  ++iter)
97  {
98  void* x = *iter;
99  std::cerr << x << ",";
100  }
101  std::cerr << std::endl
102  << " >and now the strings: ";
103  for (iter = fStringCollection.begin();
104  iter != fStringCollection.end();
105  ++iter)
106  {
107  XMLCh* x = (XMLCh*)(*iter);
108  char* str = xercesc::XMLString::transcode(x);
109  std::cerr << str << ",";
110  }
111  std::cerr << std::endl;
112 }
~XString()
Definition: XString.cpp:54
void dump()
Definition: XString.cpp:89
char str[256]
Double_t x[NCHANNELS]
Definition: st_tw_resols.C:39
char string[256]
const XMLCh * unicode_str()
Definition: XString.cpp:71
XString(void)
Definition: XString.cpp:15
#define X(str)
Definition: hddm-c.cpp:83
XString & operator=(const XString &src)
Definition: XString.cpp:65
std::list< char * > fStringCollection
Definition: XString.hpp:42
int dumper
Definition: XString.cpp:13
const XString basename() const
Definition: XString.cpp:78