added String constructor which takes (and clones) a ConstString
svn-id: r4918
This commit is contained in:
parent
f277bb9fcd
commit
22e2df20c2
2 changed files with 17 additions and 1 deletions
|
@ -37,6 +37,20 @@ String::String(const char *str)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String::String(const ConstString &str)
|
||||||
|
{
|
||||||
|
printf("String::String(const ConstString &str)\n");
|
||||||
|
_refCount = new int(1);
|
||||||
|
if (str._str) {
|
||||||
|
_capacity = _len = strlen(str._str);
|
||||||
|
_str = (char *)calloc(1, _capacity+1);
|
||||||
|
memcpy(_str, str._str, _len+1);
|
||||||
|
} else {
|
||||||
|
_capacity = _len = 0;
|
||||||
|
_str = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
String::String(const String &str)
|
String::String(const String &str)
|
||||||
{
|
{
|
||||||
++(*str._refCount);
|
++(*str._refCount);
|
||||||
|
|
|
@ -39,13 +39,14 @@ namespace ScummVM {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class ConstString {
|
class ConstString {
|
||||||
|
friend class String;
|
||||||
protected:
|
protected:
|
||||||
char *_str;
|
char *_str;
|
||||||
int _len;
|
int _len;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ConstString() : _str(0), _len(0) {}
|
ConstString() : _str(0), _len(0) {}
|
||||||
ConstString(const char *str) : _str((char*)str) { _len = str ? strlen(str) : 0;}
|
ConstString(const char *str) : _str((char*)str) { _len = str ? strlen(str) : 0; }
|
||||||
virtual ~ConstString() {}
|
virtual ~ConstString() {}
|
||||||
|
|
||||||
bool operator ==(const ConstString& x) const;
|
bool operator ==(const ConstString& x) const;
|
||||||
|
@ -71,6 +72,7 @@ protected:
|
||||||
public:
|
public:
|
||||||
String() : _capacity(0) { _refCount = new int(1); }
|
String() : _capacity(0) { _refCount = new int(1); }
|
||||||
String(const char *str);
|
String(const char *str);
|
||||||
|
String(const ConstString &str);
|
||||||
String(const String &str);
|
String(const String &str);
|
||||||
virtual ~String();
|
virtual ~String();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue