📄 classes.h
字号:
} \
void SetAt (int nIndex, type_name element) \
{ \
if (nIndex >= 0 && nIndex < GetCount ()) \
((type_name*)m_pData) [nIndex] = element; \
} \
void Append (const ary_class_name& src) \
{ \
EF_MiniMem::Append (src.GetPtr (), src.GetSize ()); \
} \
void Append (const ary_class_name* src) \
{ \
EF_MiniMem::Append (src->GetPtr (), src->GetSize ()); \
} \
void Copy (ary_class_name& src) \
{ \
EF_MiniMem::CopyFrom (src); \
} \
void Add (type_name element) \
{ \
EF_MiniMem::Append ((EFByte*)&element, sizeof (type_name)); \
} \
void InsertAt (int nIndex, type_name element) \
{ \
EF_MiniMem::Insert (nIndex * sizeof (type_name), (EFByte*)&element, sizeof (type_name)); \
} \
void RemoveAt (int nIndex, int nCount = 1) \
{ \
EF_MiniMem::Remove (nIndex * sizeof (type_name), sizeof (type_name) * nCount); \
} \
int Find (type_name data) \
{ \
int nCount = GetCount (); \
type_name* p = (type_name*)m_pData; \
for (int i = 0; i < nCount; i++, p++) \
{ \
if (*p == data) \
return i; \
} \
return -1; \
} \
};
_EF_DEFINE_C_ARRAY_CLASS (EFInt, EF_IntArray)
_EF_DEFINE_C_ARRAY_CLASS (EFDWord, EF_DWordArray)
_EF_DEFINE_C_ARRAY_CLASS (void*, EF_PtrArray)
class EF_CString
{
public:
EF_CString () { }
EF_CString (const EF_CString& stringSrc);
EF_CString (EFChar* ps);
EF_CString (EFChar ch);
EF_CString (EFChar* ps, int nLen)
{
SetText (ps, nLen);
}
public:
EFDWord GetHash ();
int GetLength () const;
EFBool IsEmpty () const;
void Empty ();
EFChar* Detach ();
void xchg (EF_CString& str)
{
m_mem.xchg (str.m_mem);
}
int myicmp (EFChar* ps);
int mycmp (EFChar* ps);
operator EFChar* () { return m_mem.IsEmpty () ? EF_EMPTY_SZ_TEXT : (EFChar*)m_mem.GetPtr (); }
operator const EFChar*() { return m_mem.IsEmpty () ? EF_EMPTY_SZ_TEXT : (const EFChar*)m_mem.GetPtr (); }
EFChar* GetText () { return m_mem.IsEmpty () ? EF_EMPTY_SZ_TEXT : (EFChar*)m_mem.GetPtr (); }
const EF_CString& operator=(const EF_CString& stringSrc);
const EF_CString& operator=(EFChar ch);
const EF_CString& operator=(EFChar* ps);
const EF_CString& operator+=(const EF_CString& string);
const EF_CString& operator+=(EFChar ch);
const EF_CString& operator+=(EFChar* ps);
void RemoveChar (int nIndex, int nLen = 1);
void InsertChar (int nIndex, EFChar ch);
void AddChar (EFChar ch);
void AddText (EFChar* ps);
void AddText (EFChar* ps, int nLen);
void InsertText (int nIndex, EFChar* ps);
void InsertText (int nIndex, EFChar* ps, int nLen);
void SetText (EFChar* ps);
void SetText (EFChar* ps, int nLen);
#ifdef _UNICODE
void SetText (char* ps, int nLen = -1);
#endif
void SetDouble (EFDouble db);
// simple sub-string extraction
EF_CString Left (int nCount) const;
EF_CString Right (int nCount) const;
// upper/lower/reverse conversion
void MakeUpper ();
void MakeLower ();
// trimming whitespace (either side)
void TrimRight ();
void TrimLeft ();
EFBool EndOf (EFChar* ps);
EFBool IEndOf (EFChar* ps);
int GetTextPartDataSize () const;
void Format (EFChar* szFormat, ...);
void FormatV (EFChar* szFormat, va_list argList);
public:
EF_MiniMem m_mem;
};
EF_CString operator+(const EF_CString& string1, const EF_CString& string2);
EF_CString operator+(const EF_CString& string, EFChar ch);
EF_CString operator+(const EF_CString& string, EFChar* ps);
EF_CString operator+(EFChar* ps, const EF_CString& string);
EF_CString operator+(EFChar ch, const EF_CString& string);
EFBool operator==(const EF_CString& s1, const EF_CString& s2);
EFBool operator==(const EF_CString& s1, EFChar* s2);
EFBool operator==(EFChar* s1, const EF_CString& s2);
EFBool operator!=(const EF_CString& s1, const EF_CString& s2);
EFBool operator!=(const EF_CString& s1, EFChar* s2);
EFBool operator!=(EFChar* s1, const EF_CString& s2);
//not use?
//#define DEFINE_ETEXT_VAR(text_var_name) EF_CString text_var_name (sizeof (EFInt))
////////////////////////////////////////////////////////////////////////
class EF_CStringArray : public EF_MiniMem
{
public:
EF_CStringArray () { }
virtual ~EF_CStringArray ()
{
RemoveAll ();
}
int GetCount ()
{
return GetSize () / sizeof (EFChar*);
}
int GetUpperBound ()
{
return GetCount () - 1;
}
void RemoveAll ();
EFChar** GetData () const
{
return (EFChar**)GetPtr ();
}
EFChar* GetAt (int nIndex) const
{
EFChar* ps = ((EFChar**)m_pData) [nIndex];
return ps == NULL ? EF_EMPTY_SZ_TEXT : ps;
}
EFChar* operator[] (int nIndex) const
{
EFChar* ps = ((EFChar**)m_pData) [nIndex];
return ps == NULL ? EF_EMPTY_SZ_TEXT : ps;
}
void Append (EF_CStringArray& src);
void Copy (EF_CStringArray& src);
void RemoveAt (int nIndex, int nCount = 1);
void SetAt (int nIndex, EFChar* szElement);
void Add (EFChar* szElement);
void Add (EFChar* szElement, int nLen);
void InsertAt (int nIndex, EFChar* szElement);
void InsertAt (int nIndex, EFChar* szElement, int nLen);
#ifdef _UNICODE
void SetAt (int nIndex, char* szElement);
void Add (char* szElement);
void InsertAt (int nIndex, char* szElement);
#endif
void SetAt_NoClone (int nIndex, EFChar* szElement);
void Add_NoClone (EFChar* szElement);
void InsertAt_NoClone (int nIndex, EFChar* szElement);
void Append_NoClone (EF_CStringArray& src); // src will be emptied
void Append_NoClone (EF_CStringArray* psrc); // psrc will be emptied
void Copy_NoClone (EF_CStringArray& src); // src will be emptied
void RemoveAt_NotDelete (int nIndex, int nCount = 1);
int Find (EFChar* ps);
};
#endif //__EF_CLASSES_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -