1 //////////////////////////////////////////////////////////////////////
2 //
3 //  FILE:       dstring.h
4 //              Dynamic String class
5 //
6 //  Part of:    Scid (Shane's Chess Information Database)
7 //  Version:    2.2
8 //
9 //  Notice:     Copyright (c) 2000  Shane Hudson.  All rights reserved.
10 //
11 //  Author:     Shane Hudson (sgh@users.sourceforge.net)
12 //
13 //////////////////////////////////////////////////////////////////////
14 
15 #ifndef SCID_DSTRING_H
16 #define SCID_DSTRING_H
17 
18 #include <stdio.h>
19 #include <string>
20 
21 class DString { // DEPRECATED
22 	std::string s_;
23 
24 public:
Clear()25 	void Clear() { s_.clear(); }
26 
Data()27 	const char* Data() { return s_.c_str(); }
28 
Length(void)29 	size_t Length(void) { return s_.size(); }
30 
AddChar(char ch)31 	void AddChar(char ch) { s_.append(1, ch); }
32 
AppendUint(uint i)33 	void AppendUint(uint i) {
34 		char s[16];
35 		sprintf(s, "%u", i);
36 		s_.append(s);
37 	}
38 
AppendInt(int i)39 	void AppendInt(int i) {
40 		char s[16];
41 		sprintf(s, "%d", i);
42 		s_.append(s);
43 	}
44 
Append(uint i)45 	void Append(uint i) { AppendUint(i); }
46 
Append(const char * str)47 	void Append(const char* str) { s_.append(str); }
48 
49 	// To allow convenient appending of multiple strings without resorting
50 	// to messy variable-length argument lists, we define DString::Append()
51 	// for up to five string arguments, and for up to four arguments where
52 	// one is an unsigned integer and the rest are strings.
Append(const char * s1,const char * s2)53 	void Append(const char* s1, const char* s2) {
54 		Append(s1);
55 		Append(s2);
56 	}
Append(const char * s1,uint i2)57 	void Append(const char* s1, uint i2) {
58 		Append(s1);
59 		Append(i2);
60 	}
Append(uint i1,const char * s2)61 	void Append(uint i1, const char* s2) {
62 		Append(i1);
63 		Append(s2);
64 	}
Append(const char * s1,const char * s2,const char * s3)65 	void Append(const char* s1, const char* s2, const char* s3) {
66 		Append(s1);
67 		Append(s2);
68 		Append(s3);
69 	}
Append(const char * s1,const char * s2,uint i3)70 	void Append(const char* s1, const char* s2, uint i3) {
71 		Append(s1);
72 		Append(s2);
73 		Append(i3);
74 	}
Append(const char * s1,uint i2,const char * s3)75 	void Append(const char* s1, uint i2, const char* s3) {
76 		Append(s1);
77 		Append(i2);
78 		Append(s3);
79 	}
Append(uint i1,const char * s2,const char * s3)80 	void Append(uint i1, const char* s2, const char* s3) {
81 		Append(i1);
82 		Append(s2);
83 		Append(s3);
84 	}
Append(const char * s1,const char * s2,const char * s3,const char * s4)85 	void Append(const char* s1, const char* s2, const char* s3,
86 	            const char* s4) {
87 		Append(s1);
88 		Append(s2);
89 		Append(s3);
90 		Append(s4);
91 	}
Append(const char * s1,const char * s2,const char * s3,uint i4)92 	void Append(const char* s1, const char* s2, const char* s3, uint i4) {
93 		Append(s1);
94 		Append(s2);
95 		Append(s3);
96 		Append(i4);
97 	}
Append(const char * s1,const char * s2,uint i3,const char * s4)98 	void Append(const char* s1, const char* s2, uint i3, const char* s4) {
99 		Append(s1);
100 		Append(s2);
101 		Append(i3);
102 		Append(s4);
103 	}
Append(const char * s1,uint i2,const char * s3,const char * s4)104 	void Append(const char* s1, uint i2, const char* s3, const char* s4) {
105 		Append(s1);
106 		Append(i2);
107 		Append(s3);
108 		Append(s4);
109 	}
Append(uint i1,const char * s2,const char * s3,const char * s4)110 	void Append(uint i1, const char* s2, const char* s3, const char* s4) {
111 		Append(i1);
112 		Append(s2);
113 		Append(s3);
114 		Append(s4);
115 	}
Append(const char * s1,const char * s2,const char * s3,const char * s4,const char * s5)116 	void Append(const char* s1, const char* s2, const char* s3, const char* s4,
117 	            const char* s5) {
118 		Append(s1);
119 		Append(s2);
120 		Append(s3);
121 		Append(s4);
122 		Append(s5);
123 	}
124 };
125 
126 #endif // SCID_DSTRING_H
127