16,472
社区成员
发帖
与我相关
我的任务
分享
#define PROPERTY(T,X) __declspec(property(get= Get##X,put= Set##X))T X
#define READONLY_PROPERTY(T,X) __declspec(property(get= Get##X))T X //只读属性
#define SETPROP(T,X) __declspec(property(put= Set##X))T X //只写属必
#define GET(T,X) T Get##X(void)
#define SET(T,X) void Set##X(T value)
typedef struct _TagStringData{
int iRefCount;
int iSize;
char* sData;
}TStringData, * PStringData;
class string
{
private:
PStringData FMemory;
//int FRefCount;
int FCapacity;
int FLength;
wchar_t* FBufW;
void Grow();
//void Decrease();
GET(int,Capacity);
SET(int,Capacity);
public:
string();
string(const char s[]);
string(HWND Hwnd);
~string();
string operator + (const char s[]);
string operator + (char* s);
string operator + (char c);
string operator + (string s);
string operator = (const string * s);
string operator = (string s);
string operator = (char * s);
string operator = (const char s[]);
public:
PROPERTY(int, Capacity);
PROPERTY(int, Length);
#ifdef UNICODE
READONLY_PROPERTY(wchar_t*, buffer);
GET(wchar_t*,buffer);
#else
READONLY_PROPERTY(char*, buffer);
GET(char*,buffer);
#endif
READONLY_PROPERTY(char*, bufferA);
READONLY_PROPERTY(wchar_t*, bufferW);
GET(char*,bufferA);
GET(wchar_t*,bufferW);
GET(int,Length);
SET(int,Length);
};