-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGXStringVector.h
163 lines (141 loc) · 7.33 KB
/
GXStringVector.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
//------------------------------------------------------------------------
/**
\file GXStringVector.h
\brief A vector of gxstrings which is a clone of std::vector<std::string>
\Date 2016-8-09
\Version 1.1.1608.9091
*/
//------------------------------------------------------------------------
#pragma once
#include "GXStringCPP.h"
#pragma pack(push, 8)
#if defined (_WIN32) || (defined (__GNUC__) && (defined (__linux__) || defined(__APPLE__)))
namespace std
{
template <class T> class allocator;
template <class T, class Allocator > class vector;
}
namespace GxIAPICPP
{
/**
\brief A vector of gxstrings which is a clone of std::vector<std::string>
*/
class GXIAPICPP_API gxstring_vector
{
// Nested types
// ---------------------------------------------------------------------------
public:
class GXIAPICPP_API const_iterator
{
// Ctor / Dtor
// -------------------------------------------------------------------------
public:
const_iterator ( gxstring *pStr = 0 );
// Operators
// -------------------------------------------------------------------------
public:
const gxstring & operator * ( void ) const;
const gxstring * operator -> ( void ) const;
const_iterator & operator ++ ( void );
const_iterator operator ++ ( int );
const_iterator & operator -- ( void );
const_iterator operator -- ( int );
const_iterator & operator += ( intptr_t iInc );
const_iterator operator + ( intptr_t iInc ) const;
const_iterator & operator -= ( intptr_t iDec );
intptr_t operator - ( const const_iterator &iter ) const;
const_iterator operator - ( intptr_t iDec ) const;
const gxstring & operator [] ( intptr_t iIndex ) const;
bool operator == ( const const_iterator &iter ) const;
bool operator != ( const const_iterator &iter ) const;
bool operator < ( const const_iterator &iter ) const;
bool operator > ( const const_iterator &iter ) const;
bool operator <= ( const const_iterator &iter ) const;
bool operator >= ( const const_iterator &iter ) const;
GXIAPICPP_API
friend const_iterator operator + ( intptr_t iInc, const const_iterator &iter);
// Member
// -------------------------------------------------------------------------
protected:
gxstring * _ps;
};
class GXIAPICPP_API iterator :
public const_iterator
{
// Ctor / Dtor
// -------------------------------------------------------------------------
public:
iterator ( gxstring *pStr = 0 );
// Operators
// -------------------------------------------------------------------------
public:
gxstring & operator * ( void ) const;
gxstring * operator -> ( void ) const;
iterator & operator ++ ( void );
iterator operator ++ ( int );
iterator & operator -- ( void );
iterator operator -- ( int );
iterator & operator += ( intptr_t iInc );
iterator operator + ( intptr_t iInc ) const;
iterator & operator -= ( intptr_t iDec );
intptr_t operator - ( const iterator &iter ) const;
iterator operator - ( intptr_t iDec ) const;
gxstring & operator [] ( intptr_t iIndex ) const;
GXIAPICPP_API
friend iterator operator + ( intptr_t iInc, const iterator &iter);
};
// Ctor / Dtor
// ---------------------------------------------------------------------------
public:
gxstring_vector ( void );
explicit gxstring_vector ( size_t uiSize, const gxstring &str = gxstring() );
gxstring_vector ( const gxstring_vector &obj);
virtual ~gxstring_vector ( void );
// Element access
// ---------------------------------------------------------------------------
public:
virtual void assign ( size_t n, const gxstring &val);
virtual void clear ( void );
virtual iterator erase ( iterator pos );
virtual gxstring & at ( size_t uiIndex );
virtual const gxstring & at ( size_t uiIndex ) const;
virtual gxstring & back ( void );
virtual const gxstring & back ( void ) const;
virtual iterator begin ( void );
virtual const_iterator begin ( void ) const;
virtual size_t capacity ( void ) const;
virtual iterator end ( void );
virtual const_iterator end ( void ) const;
virtual gxstring & front ( void );
virtual const gxstring & front ( void ) const;
virtual size_t max_size ( void ) const;
virtual size_t size ( void ) const;
virtual iterator insert ( iterator pos, const gxstring &str );
virtual bool empty ( void ) const;
virtual void pop_back ( void );
virtual void push_back ( const gxstring &str );
virtual void resize ( size_t uiSize, const gxstring &str = gxstring() );
virtual void reserve ( size_t uiSize );
// Do not use the methods below - they only exist for
// backwards compatibility
virtual gxstring_vector & assign ( const gxstring_vector &obj );
virtual void erase ( size_t uiIndex );
virtual void insert ( size_t uiIndex, const gxstring &str );
// Operators
// ---------------------------------------------------------------------------
public:
gxstring_vector & operator = ( const gxstring_vector &obj );
gxstring & operator [] ( size_t uiIndex );
const gxstring & operator [] ( size_t uiIndex ) const;
void operator delete ( void *pWhere );
void * operator new ( size_t uiSize );
// Member
// ---------------------------------------------------------------------------
private:
std::vector<gxstring, std::allocator<gxstring> > * const _pv;
};
}
#else
# error No known support for shared libraries
#endif
#pragma pack(pop)