89 Name.copy(pName, 0, std::strlen(pName));
94 Name.copy(pName, 0, len);
101 Value.copy(pValue, 0, std::strlen(pValue));
102 Value.hTMLCodesReplace();
107 Value.copy(pValue, 0, len);
108 Value.hTMLCodesReplace();
182 Name.copy((
char*)name, 0, std::strlen(name));
187 Name.copy((
char*)name, 0, len);
192 Value.copy((
char*)value, 0, std::strlen(value));
193 Value.hTMLCodesReplace();
199 Value.copy((
char*)value, 0, len);
200 Value.hTMLCodesReplace();
293 std::list<fsXmlNode*>::iterator RemoveNodeFromList(std::list<fsXmlNode*>& list,
294 const std::list<fsXmlNode*>::iterator& it);
296 fsXmlParser() : m_pDataInput(nullptr), m_pRoot(nullptr), Marker(nullptr), MarkerCount(0)
302 if (m_pDataInput !=
nullptr)
308 void SetVersion(
const char* version) { m_Version = version; }
317 fsAssert(
false,
"Error: Ran out of nodes, allocate more");
332 fsAssert(
false,
"Error: Ran out of tag markers, allocate more");
347 fsAssert(
false,
"Error: Ran out of attributes, allocate more");
374 if (parent ==
nullptr)
378 if (parent !=
nullptr)
380 if (m_pRoot !=
nullptr)
390 if (parent ==
nullptr)
395 if (parent !=
nullptr)
397 else if (m_pRoot !=
nullptr)
398 m_pRoot->GetNamedNodes(node_name, hash, pNodes);
411 const char* GetCloseTagName(
fsXmlNode* node)
const;
414 int GetNextWord(
const char* data,
int& offset);
415 int GetNextQuotedWord(
const char* data,
int& offset);
429 static void PoolsInit(
int node_pool_size = 2048,
int tag_pool_size = 2048,
int attribute_pool_size = 4096)
Definition fsCResourceName.h:32
static fsU32 idCalculate(const fsStr &pString)
Definition fsCUniqueId.cpp:9
Definition fsCXmlFileReader.h:33
static void PoolsInit(int node_pool_size=2048, int tag_pool_size=2048, int attribute_pool_size=4096)
Definition fsCXml.h:429
static int NextFreePoolTagIndex
Definition fsCXml.h:420
static int NextFreePoolAttributeIndex
Definition fsCXml.h:426
static fsXmlNode * NodePool
Definition fsCXml.h:422
static int MaxPoolNodes
Definition fsCXml.h:424
static fsXmlTagMarker * TagPool
Definition fsCXml.h:419
const char * GetErrorString(eVpXmlParserError error) const
Definition fsCXml.cpp:627
fsXmlNode * GetFirstNamedNode(fsXmlNode *parent, const char *node_name)
Definition fsCXml.h:372
static fsXmlTagMarker * AllocTag()
Definition fsCXml.h:326
static fsS32 PoolsSizeGet()
Definition fsCXml.h:469
const fsStr & GetVersion() const
Definition fsCXml.h:309
void SetVersion(const char *version)
Definition fsCXml.h:308
static fsS32 mPoolsSize
Definition fsCXml.h:474
eVpXmlParserError Parse(const fsCResourceName &pFilename)
Definition fsCXml.cpp:713
void SetEncoding(const char *encoding)
Definition fsCXml.h:306
const fsStr & GetEncoding() const
Definition fsCXml.h:307
fsXmlParser()
Definition fsCXml.h:296
static int MaxPoolTags
Definition fsCXml.h:421
static fsXmlAttribute * AttributePool
Definition fsCXml.h:425
fsXmlNode * GetRoot()
Definition fsCXml.h:366
static void PoolsDestroy()
Definition fsCXml.h:443
static void PoolsReset()
Definition fsCXml.h:462
static fsXmlNode * AllocNode()
Definition fsCXml.h:311
static int MaxPoolAttributes
Definition fsCXml.h:427
virtual ~fsXmlParser()
Definition fsCXml.h:300
fsXmlNodeList * GetNamedNodes(fsXmlNode *parent, const char *node_name)
Definition fsCXml.h:388
static int NextFreePoolNodeIndex
Definition fsCXml.h:423
static fsXmlAttribute * AllocAttribute()
Definition fsCXml.h:341
#define fsAssert(pStatement, pFmtString,...)
Definition fsAssert.h:23
std::list< fsXmlNode * > fsXmlNodeList
Definition fsCXml.h:39
eVpXmlParserError
Definition fsCXml.h:246
@ eVpXmlParserError_NoTagFound
Definition fsCXml.h:248
@ eVpXmlParserError_None
Definition fsCXml.h:247
@ eVpXmlParserError_InvalidPools
Definition fsCXml.h:259
@ eVpXmlParserError_MissingValue
Definition fsCXml.h:254
@ eVpXmlParserError_FileError
Definition fsCXml.h:249
@ eVpXmlParserError_MissingEndTag
Definition fsCXml.h:250
@ eVpXmlParserError_InvalidComment
Definition fsCXml.h:257
@ eVpXmlParserError_MissingClosingQuote
Definition fsCXml.h:255
@ eVpXmlParserError_MissingEquals
Definition fsCXml.h:253
@ eVpXmlParserError_InvalidTag
Definition fsCXml.h:256
@ eVpXmlParserError_MismatchedEndTag
Definition fsCXml.h:252
@ eVpXmlParserError_MissingEndComment
Definition fsCXml.h:251
@ eVpXmlParserError_PreParseError
Definition fsCXml.h:258
std::list< float > fsXmlFloatList
Definition fsCXml.h:42
std::list< int > fsXmlIntList
Definition fsCXml.h:41
std::list< fsStr * > fsXmlStringList
Definition fsCXml.h:40
std::list< fsXmlAttribute * > fsXmlAttributeList
Definition fsCXml.h:38
std::list< bool > fsXmlBoolList
Definition fsCXml.h:43
int fsS32
Definition fsBaseTypes.h:20
~fsXmlAttribute()
Definition fsCXml.h:77
fsStr Name
Definition fsCXml.h:69
void Clear()
Definition fsCXml.h:81
bool Managed
Definition fsCXml.h:68
fsXmlStringList * GetValueAsList()
Definition fsCXml.cpp:137
void setName(const char *pName)
Definition fsCXml.h:87
fsStr & getName()
Definition fsCXml.h:97
fsStr Value
Definition fsCXml.h:70
void setName(char *pName, int len)
Definition fsCXml.h:92
fsXmlAttribute()
Definition fsCXml.h:73
fsStr & GetValue()
Definition fsCXml.h:112
void setValue(const char *pValue)
Definition fsCXml.h:99
void setValue(char *pValue, int len)
Definition fsCXml.h:105
int GetValueAsInt() const
Definition fsCXml.cpp:54
bool HasValue
Definition fsCXml.h:147
void Copy(fsXmlNode *copy)
Definition fsCXml.cpp:445
void Clear()
Definition fsCXml.h:159
void GetNamedNodes(const char *pNodeName, unsigned int pNameHash, fsXmlNodeList *pNodes)
Definition fsCXml.cpp:568
void UpdateAttribute(fsStr &name, const char *value)
Definition fsCXml.cpp:246
fsXmlNodeList Children
Definition fsCXml.h:150
bool Managed
Definition fsCXml.h:144
void AddAttribute(fsXmlAttribute *attribute)
Definition fsCXml.cpp:207
_AttribIterator attribs_end()
Definition fsCXml.h:141
void PrintTree(int level=0)
Definition fsCXml.cpp:294
const fsStr & GetValue() const
Definition fsCXml.h:207
fsXmlNode * Parent
Definition fsCXml.h:149
std::list< fsXmlNode * >::iterator _Iterator
Definition fsCXml.h:136
fsStr Value
Definition fsCXml.h:146
_Iterator begin()
Definition fsCXml.h:138
void SetName(const char *name, int len)
Definition fsCXml.h:185
void ToLower(bool recursive)
Definition fsCXml.cpp:330
int GetValueAsInt() const
Definition fsCXml.cpp:266
int GetAttributeCount() const
Definition fsCXml.h:224
void AddChild(fsXmlNode *node)
Definition fsCXml.h:169
fsXmlNode * Clone(fsXmlNode *parent)
Definition fsCXml.cpp:480
~fsXmlNode()
Definition fsCXml.cpp:188
fsXmlNode()
Definition fsCXml.h:153
void SetName(const char *name)
Definition fsCXml.h:180
fsXmlNode * GetFirstNamedNode(const char *pNodeName, unsigned int pNameHash)
Definition fsCXml.cpp:550
fsStr Name
Definition fsCXml.h:145
const fsStr & GetName() const
Definition fsCXml.h:204
fsXmlAttribute * GetAttribute(const char *name)
Definition fsCXml.cpp:591
fsXmlNode * CloneTree(fsXmlNode *parent)
Definition fsCXml.cpp:503
void SetValue(const char *value, int len)
Definition fsCXml.h:197
_Iterator end()
Definition fsCXml.h:139
fsXmlNode * GetFirstNode()
Definition fsCXml.cpp:542
fsXmlAttributeList Attributes
Definition fsCXml.h:148
void PrintAttributes()
Definition fsCXml.cpp:282
void SetValue(const char *value)
Definition fsCXml.h:190
_AttribIterator attribs_begin()
Definition fsCXml.h:140
std::list< fsXmlAttribute * >::iterator _AttribIterator
Definition fsCXml.h:137
void ToUpper(bool recursive)
Definition fsCXml.cpp:346
int Length
Definition fsCXml.h:265
int Start
Definition fsCXml.h:264
void Clear()
Definition fsCXml.h:267