source: icXML/icXML-devel/tests/src/XSValueTest/XSValueTest.hpp @ 2733

Last change on this file since 2733 was 2733, checked in by cameron, 6 years ago

More path fixes.

File size: 3.5 KB
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*
19 * $Id: XSValueTest.hpp 470088 2006-11-01 20:35:12Z amassari $
20 */
21
22#if !defined(XSVALUE_TEST_HPP)
23#define XSVALUE_TEST_HPP
24
25// ---------------------------------------------------------------------------
26//  Includes for all the program files to see
27// ---------------------------------------------------------------------------
28#include <xercesc/util/XercesDefs.hpp>
29
30#if defined(XERCES_NEW_IOSTREAMS)
31#include <iostream>
32#else
33#include <iostream.h>
34#endif
35
36#include <icxercesc/util/XMLString.hpp>
37
38XERCES_CPP_NAMESPACE_USE
39
40// ---------------------------------------------------------------------------
41//  This is a simple class that lets us do easy (though not terribly efficient)
42//  trancoding of XMLCh data to local code page for display.
43// ---------------------------------------------------------------------------
44class StrX
45{
46public :
47    // -----------------------------------------------------------------------
48    //  Constructors and Destructor
49    // -----------------------------------------------------------------------
50    StrX(const XMLCh* const toTranscode)
51    {
52        fUnicodeForm = XMLString::replicate(toTranscode);
53        fLocalForm   = XMLString::transcode(toTranscode);
54    }
55
56    StrX(const char* const toTranscode)
57    {
58        // Call the private transcoding method
59        fLocalForm   = XMLString::replicate(toTranscode);
60        fUnicodeForm = XMLString::transcode(toTranscode);
61    }
62
63    ~StrX()
64    {
65        XMLString::release(&fLocalForm);
66        XMLString::release(&fUnicodeForm);
67    }
68
69    // -----------------------------------------------------------------------
70    //  Getter methods
71    // -----------------------------------------------------------------------
72    const char* localForm() const
73    {
74        return fLocalForm;
75    }
76
77    const XMLCh* unicodeForm() const
78    {
79        return fUnicodeForm;
80    }
81
82private :
83
84    // -----------------------------------------------------------------------
85    //  Unimplemented constructors and operators
86    // -----------------------------------------------------------------------
87    StrX(const StrX&);
88    StrX & operator=(const StrX &);
89
90    // -----------------------------------------------------------------------
91    //  Private data members
92    //
93    //  fLocalForm
94    //      This is the local code page form of the string.
95    //
96    //  fUnicodeForm
97    //      This is the Unicode XMLCh format of the string.
98    // -----------------------------------------------------------------------
99    XMLCh*   fUnicodeForm;
100    char*    fLocalForm;
101};
102
103#define UniForm(str) StrX(str).unicodeForm()
104#define LocForm(str) StrX(str).localForm()
105
106inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
107{
108    target << toDump.localForm();
109    return target;
110}
111
112#endif
Note: See TracBrowser for help on using the repository browser.