VTK
vtkUnicodeString.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkUnicodeString.h
5
6-------------------------------------------------------------------------
7 Copyright 2008 Sandia Corporation.
8 Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9 the U.S. Government retains certain rights in this software.
10-------------------------------------------------------------------------
11
12 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
13 All rights reserved.
14 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
15
16 This software is distributed WITHOUT ANY WARRANTY; without even
17 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
18 PURPOSE. See the above copyright notice for more information.
19
20=========================================================================*/
21
50#ifndef vtkUnicodeString_h
51#define vtkUnicodeString_h
52
53#include "vtkCommonCoreModule.h" // For export macro
54#include "vtkSystemIncludes.h"
55#include <string>
56#include <vector>
57
59
60typedef vtkTypeUInt32 vtkUnicodeStringValueType;
61
62//
63// The following should be eventually placed in vtkSetGet.h
64//
65
66// This is same as extra extended template macro with an
67// additional case for VTK_UNICODE_STRING
68#define vtkSuperExtraExtendedTemplateMacro(call) \
69 vtkExtraExtendedTemplateMacro(call); \
70 vtkTemplateMacroCase(VTK_UNICODE_STRING, vtkUnicodeString, call)
71
72class VTKCOMMONCORE_EXPORT vtkUnicodeString
73{
74public:
76 typedef std::string::size_type size_type;
77
78 class VTKCOMMONCORE_EXPORT const_iterator
79 {
80 public:
81 typedef std::bidirectional_iterator_tag iterator_category;
83 typedef std::string::difference_type difference_type;
86
88
90 bool operator==(const const_iterator&) const;
91 bool operator!=(const const_iterator&) const;
96
97 private:
98 const_iterator(std::string::const_iterator);
99 friend class vtkUnicodeString;
100 std::string::const_iterator Position;
101 };
102
120
122
125 static bool is_utf8(const char*);
126 static bool is_utf8(const std::string&);
128
130
133 static vtkUnicodeString from_utf8(const char*);
134 // Constructs a string from a half-open sequence of UTF-8 encoded characters.
135 static vtkUnicodeString from_utf8(const char* begin, const char* end);
136 // Constructs a string from a sequence of UTF-8 encoded characters.
139
142 static vtkUnicodeString from_utf16(const vtkTypeUInt16*);
143
148
158
169
173 const char* utf8_str() const;
178 void utf8_str(std::string& result) const;
182 std::vector<vtkTypeUInt16> utf16_str() const;
187 void utf16_str(std::vector<vtkTypeUInt16>& result) const;
188
200 bool empty() const;
201
205 static const size_type npos;
206
215
220
222
226 void append(size_type count, value_type character);
229
231
235 void assign(size_type count, value_type character);
238
242 void clear();
243
253
261 int compare(const vtkUnicodeString&) const;
262
268
273
274private:
275 std::string Storage;
276 class back_insert_iterator;
277};
278
279VTKCOMMONCORE_EXPORT bool operator==(const vtkUnicodeString& lhs, const vtkUnicodeString& rhs);
280VTKCOMMONCORE_EXPORT bool operator!=(const vtkUnicodeString& lhs, const vtkUnicodeString& rhs);
281VTKCOMMONCORE_EXPORT bool operator<(const vtkUnicodeString& lhs, const vtkUnicodeString& rhs);
282VTKCOMMONCORE_EXPORT bool operator<=(const vtkUnicodeString& lhs, const vtkUnicodeString& rhs);
283VTKCOMMONCORE_EXPORT bool operator>=(const vtkUnicodeString& lhs, const vtkUnicodeString& rhs);
284VTKCOMMONCORE_EXPORT bool operator>(const vtkUnicodeString& lhs, const vtkUnicodeString& rhs);
285
286#endif
287
288// VTK-HeaderTest-Exclude: vtkUnicodeString.h
const_iterator operator++(int)
std::string::difference_type difference_type
std::bidirectional_iterator_tag iterator_category
const_iterator operator--(int)
bool operator==(const const_iterator &) const
bool operator!=(const const_iterator &) const
vtkUnicodeStringValueType value_type
String class that stores Unicode text.
vtkUnicodeString(const vtkUnicodeString &)
Makes a deep-copy of another sequence.
vtkUnicodeString()
Constructs an empty string.
void append(const_iterator begin, const_iterator end)
void swap(vtkUnicodeString &)
Swap the sequences stored by two strings.
const char * utf8_str() const
Returns the sequence as a null-terminated sequence of UTF-8 encoded characters.
static vtkUnicodeString from_utf16(const vtkTypeUInt16 *)
Constructs a string from a null-terminated sequence of UTF-16 encoded characters.
vtkUnicodeStringValueType value_type
bool empty() const
Returns true if the string contains an empty sequence.
vtkUnicodeString substr(size_type offset=0, size_type count=npos) const
Returns a subset of the current sequence that up-to 'count' characters in length, starting at charact...
vtkUnicodeString & operator+=(const vtkUnicodeString &rhs)
Append a Unicode sequence to the end of the current sequence.
void push_back(value_type)
Append a Unicode character to the end of the sequence.
static bool is_utf8(const std::string &)
void append(const vtkUnicodeString &value)
Append Unicode to the current sequence.
vtkUnicodeString & operator=(const vtkUnicodeString &)
Replaces the current sequence with a deep copy of another.
std::string::size_type size_type
void assign(const vtkUnicodeString &value)
Replace the current sequence with another.
vtkUnicodeString(const_iterator begin, const_iterator end)
Constructs a string from a sequence of Unicode characters.
void utf16_str(std::vector< vtkTypeUInt16 > &result) const
Inserts the sequence into the supplied storage as a collection of UTF-16 encoded characters.
vtkUnicodeString(size_type count, value_type character)
Constructs a sequence of repeated characters.
void append(size_type count, value_type character)
const_iterator end() const
Returns a forward iterator that points just beyond the end of the sequence.
value_type at(size_type offset) const
Returns the Unicode character at the given character offset within the sequence, or throws std::out_o...
static vtkUnicodeString from_utf8(const std::string &)
void assign(size_type count, value_type character)
static vtkUnicodeString from_utf8(const char *)
Constructs a string from a null-terminated sequence of UTF-8 encoded characters.
void utf8_str(std::string &result) const
Inserts the sequence into the supplied storage as a collection of UTF-8 encoded characters.
value_type operator[](size_type offset) const
Returns the Unicode character at the given character offset within the sequence.
std::vector< vtkTypeUInt16 > utf16_str() const
Returns the sequence as a collection of UTF-16 encoded characters.
int compare(const vtkUnicodeString &) const
Returns a negative value if the sequence compares less-than the operand sequence, zero if the two seq...
size_type character_count() const
Returns the number of characters (not bytes) in the sequence.
const_iterator begin() const
Returns a forward iterator that points at the first element of the sequence (or just beyond the end o...
static bool is_utf8(const char *)
Tests a sequence of bytes, returning true iff they are a valid UTF-8 sequence.
static const size_type npos
The largest representable value of size_type, used as a special-code.
void assign(const_iterator begin, const_iterator end)
static vtkUnicodeString from_utf8(const char *begin, const char *end)
vtkUnicodeString fold_case() const
Returns a copy of the current sequence, modified so that differences in case are eliminated.
vtkUnicodeString & operator+=(value_type)
Append a Unicode character to the end of the sequence.
size_type byte_count() const
Returns the number of bytes (not characters) in the sequence.
void clear()
Resets the string to an empty sequence.
@ value
Definition: vtkX3D.h:220
@ offset
Definition: vtkX3D.h:438
@ string
Definition: vtkX3D.h:490
VTKCOMMONCORE_EXPORT bool operator!=(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
vtkTypeUInt32 vtkUnicodeStringValueType
VTKCOMMONCORE_EXPORT bool operator==(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
VTKCOMMONCORE_EXPORT bool operator>(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
VTKCOMMONCORE_EXPORT bool operator<(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
VTKCOMMONCORE_EXPORT bool operator>=(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
VTKCOMMONCORE_EXPORT bool operator<=(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)