OOO330
[LibreOffice.git] / soltools / inc / simstr.hxx
blob883db0d96bdf48e190183aa3f42e059f76fd433f
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org. If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
26 ************************************************************************/
28 #ifndef SOLTOOLS_SIMSTR_HXX
29 #define SOLTOOLS_SIMSTR_HXX
32 class Simstr /// Simple string class.
34 // INTERFACE
35 public:
36 // LIFECYCLE
37 Simstr(
38 const char * str = 0);
39 Simstr( /** Creates Simstr out of a copy of the first
40 'nrOfBytes' bytes of 'anyBytes'.
41 Adds a '\0' at the end. */
42 const char * anybytes,
43 int nrOfBytes);
44 Simstr( /** Creates Simstr out of a copy of the described bytes within 'anyBytes'.
45 Adds a '\0' at the end. */
46 const char * anybytes,
47 int firstBytesPos,
48 int nrOfBytes );
49 Simstr( /// Creates Simstr of 'anzahl' times 'c'.
50 char c,
51 int anzahl);
52 Simstr(
53 const Simstr & S);
54 ~Simstr();
57 // OPERATORS
58 operator const char*() const;
60 Simstr & operator=(
61 const Simstr & S );
63 Simstr operator+(
64 const Simstr & S ) const;
65 Simstr & operator+=(
66 const Simstr & S );
67 Simstr & operator+=(
68 const char * s );
70 bool operator==(
71 const Simstr & S ) const;
72 bool operator!=(
73 const Simstr & S ) const;
74 bool operator<(
75 const Simstr & S ) const;
76 bool operator>(
77 const Simstr & S ) const;
78 bool operator<=(
79 const Simstr & S ) const;
80 bool operator>=(
81 const Simstr & S ) const;
82 // INFO
83 static const Simstr &
84 null_();
86 const char * str() const;
87 int l() const; // Length of string without '\0' at end.
88 char * s(); // ATTENTION !!! // Only to be used, when a function needs a 'char*' but
89 // nevertheless THAT WILL BE NOT CHANGED!
90 // Typecasts to 'const char*' are performed automatically.
91 char get(
92 int n) const;
93 char get_front() const;
94 char get_back() const;
95 Simstr get(
96 int startPos,
97 int anzahl ) const;
98 Simstr get_front(
99 int anzahl ) const;
100 Simstr get_back(
101 int anzahl ) const;
103 int pos_first(
104 char c ) const;
105 int pos_first_after(
106 char c,
107 int startSearchPos ) const;
108 int pos_last(
109 char c ) const;
110 int pos_first(
111 const Simstr & S ) const;
112 int pos_last(
113 const Simstr & S ) const;
114 int count(
115 char c ) const;
116 bool is_empty() const; // Only true if object == "".
117 bool is_no_text() const; // String may contain spaces or tabs.
119 Simstr get_first_token(
120 char c ) const;
121 Simstr get_last_token(
122 char c ) const;
124 // ACCESS
125 char & ch( /** Reference to sz[n]. Allows change of this char.
126 !!! No safety, if n is out of the allowed range! */
127 int n );
129 // OPERATIONS
130 void insert(
131 int pos,
132 char c );
133 void push_front(
134 char c );
135 void push_back(
136 char c );
137 void insert(
138 int pos,
139 const Simstr & S );
140 void push_front(
141 const Simstr & S );
142 void push_back(
143 const Simstr & S );
145 void remove(
146 int pos,
147 int anzahl = 1 );
148 void remove_trailing_blanks();
149 void pop_front(
150 int anzahl = 1 );
151 void pop_back(
152 int anzahl = 1 );
153 void rem_back_from(
154 int removeStartPos );
155 void remove_all(
156 char c );
157 void remove_all( // Starts search left.
158 const Simstr & S );
159 void strip(
160 char c ); // Removes all characters == c from front and back.
161 // c == ' ' removes also TABs !!!
162 void empty(); // Changes object to the value "".
164 void replace(
165 int pos,
166 char c );
167 void replace(
168 int startPos,
169 int anzahl,
170 const Simstr & S );
171 void replace_all(
172 char oldCh,
173 char newCh );
174 void replace_all(
175 const Simstr & oldS,
176 const Simstr & newS );
177 void to_lower();
179 Simstr take_first_token( /// Token is removed from the Simstr.
180 char c );
181 Simstr take_last_token( /// Token is removed from the Simstr.
182 char c );
183 private:
184 // DATA
185 char * sz;
186 int len;
189 // Simstr - char* / char - concatenations
190 Simstr operator+(const char * str, const Simstr & S);
191 Simstr operator+(const Simstr & S, const char * str);
192 Simstr operator+(char c, const Simstr & S);
193 Simstr operator+(const Simstr & S, char c);
195 // Simstr - char* - comparison operators
196 bool operator==(const Simstr & S, const char * str);
197 bool operator!=(const Simstr & S, const char * str);
198 bool operator<(const Simstr & S, const char * str);
199 bool operator>(const Simstr & S, const char * str);
200 bool operator<=(const Simstr & S, const char * str);
201 bool operator>=(const Simstr & S, const char * str);
202 bool operator==(const char * str, const Simstr & S);
203 bool operator!=(const char * str, const Simstr & S);
204 bool operator<(const char * str, const Simstr & S);
205 bool operator>(const char * str, const Simstr & S);
206 bool operator<=(const char * str, const Simstr & S);
207 bool operator>=(const char * str, const Simstr & S);
210 inline const char *
211 Simstr::str() const { return sz; }
212 inline char *
213 Simstr::s() { return sz; }
214 inline int
215 Simstr::l() const { return len; }
216 inline
217 Simstr::operator const char*() const { return sz; }
218 inline bool
219 Simstr::is_empty() const { return len == 0; }
222 #endif