BDS Public
Beam-lib  2.16.3
This is the Beam C++ class library.
BString.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * BString.h BString Handling
3  * T.Barnaby, BEAM Ltd, 29/10/91
4  * Copyright (c) 2012 All Right Reserved, Beam Ltd, http://www.beam.ltd.uk
5  *******************************************************************************
6  */
7 #ifndef BSTRING_H
8 #define BSTRING_H 1
9 
10 #include <BTypes.h>
11 #include <BRefData.h>
12 #include <BList.h>
13 #include <BArray.h>
14 #include <iostream>
15 
16 class BError;
17 
18 class BString {
19 public:
20  BString();
21  BString(const BString& string);
22  BString(const char* str);
23  BString(const char* str, unsigned int len);
24  BString(char ch);
25  BString(BInt v);
26  BString(BUInt v);
27  BString(BUInt64 v);
28  BString(double v);
29 
30  ~BString();
31 
32  static BString convert(char ch);
33  static BString convert(BInt value);
34  static BString convert(BUInt value);
35  static BString convert(double value, int eFormat = 0);
36  static BString convert(BUInt64 value);
37  static BString convertHex(BInt value);
38  static BString convertHex(BUInt value);
39 
40  BString copy() const;
41 
42  int len() const;
43  const char* retStr() const;
44  const char* str() const;
45  char* retStrDup() const;
46  int retInt() const;
47  unsigned int retUInt() const;
48  double retDouble() const;
49  BFloat64 retFloat64() const;
50 
51  int compare(const BString& string) const;
52  int compareWild(const BString& string) const;
53  int compareWildExpression(const BString& string) const;
54  int compareRegex(const BString& pattern, int ignoreCase = 0) const;
55  BString& truncate(int len);
56  BString& pad(int len);
57  void clear();
58 
59  BString& toUpper();
60  BString& toLower();
62  void removeNL();
63  BString justify(int leftMargin, int width);
64  BString fixedLen(int length, int rightJustify = 0);
65  BString firstLine();
66  BString translateChar(char ch, BString replace = " ");
67  BString reverse() const;
68 
69  BString subString(int start, int len) const;
70  int del(int start, int len);
71  int insert(int start, BString str);
72  int append(const BString& str);
73  BString add(const BString& str) const;
74  BString& printf(const char* fmt, ...) ;
75 
76  int find(char ch) const;
77  int find(BString str) const;
78  int findReverse(char ch) const;
79 
80  BString csvEncode() const;
81  BString& csvDecode(const BString str);
82 
83  BString base64Encode() const;
84  BError base64Decode(BString& str) const;
85 
86 
87  BList<BString> getTokenList(BString separators);
88  BList<BString> getTokenList(char separator);
89  BString removeSeparators(BString separators);
90  BString pullToken(BString terminators);
91  BString pullSeparators(BString separators);
92  BString pullWord();
93  BString pullLine();
94  BList<BString> split(char splitChar);
95 
96  // Filename operations
97  BString dirname();
98  BString basename();
100 
101  // Misc functions
102  BUInt32 hash() const;
103  char& get(int pos);
104  const char& get(int pos) const;
105 
106  /* Operator functions */
107  BString& operator=(const BString& string);
108  char& operator[](int pos);
109 
110  int operator==(const BString& s) const{
111  return (compare(s) == 0);
112  }
113  int operator==(const char* s) const{
114  return (compare(s) == 0);
115  }
116  int operator>(const BString& s) const{
117  return (compare(s) > 0);
118  }
119  int operator>(const char* s) const{
120  return (compare(s) > 0);
121  }
122  int operator<(const BString& s) const{
123  return (compare(s) < 0);
124  }
125  int operator<(const char* s) const{
126  return (compare(s) < 0);
127  }
128  int operator>=(const BString& s) const{
129  return (compare(s) >= 0);
130  }
131  int operator<=(const BString& s) const{
132  return (compare(s) <= 0);
133  }
134  int operator!=(const BString& s) const{
135  return (compare(s) != 0);
136  }
137  int operator!=(const char* s) const{
138  return (compare(s) != 0);
139  }
140  BString operator+(const BString& s) const {
141  return add(s);
142  }
143  BString operator+(const char* s) const {
144  return add(s);
145  }
147  *this = add(s);
148  return *this;
149  }
150  BString operator+=(const char* s){
151  *this = add(s);
152  return *this;
153  }
154 
155  /* Special operators */
156  BString operator+(char ch) const {
157  return add(convert(ch));
158  }
159  BString operator+(BInt i) const {
160  return add(convert(i));
161  }
163  return add(convert(i));
164  }
166  return add(convert(i));
167  }
168  operator const char* () const {
169  return retStr();
170  }
171 #ifdef QSTRING_H
172  // QT support
173  BString(const QString& str){
174 #if QT_VERSION >= 0x040000
175  init(str.toLatin1());
176 #else
177  init(str);
178 #endif
179  }
180 #ifndef ZAP
181  operator QString (){ // QString support
182  return QString(retStr());
183  }
184 #endif
185 #endif
186 
187  // For compatibility
188  BString field(int field) const;
189  char** fields();
190 
191 protected:
193 
194 private:
195  void init(const char* str);
196  int inString(int pos) const;
197  int isSpace(char ch) const;
198 };
199 
200 /* OStream Functions */
201 std::ostream& operator<<(std::ostream& o, BString& s);
202 std::istream& operator>>(std::istream& i, BString& s);
203 
204 #ifdef BLIST_H
205 typedef BList<BString> BStringList;
206 typedef BArray<BString> BStringArray;
207 
208 int bstringListinList(BStringList& l, BString s);
209 
210 BString blistToString(const BStringList& list);
211 BStringList bstringToList(BString str, int stripSpaces = 0);
212 BStringList charToList(const char** str);
213 
214 BString barrayToString(const BStringArray& list);
215 BStringArray bstringToArray(BString str, int stripSpaces = 0);
216 BStringArray charToArray(const char** str);
217 
218 #endif
219 
220 // String conversion functions
221 void toBString(BString& v, BString& s);
222 void toBString(BStringList& v, BString& s);
223 void toBString(BInt32& v, BString& s);
224 void toBString(BUInt32& v, BString& s);
225 void toBString(BUInt64& v, BString& s);
226 void toBString(BFloat64& v, BString& s);
227 void fromBString(BString& s, BString& v);
228 void fromBString(BString& s, BStringList& v);
229 void fromBString(BString& s, BInt32& v);
230 void fromBString(BString& s, BUInt32& v);
231 void fromBString(BString& s, BUInt64& v);
232 void fromBString(BString& s, BFloat64& v);
233 
234 // CString functions
235 inline char from_hex(char ch){
236  return isdigit(ch) ? ch - '0' : tolower(ch) - 'a' + 10;
237 }
238 
239 inline char to_hex(char code){
240  static char hex[] = "0123456789abcdef";
241  return hex[code & 15];
242 }
243 
244 char* bstrncpy(char* dest, const char* src, size_t n);
245 char* bstrtrim(char* str);
246 const char* intToString(char* str, BUInt strLen, int value, int base = 10);
247 const char* int64ToString(char* str, BUInt strLen, BInt64 value, int base = 10);
248 const char* floatToString(char *str, BUInt strLen, BFloat32 f, BUInt precision);
249 
250 #endif
BInt32 BInt
Definition: BTypes.h:29
void removeNL()
Remove if present NL from last char.
Definition: BString.cpp:354
BFloat64 retFloat64() const
Return string as a BFloat64.
Definition: BString.cpp:1035
int64_t BInt64
Definition: BTypes.h:22
BStringList charToList(const char **str)
Definition: BString.cpp:1248
BString operator+(const BString &s) const
Definition: BString.h:140
BString operator+(BUInt i) const
Definition: BString.h:162
int compare(const BString &string) const
Compare strings.
Definition: BString.cpp:926
BString firstLine()
Return first line.
Definition: BString.cpp:430
Definition: BString.h:18
char * bstrncpy(char *dest, const char *src, size_t n)
Definition: BString.cpp:1487
BString operator+(BInt i) const
Definition: BString.h:159
int operator>=(const BString &s) const
Definition: BString.h:128
Definition: BRefData.h:14
BString & csvDecode(const BString str)
Decode a string from CSV.
Definition: BString.cpp:468
float BFloat32
Definition: BTypes.h:24
BString()
Definition: BString.cpp:138
BString pullWord()
Pull a word out of the head of the string.
Definition: BString.cpp:896
BString translateChar(char ch, BString replace=" ")
Translate character converting them to the given string.
Definition: BString.cpp:434
BRefData * ostr
Definition: BString.h:192
int retInt() const
Return string as a int.
Definition: BString.cpp:1011
void fromBString(BString &s, BString &v)
Definition: BString.cpp:1338
const char * int64ToString(char *str, BUInt strLen, BInt64 value, int base=10)
Definition: BString.cpp:1404
int operator!=(const char *s) const
Definition: BString.h:137
BString justify(int leftMargin, int width)
Justify the string to the given width.
Definition: BString.cpp:364
BStringList bstringToList(BString str, int stripSpaces)
Definition: BString.cpp:1219
BString csvEncode() const
Encode a string for CSV.
Definition: BString.cpp:450
BString operator+(const char *s) const
Definition: BString.h:143
int bstringListinList(BStringList &list, BString s)
Definition: BString.cpp:1194
uint64_t BUInt64
Definition: BTypes.h:23
BString base64Encode() const
Encode a string to base64.
Definition: BString.cpp:485
BString & pad(int len)
Pad to length len.
Definition: BString.cpp:312
double BFloat64
Definition: BTypes.h:25
BString dirname()
Definition: BString.cpp:1124
const char * intToString(char *str, BUInt strLen, int value, int base=10)
Definition: BString.cpp:1362
BString pullToken(BString terminators)
Pull token from start of string.
Definition: BString.cpp:819
static BString convertHex(BInt value)
Converts int to string as hex value.
Definition: BString.cpp:265
int operator<(const char *s) const
Definition: BString.h:125
BString & toLower()
Convert to lowercase.
Definition: BString.cpp:333
double retDouble() const
Return string as a double.
Definition: BString.cpp:1027
BString basename()
Definition: BString.cpp:1135
~BString()
Definition: BString.cpp:131
int operator==(const BString &s) const
Definition: BString.h:110
BString fixedLen(int length, int rightJustify=0)
return string formated to fixed length
Definition: BString.cpp:400
BError base64Decode(BString &str) const
Decode a string from base64.
Definition: BString.cpp:544
static BString convert(char ch)
Converts char to string.
Definition: BString.cpp:222
BString operator+(char ch) const
Definition: BString.h:156
BString barrayToString(const BStringArray &list)
Definition: BString.cpp:1258
BString pullLine()
Pull a line out of the head of the string.
Definition: BString.cpp:901
int find(char ch) const
Find ch in string searching forwards.
Definition: BString.cpp:683
void clear()
Clear the string.
Definition: BString.cpp:305
int operator>(const char *s) const
Definition: BString.h:119
char ** fields()
Definition: BString.cpp:768
BString & operator=(const BString &string)
Definition: BString.cpp:1073
BString operator+=(const char *s)
Definition: BString.h:150
int operator<(const BString &s) const
Definition: BString.h:122
int32_t BInt32
Definition: BTypes.h:20
BString operator+(BUInt64 i) const
Definition: BString.h:165
const char * floatToString(char *str, BUInt strLen, BFloat32 f, BUInt precision)
Definition: BString.cpp:1446
int compareRegex(const BString &pattern, int ignoreCase=0) const
Compare strings.
Definition: BString.cpp:963
BString pullSeparators(BString separators)
Pull separators from start of string.
Definition: BString.cpp:877
unsigned int retUInt() const
Return string as a int.
Definition: BString.cpp:1019
BString & toUpper()
Convert to uppercase.
Definition: BString.cpp:322
BList< BString > split(char splitChar)
Split string into an array based on the character separator.
Definition: BString.cpp:905
BString subString(int start, int len) const
Returns substring.
Definition: BString.cpp:604
BUInt32 BUInt
Definition: BTypes.h:30
uint32_t BUInt32
Definition: BTypes.h:21
BString blistToString(const BStringList &list)
Definition: BString.cpp:1206
char from_hex(char ch)
Definition: BString.h:235
const char * str() const
Ptr to char* representation.
Definition: BString.cpp:992
BList< BString > getTokenList(BString separators)
Break string into tokens.
Definition: BString.cpp:791
int findReverse(char ch) const
Find ch in string searching backwards.
Definition: BString.cpp:702
int compareWild(const BString &string) const
Compare string to string with wildcards.
Definition: BString.cpp:933
int operator>(const BString &s) const
Definition: BString.h:116
char to_hex(char code)
Definition: BString.h:239
char & operator[](int pos)
Definition: BString.cpp:1111
BUInt32 hash() const
Definition: BString.cpp:1160
char * retStrDup() const
Ptr to newly malloc'd char*.
Definition: BString.cpp:1001
BString field(int field) const
Definition: BString.cpp:718
int operator<=(const BString &s) const
Definition: BString.h:131
BString copy() const
Return an independant copy.
Definition: BString.cpp:279
std::ostream & operator<<(std::ostream &o, BString &s)
Definition: BString.cpp:1181
int len() const
Length of string.
Definition: BString.cpp:286
char * bstrtrim(char *str)
Definition: BString.cpp:1495
void toBString(BString &v, BString &s)
Definition: BString.cpp:1313
int insert(int start, BString str)
Insert substring.
Definition: BString.cpp:648
BString & truncate(int len)
Truncate to length len.
Definition: BString.cpp:294
BString removeSeparators(BString separators)
Remove any char from sepatators from string.
Definition: BString.cpp:851
int del(int start, int len)
Delete substring.
Definition: BString.cpp:628
const char * retStr() const
Ptr to char* representation.
Definition: BString.cpp:983
char & get(int pos)
Definition: BString.cpp:1085
int operator==(const char *s) const
Definition: BString.h:113
BString & printf(const char *fmt,...)
Formated print into the string.
Definition: BString.cpp:663
BString lowerFirst()
Return string with lowercase first character.
Definition: BString.cpp:344
Definition: BError.h:25
int compareWildExpression(const BString &string) const
Compare string to space deliminated patterns.
Definition: BString.cpp:940
BString add(const BString &str) const
Add strings returning result.
Definition: BString.cpp:1059
int append(const BString &str)
Append a string.
Definition: BString.cpp:1043
BUInt32 length
Definition: BFirmware.h:54
BStringArray bstringToArray(BString str, int stripSpaces)
Definition: BString.cpp:1271
std::istream & operator>>(std::istream &i, BString &s)
Definition: BString.cpp:1186
BString reverse() const
Reverse character order.
Definition: BString.cpp:592
int operator!=(const BString &s) const
Definition: BString.h:134
BString operator+=(const BString &s)
Definition: BString.h:146
BString extension()
Definition: BString.cpp:1150
BStringArray charToArray(const char **str)
Definition: BString.cpp:1301