NS/main/source/util/CString.h
2018-04-29 22:14:05 -07:00

79 lines
1.5 KiB
C++

#ifndef C_STRING_H
#define C_STRING_H
#include <stdio.h>
#include <string.h>
#include <string>
#include <vector>
using std::string;
using std::vector;
// Include C-style strings for those functions that can't handle it <sigh>
// Half-life keeps pointers to strings and assumes they don't change, meaning
// that STL strings can't be used. What a hack.
class CString
{
public:
#define kMaxCStrLen 256
CString()
{
memset(this->mString, 0, kMaxCStrLen);
}
operator char*()
{
return this->mString;
}
operator const char*() const
{
return this->mString;
}
void operator =(const string& inString)
{
sprintf_s(this->mString, sizeof(this->mString), "%s", inString.c_str());
}
void operator =(const CString& inString)
{
sprintf_s(this->mString, sizeof(this->mString), "%s", inString.mString);
}
bool operator ==(const CString& inString) const
{
bool theAreEqual = false;
if(!strcmp(this->mString, inString.mString))
{
theAreEqual = true;
}
return theAreEqual;
}
bool operator ==(const string& inString) const
{
bool theAreEqual = false;
if(!strcmp(this->mString, inString.c_str()))
{
theAreEqual = true;
}
return theAreEqual;
}
int GetMaxLength()
{
return kMaxCStrLen;
}
private:
char mString[kMaxCStrLen];
#undef kMaxCStrLen
};
typedef vector<CString> CStringList;
#endif