Files
mir_server/Gateway/srvlib/include/lang/lang_section.h

79 lines
1.6 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _LANG_SECTION_H_
#define _LANG_SECTION_H_
/************************************************************************
* <EFBFBD><EFBFBD><EFBFBD>԰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýڵ<EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ýڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>getType<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽΪʹ<EFBFBD><EFBFBD>MemoryContainer<char><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷţ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷš<EFBFBD>
*
************************************************************************/
class LangSection;
class LangSectionTable;
class LangSection
{
public:
enum ElementType
{
eInvalid,
ePacket, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
eText, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD>
};
public:
LangSection();
LangSection(MemoryContainer<char>*);
~LangSection();
//<2F><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
inline ElementType getType()
{
return type_;
}
//<2F><>ȡ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֵ
inline const char* getText()
{
return data_.str_;
}
//<2F><>ȡ<EFBFBD><C8A1>ΪsName<6D><65><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD><D6B0>ڵ<EFBFBD>
LangSection* getSection(const char* name);
//<2F><><EFBFBD>ýڵ<C3BD>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void setText(const char* str);
//<2F><><EFBFBD>ýڵ<C3BD>Ϊ<EFBFBD><CEAA><EFBFBD>ְ<EFBFBD>
void setPacket(size_t len);
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ㣬<DAB5><E3A3AC>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>setPacket<65><74><EFBFBD>õ<EFBFBD>ǰ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ְ<EFBFBD>
LangSection* addSection(const char* name);
protected:
//<2F><><EFBFBD>սڵ<D5BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
void clear();
//<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EBBAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>reallocʵ<63><CAB5><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA1A2>չ<EFBFBD>Լ<EFBFBD><D4BC>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
void* Realloc(void* p, size_t s);
protected:
ElementType type_; //<2F>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
union
{
char* str_;
LangSectionTable* pack_;
} data_; //<2F>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MemoryContainer<char>* alloctor_ptr_;
};
class LangSectionTable :
public BZHashTable<LangSection>
{
public:
typedef BZHashTable<LangSection> Inherited;
public:
LangSectionTable(size_t len);
~LangSectionTable();
};
#endif