-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBWString.h
69 lines (59 loc) · 2.13 KB
/
BWString.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
#ifndef __BWLIB__BWString__
#define __BWLIB__BWString__
#ifdef _MSC_VER
// disable _s warnings
#define _CRT_SECURE_NO_WARNINGS
// disable pragma warnings
#pragma warning( disable : 4068 )
#include "bw_msposix.h"
#endif
#include <cstdlib>
#include <cstring>
#include <cstdarg>
#include <string>
#include <vector>
#define __BWString__VERSION "1.2.11"
#define __BWString__MAX_LEN 65535
// simple smart C-string
class BWString {
char * _str = nullptr;
size_t _str_len = 0;
public:
static const char * version() { return __BWString__VERSION; }
BWString(); // default constructor
BWString( const char * s );
BWString( const BWString & ); // copy constructor
~BWString();
const char * alloc_str( size_t sz ); // smart alloc string
void reset(); // frees the string
const char * value() const; // getter (legacy)
const char * c_str() const; // getter
const char * copy_str( const char * ); // alloc & copy
// operators
BWString & operator = ( const char * ); // assignment operator
BWString & operator = ( const BWString & ); // assignment operator
BWString & operator += ( const char * ); // concatenation operator
BWString & operator += ( const BWString & rhs ); // concatenation operator
// comparisons
bool operator == ( const BWString & ) const;
bool operator != ( const BWString & ) const;
bool operator > ( const BWString & ) const;
bool operator < ( const BWString & ) const;
bool operator >= ( const BWString & ) const;
bool operator <= ( const BWString & ) const;
// conversion operators
operator const char * () const; // c-string type
operator std::string () const; // c++ string class
// utility methods
bool have_value() const;
size_t length() const;
BWString & format( const char * format, ... );
BWString & trim();
const char & last_char() const;
const std::vector<BWString> split( const char * match ) const;
const std::vector<BWString> split( const char * match, int max_split ) const;
const BWString & char_repl( const char & match, const char & repl );
};
// function overloads
BWString operator + ( const BWString & lhs, const BWString & rhs );
#endif /* defined(__BWLIB__BWString__) */