Crazy Eddie's GUI System  0.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
StringTranscoder.h
1 /***********************************************************************
2  filename: StringTranscoder.h
3  created: Thu May 31 2012
4  author: Paul D Turner <paul@cegui.org.uk>
5 *************************************************************************/
6 /***************************************************************************
7  * Copyright (C) 2004 - 2012 Paul D Turner & The CEGUI Development Team
8  *
9  * Permission is hereby granted, free of charge, to any person obtaining
10  * a copy of this software and associated documentation files (the
11  * "Software"), to deal in the Software without restriction, including
12  * without limitation the rights to use, copy, modify, merge, publish,
13  * distribute, sublicense, and/or sell copies of the Software, and to
14  * permit persons to whom the Software is furnished to do so, subject to
15  * the following conditions:
16  *
17  * The above copyright notice and this permission notice shall be
18  * included in all copies or substantial portions of the Software.
19  *
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
24  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26  * OTHER DEALINGS IN THE SOFTWARE.
27  ***************************************************************************/
28 #ifndef _CEGUIStringTranscoder_h_
29 #define _CEGUIStringTranscoder_h_
30 
31 #include "CEGUI/String.h"
32 
33 namespace CEGUI
34 {
42 class CEGUIEXPORT StringTranscoder :
43  public AllocatedObject<StringTranscoder>
44 {
45 public:
57  virtual uint16* stringToUTF16(const String& input) const = 0;
58 
78  virtual std::wstring stringToStdWString(const String& input) const = 0;
79 
80  /*
81  \brief
82  Constructs a String object from the given null terminated UTF-16 encoded
83  buffer.
84 
85  \param input
86  Pointer to a null terminated array of uint16 values representing a
87  string encoded using UTF-16.
88 
89  \return
90  String object holding the transcoded data.
91  */
92  virtual String stringFromUTF16(const uint16* input) const = 0;
93 
94  /*
95  \brief
96  Constructs a String object from the given std::wstring.
97 
98  \param input
99  reference to a std::wstring object holding the string data to be
100  transcoded.
101 
102  \return
103  String object holding the transcoded data.
104 
105  \note
106  What is represented by std::wstring and how it should be interpreted is
107  implementation specific. This means that the content of the
108  std::wstring you pass must be consistent with what is expected given the
109  implementation. This largely means that on Microsoft Windows you will
110  use UTF-16 and on *nix type environments you will use UTF-32. Do NOT
111  assume that blithely passing what you think is UTF-16 data in a
112  std::wstring will work everywhere - because it wont.
113  */
114  virtual String stringFromStdWString(const std::wstring& input) const = 0;
115 
117  virtual void deleteUTF16Buffer(uint16* input) const = 0;
118 
119 protected:
120  virtual ~StringTranscoder() {}
121 };
122 
123 }
124 
125 #endif
126