CARMA C++
StrX.h
1 /*
2  * The Apache Software License, Version 1.1
3  *
4  * Copyright (c) 1999-2000 The Apache Software Foundation. All rights
5  * reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in
16  * the documentation and/or other materials provided with the
17  * distribution.
18  *
19  * 3. The end-user documentation included with the redistribution,
20  * if any, must include the following acknowledgment:
21  * "This product includes software developed by the
22  * Apache Software Foundation (http://www.apache.org/)."
23  * Alternately, this acknowledgment may appear in the software itself,
24  * if and wherever such third-party acknowledgments normally appear.
25  *
26  * 4. The names "Xerces" and "Apache Software Foundation" must
27  * not be used to endorse or promote products derived from this
28  * software without prior written permission. For written
29  * permission, please contact apache\@apache.org.
30  *
31  * 5. Products derived from this software may not be called "Apache",
32  * nor may "Apache" appear in their name, without prior written
33  * permission of the Apache Software Foundation.
34  *
35  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46  * SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of the Apache Software Foundation, and was
51  * originally based on software copyright (c) 1999, International
52  * Business Machines, Inc., http://www.ibm.com . For more information
53  * on the Apache Software Foundation, please see
54  * <http://www.apache.org/>.
55  */
56 
57 /*
58  * $Log: StrX.h,v $
59  * Revision 1.2 2004/06/11 18:02:42 abeard
60  * Fixed headers to new C++ style
61  *
62  * Revision 1.1 2004/06/11 17:56:02 abeard
63  * IMR configuration app - Files have been moved from util/imrConfig dir - now communicates and configs IMR
64  *
65  * Revision 1.1 2004/06/08 00:21:03 abeard
66  * Added carmaimr application to build - application is not done yet.
67  *
68  * Revision 1.5 2003/02/05 18:53:24 tng
69  * [Bug 11915] Utility for freeing memory.
70  *
71  * Revision 1.4 2000/03/02 19:53:49 roddey
72  * This checkin includes many changes done while waiting for the
73  * 1.1.0 code to be finished. I can't list them all here, but a list is
74  * available elsewhere.
75  *
76  * Revision 1.3 2000/02/11 02:47:15 abagchi
77  * Removed StrX::transcode
78  *
79  * Revision 1.2 2000/02/06 07:47:24 rahulj
80  * Year 2K copyright swat.
81  *
82  * Revision 1.1.1.1 1999/11/09 01:09:29 twl
83  * Initial checkin
84  *
85  * Revision 1.6 1999/11/08 20:43:41 rahul
86  * Swat for adding in Product name and CVS comment log variable.
87  *
88  */
89 
90 // ---------------------------------------------------------------------------
91 // Includes for all the program files to see
92 // ---------------------------------------------------------------------------
93 #include <string>
94 #include <iostream>
95 #include <stdlib.h>
96 #include "xercesc/framework/XMLFormatter.hpp"
97 
98 XERCES_CPP_NAMESPACE_USE
99 
100 
101 // ---------------------------------------------------------------------------
102 // This is a simple class that lets us do easy (though not terribly efficient)
103 // trancoding of XMLCh data to local code page for display.
104 // ---------------------------------------------------------------------------
105 class StrX
106 {
107 public :
108  // -----------------------------------------------------------------------
109  // Constructors and Destructor
110  // -----------------------------------------------------------------------
111  StrX(const XMLCh* const toTranscode)
112  {
113  // Call the private transcoding method
114  fLocalForm = XMLString::transcode(toTranscode);
115  }
116 
117  ~StrX()
118  {
119  XMLString::release(&fLocalForm);
120  }
121 
122  // -----------------------------------------------------------------------
123  // Getter methods
124  // -----------------------------------------------------------------------
125  const char* localForm() const
126  {
127  std::cout << "LOCALFORM" << std::endl;
128  return fLocalForm;
129  }
130 
131 private :
132  // -----------------------------------------------------------------------
133  // Private data members
134  //
135  // fLocalForm
136  // This is the local code page form of the string.
137  // -----------------------------------------------------------------------
138  char* fLocalForm;
139 };
140 
141 inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
142 {
143  target << toDump.localForm();
144  return target;
145 }
std::ostream & operator<<(::std::ostream &os, const carma::dbms::Table &table)