mirror of
https://github.com/ENSL/NS.git
synced 2024-11-30 08:20:56 +00:00
79 lines
1.5 KiB
C++
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
|