⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classes.h

📁 易语言IDE源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
	    }                                                                                   \
	    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 + -