replace C-style typedefs with C++ structs for easier forward declarations of XNode

This commit is contained in:
Chris Danford
2004-04-18 10:41:54 +00:00
parent 68e2315224
commit 0a40998859
2 changed files with 76 additions and 71 deletions
+46 -46
View File
@@ -220,12 +220,12 @@ void _SetString( char* psz, char* end, CString* ps, bool trim = false, int escap
} }
} }
_tagXMLNode::~_tagXMLNode() XNode::~XNode()
{ {
Close(); Close();
} }
void _tagXMLNode::Close() void XNode::Close()
{ {
unsigned i; unsigned i;
@@ -262,7 +262,7 @@ void _tagXMLNode::Close()
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
char* _tagXMLNode::LoadAttributes( const char* pszAttrs , LPPARSEINFO pi /*= &piDefault*/) char* XNode::LoadAttributes( const char* pszAttrs , LPPARSEINFO pi /*= &piDefault*/)
{ {
char* xml = (char*)pszAttrs; char* xml = (char*)pszAttrs;
@@ -359,7 +359,7 @@ char* _tagXMLNode::LoadAttributes( const char* pszAttrs , LPPARSEINFO pi /*= &pi
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
char* _tagXMLNode::Load( const char* pszXml, LPPARSEINFO pi /*= &piDefault*/ ) char* XNode::Load( const char* pszXml, LPPARSEINFO pi /*= &piDefault*/ )
{ {
// Close it // Close it
Close(); Close();
@@ -552,7 +552,7 @@ char* _tagXMLNode::Load( const char* pszXml, LPPARSEINFO pi /*= &piDefault*/ )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
CString _tagXMLAttr::GetXML( LPDISP_OPT opt /*= &optDefault*/ ) CString XAttr::GetXML( LPDISP_OPT opt /*= &optDefault*/ )
{ {
std::ostringstream os; std::ostringstream os;
//os << (const char*)name << "='" << (const char*)value << "' "; //os << (const char*)name << "='" << (const char*)value << "' ";
@@ -570,7 +570,7 @@ CString _tagXMLAttr::GetXML( LPDISP_OPT opt /*= &optDefault*/ )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
CString _tagXMLNode::GetXML( LPDISP_OPT opt /*= &optDefault*/ ) CString XNode::GetXML( LPDISP_OPT opt /*= &optDefault*/ )
{ {
std::ostringstream os; std::ostringstream os;
@@ -651,7 +651,7 @@ CString _tagXMLNode::GetXML( LPDISP_OPT opt /*= &optDefault*/ )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
const LPXAttr _tagXMLNode::GetAttr( const char* attrname ) const const LPXAttr XNode::GetAttr( const char* attrname ) const
{ {
for( unsigned i = 0 ; i < attrs.size(); i++ ) for( unsigned i = 0 ; i < attrs.size(); i++ )
{ {
@@ -665,7 +665,7 @@ const LPXAttr _tagXMLNode::GetAttr( const char* attrname ) const
return NULL; return NULL;
} }
LPXAttr _tagXMLNode::GetAttr( const char* attrname ) LPXAttr XNode::GetAttr( const char* attrname )
{ {
for( unsigned i = 0 ; i < attrs.size(); i++ ) for( unsigned i = 0 ; i < attrs.size(); i++ )
{ {
@@ -688,7 +688,7 @@ LPXAttr _tagXMLNode::GetAttr( const char* attrname )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
XAttrs _tagXMLNode::GetAttrs( const char* name ) XAttrs XNode::GetAttrs( const char* name )
{ {
XAttrs attrs; XAttrs attrs;
for( unsigned i = 0 ; i < attrs.size(); i++ ) for( unsigned i = 0 ; i < attrs.size(); i++ )
@@ -712,13 +712,13 @@ XAttrs _tagXMLNode::GetAttrs( const char* name )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
const char* _tagXMLNode::GetAttrValue( const char* attrname ) const char* XNode::GetAttrValue( const char* attrname )
{ {
LPXAttr attr = GetAttr( attrname ); LPXAttr attr = GetAttr( attrname );
return attr ? (const char*)attr->value : NULL; return attr ? (const char*)attr->value : NULL;
} }
XNodes _tagXMLNode::GetChilds() XNodes XNode::GetChilds()
{ {
return childs; return childs;
} }
@@ -732,7 +732,7 @@ XNodes _tagXMLNode::GetChilds()
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
XNodes _tagXMLNode::GetChilds( const char* name ) XNodes XNode::GetChilds( const char* name )
{ {
XNodes nodes; XNodes nodes;
for( unsigned i = 0 ; i < childs.size(); i++ ) for( unsigned i = 0 ; i < childs.size(); i++ )
@@ -756,7 +756,7 @@ XNodes _tagXMLNode::GetChilds( const char* name )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXNode _tagXMLNode::GetChild( int i ) LPXNode XNode::GetChild( int i )
{ {
if( i >= 0 && i < (int)childs.size() ) if( i >= 0 && i < (int)childs.size() )
return childs[i]; return childs[i];
@@ -772,7 +772,7 @@ LPXNode _tagXMLNode::GetChild( int i )
// Coder Date Desc // Coder Date Desc
// bro 2002-12-26 // bro 2002-12-26
//======================================================== //========================================================
int _tagXMLNode::GetChildCount() int XNode::GetChildCount()
{ {
return childs.size(); return childs.size();
} }
@@ -786,7 +786,7 @@ int _tagXMLNode::GetChildCount()
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXNode _tagXMLNode::GetChild( const char* name ) LPXNode XNode::GetChild( const char* name )
{ {
for( unsigned i = 0 ; i < childs.size(); i++ ) for( unsigned i = 0 ; i < childs.size(); i++ )
{ {
@@ -800,7 +800,7 @@ LPXNode _tagXMLNode::GetChild( const char* name )
return NULL; return NULL;
} }
const LPXNode _tagXMLNode::GetChild( const char* name ) const const LPXNode XNode::GetChild( const char* name ) const
{ {
for( unsigned i = 0 ; i < childs.size(); i++ ) for( unsigned i = 0 ; i < childs.size(); i++ )
{ {
@@ -823,19 +823,19 @@ const LPXNode _tagXMLNode::GetChild( const char* name ) const
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
const char* _tagXMLNode::GetChildValue( const char* name ) const char* XNode::GetChildValue( const char* name )
{ {
LPXNode node = GetChild( name ); LPXNode node = GetChild( name );
return (node != NULL)? (const char*)node->value : NULL; return (node != NULL)? (const char*)node->value : NULL;
} }
LPXAttr _tagXMLNode::GetChildAttr( const char* name, const char* attrname ) LPXAttr XNode::GetChildAttr( const char* name, const char* attrname )
{ {
LPXNode node = GetChild(name); LPXNode node = GetChild(name);
return node ? node->GetAttr(attrname) : NULL; return node ? node->GetAttr(attrname) : NULL;
} }
const char* _tagXMLNode::GetChildAttrValue( const char* name, const char* attrname ) const char* XNode::GetChildAttrValue( const char* name, const char* attrname )
{ {
LPXAttr attr = GetChildAttr( name, attrname ); LPXAttr attr = GetChildAttr( name, attrname );
return attr ? (const char*)attr->value : NULL; return attr ? (const char*)attr->value : NULL;
@@ -851,7 +851,7 @@ const char* _tagXMLNode::GetChildAttrValue( const char* name, const char* attrna
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
XNodes::iterator _tagXMLNode::GetChildIterator( LPXNode node ) XNodes::iterator XNode::GetChildIterator( LPXNode node )
{ {
XNodes::iterator it = childs.begin(); XNodes::iterator it = childs.begin();
for( ; it != childs.end() ; ++(it) ) for( ; it != childs.end() ; ++(it) )
@@ -871,17 +871,17 @@ XNodes::iterator _tagXMLNode::GetChildIterator( LPXNode node )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXNode _tagXMLNode::AppendChild( const char* name /*= NULL*/, const char* value /*= NULL*/ ) LPXNode XNode::AppendChild( const char* name /*= NULL*/, const char* value /*= NULL*/ )
{ {
return AppendChild( CreateNode( name, value ) ); return AppendChild( CreateNode( name, value ) );
} }
LPXNode _tagXMLNode::AppendChild( const char* name /*= NULL*/, float value /*= NULL*/ ) LPXNode XNode::AppendChild( const char* name /*= NULL*/, float value /*= NULL*/ )
{ {
return AppendChild( name, ssprintf("%f",value) ); return AppendChild( name, ssprintf("%f",value) );
} }
LPXNode _tagXMLNode::AppendChild( const char* name /*= NULL*/, int value /*= NULL*/ ) LPXNode XNode::AppendChild( const char* name /*= NULL*/, int value /*= NULL*/ )
{ {
return AppendChild( name, ssprintf("%d",value) ); return AppendChild( name, ssprintf("%d",value) );
} }
@@ -895,7 +895,7 @@ LPXNode _tagXMLNode::AppendChild( const char* name /*= NULL*/, int value /*= NUL
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXNode _tagXMLNode::AppendChild( LPXNode node ) LPXNode XNode::AppendChild( LPXNode node )
{ {
node->parent = this; node->parent = this;
childs.push_back( node ); childs.push_back( node );
@@ -911,7 +911,7 @@ LPXNode _tagXMLNode::AppendChild( LPXNode node )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
bool _tagXMLNode::RemoveChild( LPXNode node ) bool XNode::RemoveChild( LPXNode node )
{ {
XNodes::iterator it = GetChildIterator( node ); XNodes::iterator it = GetChildIterator( node );
if( it != childs.end() ) if( it != childs.end() )
@@ -932,7 +932,7 @@ bool _tagXMLNode::RemoveChild( LPXNode node )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXAttr _tagXMLNode::GetAttr( int i ) LPXAttr XNode::GetAttr( int i )
{ {
if( i >= 0 && i < (int)attrs.size() ) if( i >= 0 && i < (int)attrs.size() )
return attrs[i]; return attrs[i];
@@ -948,7 +948,7 @@ LPXAttr _tagXMLNode::GetAttr( int i )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
XAttrs::iterator _tagXMLNode::GetAttrIterator( LPXAttr attr ) XAttrs::iterator XNode::GetAttrIterator( LPXAttr attr )
{ {
XAttrs::iterator it = attrs.begin(); XAttrs::iterator it = attrs.begin();
for( ; it != attrs.end() ; ++(it) ) for( ; it != attrs.end() ; ++(it) )
@@ -968,7 +968,7 @@ XAttrs::iterator _tagXMLNode::GetAttrIterator( LPXAttr attr )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXAttr _tagXMLNode::AppendAttr( LPXAttr attr ) LPXAttr XNode::AppendAttr( LPXAttr attr )
{ {
attr->parent = this; attr->parent = this;
attrs.push_back( attr ); attrs.push_back( attr );
@@ -984,7 +984,7 @@ LPXAttr _tagXMLNode::AppendAttr( LPXAttr attr )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
bool _tagXMLNode::RemoveAttr( LPXAttr attr ) bool XNode::RemoveAttr( LPXAttr attr )
{ {
XAttrs::iterator it = GetAttrIterator( attr ); XAttrs::iterator it = GetAttrIterator( attr );
if( it != attrs.end() ) if( it != attrs.end() )
@@ -1005,7 +1005,7 @@ bool _tagXMLNode::RemoveAttr( LPXAttr attr )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXNode _tagXMLNode::CreateNode( const char* name /*= NULL*/, const char* value /*= NULL*/ ) LPXNode XNode::CreateNode( const char* name /*= NULL*/, const char* value /*= NULL*/ )
{ {
LPXNode node = new XNode; LPXNode node = new XNode;
node->name = name; node->name = name;
@@ -1022,7 +1022,7 @@ LPXNode _tagXMLNode::CreateNode( const char* name /*= NULL*/, const char* value
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXAttr _tagXMLNode::CreateAttr( const char* name /*= NULL*/, const char* value /*= NULL*/ ) LPXAttr XNode::CreateAttr( const char* name /*= NULL*/, const char* value /*= NULL*/ )
{ {
LPXAttr attr = new XAttr; LPXAttr attr = new XAttr;
attr->name = name; attr->name = name;
@@ -1039,13 +1039,13 @@ LPXAttr _tagXMLNode::CreateAttr( const char* name /*= NULL*/, const char* value
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXAttr _tagXMLNode::AppendAttr( const char* name /*= NULL*/, const char* value /*= NULL*/ ) LPXAttr XNode::AppendAttr( const char* name /*= NULL*/, const char* value /*= NULL*/ )
{ {
return AppendAttr( CreateAttr( name, value ) ); return AppendAttr( CreateAttr( name, value ) );
} }
LPXAttr _tagXMLNode::AppendAttr( const char* name, float value ){ return AppendAttr(name,ssprintf("%f",value)); } LPXAttr XNode::AppendAttr( const char* name, float value ){ return AppendAttr(name,ssprintf("%f",value)); }
LPXAttr _tagXMLNode::AppendAttr( const char* name, int value ) { return AppendAttr(name,ssprintf("%d",value)); } LPXAttr XNode::AppendAttr( const char* name, int value ) { return AppendAttr(name,ssprintf("%d",value)); }
//======================================================== //========================================================
// Name : DetachChild // Name : DetachChild
@@ -1056,7 +1056,7 @@ LPXAttr _tagXMLNode::AppendAttr( const char* name, int value ) { return AppendAt
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXNode _tagXMLNode::DetachChild( LPXNode node ) LPXNode XNode::DetachChild( LPXNode node )
{ {
XNodes::iterator it = GetChildIterator( node ); XNodes::iterator it = GetChildIterator( node );
if( it != childs.end() ) if( it != childs.end() )
@@ -1076,7 +1076,7 @@ LPXNode _tagXMLNode::DetachChild( LPXNode node )
// Coder Date Desc // Coder Date Desc
// bro 2002-10-29 // bro 2002-10-29
//======================================================== //========================================================
LPXAttr _tagXMLNode::DetachAttr( LPXAttr attr ) LPXAttr XNode::DetachAttr( LPXAttr attr )
{ {
XAttrs::iterator it = GetAttrIterator( attr ); XAttrs::iterator it = GetAttrIterator( attr );
if( it != attrs.end() ) if( it != attrs.end() )
@@ -1087,13 +1087,13 @@ LPXAttr _tagXMLNode::DetachAttr( LPXAttr attr )
return NULL; return NULL;
} }
_tagXMLEntitys::_tagXMLEntitys( LPXENTITY entities, int count ) XENTITYS::XENTITYS( LPXENTITY entities, int count )
{ {
for( int i = 0; i < count; i++) for( int i = 0; i < count; i++)
push_back( entities[i] ); push_back( entities[i] );
} }
LPXENTITY _tagXMLEntitys::GetEntity( int entity ) LPXENTITY XENTITYS::GetEntity( int entity )
{ {
for( unsigned i = 0 ; i < size(); i ++ ) for( unsigned i = 0 ; i < size(); i ++ )
{ {
@@ -1103,7 +1103,7 @@ LPXENTITY _tagXMLEntitys::GetEntity( int entity )
return NULL; return NULL;
} }
LPXENTITY _tagXMLEntitys::GetEntity( char* entity ) LPXENTITY XENTITYS::GetEntity( char* entity )
{ {
for( unsigned i = 0 ; i < size(); i ++ ) for( unsigned i = 0 ; i < size(); i ++ )
{ {
@@ -1118,7 +1118,7 @@ LPXENTITY _tagXMLEntitys::GetEntity( char* entity )
return NULL; return NULL;
} }
int _tagXMLEntitys::GetEntityCount( const char* str ) int XENTITYS::GetEntityCount( const char* str )
{ {
int nCount = 0; int nCount = 0;
char* ps = (char*)str; char* ps = (char*)str;
@@ -1127,7 +1127,7 @@ int _tagXMLEntitys::GetEntityCount( const char* str )
return nCount; return nCount;
} }
int _tagXMLEntitys::Ref2Entity( const char* estr, char* str, int strlen ) int XENTITYS::Ref2Entity( const char* estr, char* str, int strlen )
{ {
char* pes = (char*)estr; char* pes = (char*)estr;
char* ps = str; char* ps = str;
@@ -1151,7 +1151,7 @@ int _tagXMLEntitys::Ref2Entity( const char* estr, char* str, int strlen )
return ps-str; return ps-str;
} }
int _tagXMLEntitys::Entity2Ref( const char* str, char* estr, int estrlen ) int XENTITYS::Entity2Ref( const char* str, char* estr, int estrlen )
{ {
char* ps = (char*)str; char* ps = (char*)str;
char* pes = (char*)estr; char* pes = (char*)estr;
@@ -1176,7 +1176,7 @@ int _tagXMLEntitys::Entity2Ref( const char* str, char* estr, int estrlen )
return pes-estr; return pes-estr;
} }
CString _tagXMLEntitys::Ref2Entity( const char* estr ) CString XENTITYS::Ref2Entity( const char* estr )
{ {
CString es; CString es;
if( estr ) if( estr )
@@ -1191,7 +1191,7 @@ CString _tagXMLEntitys::Ref2Entity( const char* estr )
return es; return es;
} }
CString _tagXMLEntitys::Entity2Ref( const char* str ) CString XENTITYS::Entity2Ref( const char* str )
{ {
CString s; CString s;
if( str ) if( str )
@@ -1219,7 +1219,7 @@ CString XEntity2Ref( const char* str )
return entityDefault.Entity2Ref( str ); return entityDefault.Entity2Ref( str );
} }
bool _tagXMLNode::LoadFromFile( CString sFile, LPPARSEINFO pi ) bool XNode::LoadFromFile( CString sFile, LPPARSEINFO pi )
{ {
RageFile f; RageFile f;
if( !f.Open(sFile, RageFile::READ) ) if( !f.Open(sFile, RageFile::READ) )
@@ -1233,7 +1233,7 @@ bool _tagXMLNode::LoadFromFile( CString sFile, LPPARSEINFO pi )
return true; return true;
} }
bool _tagXMLNode::SaveToFile( CString sFile, LPDISP_OPT opt ) bool XNode::SaveToFile( CString sFile, LPDISP_OPT opt )
{ {
RageFile f; RageFile f;
if( !f.Open(sFile, RageFile::WRITE) ) if( !f.Open(sFile, RageFile::WRITE) )
+30 -25
View File
@@ -22,22 +22,23 @@
#include <vector> #include <vector>
#include <RageUtil.h> #include <RageUtil.h>
struct _tagXMLAttr; struct XAttr;
typedef _tagXMLAttr XAttr, *LPXAttr; typedef XAttr* LPXAttr;
typedef std::vector<LPXAttr> XAttrs; typedef std::vector<LPXAttr> XAttrs;
struct _tagXMLNode; struct XNode;
typedef _tagXMLNode XNode, *LPXNode; typedef XNode* LPXNode;
typedef std::vector<LPXNode> XNodes, *LPXNodes; typedef std::vector<LPXNode> XNodes, *LPXNodes;
// Entity Encode/Decode Support // Entity Encode/Decode Support
typedef struct _tagXmlEntity struct XENTITY
{ {
TCHAR entity; // entity ( & " ' < > ) TCHAR entity; // entity ( & " ' < > )
TCHAR ref[10]; // entity reference ( &amp; &quot; etc ) TCHAR ref[10]; // entity reference ( &amp; &quot; etc )
int ref_len; // entity reference length int ref_len; // entity reference length
}XENTITY,*LPXENTITY; };
typedef XENTITY* LPXENTITY;
typedef struct _tagXMLEntitys : public std::vector<XENTITY> struct XENTITYS : public std::vector<XENTITY>
{ {
LPXENTITY GetEntity( int entity ); LPXENTITY GetEntity( int entity );
LPXENTITY GetEntity( char* entity ); LPXENTITY GetEntity( char* entity );
@@ -47,24 +48,25 @@ typedef struct _tagXMLEntitys : public std::vector<XENTITY>
CString Ref2Entity( const char* estr ); CString Ref2Entity( const char* estr );
CString Entity2Ref( const char* str ); CString Entity2Ref( const char* str );
_tagXMLEntitys(){}; XENTITYS(){};
_tagXMLEntitys( LPXENTITY entities, int count ); XENTITYS( LPXENTITY entities, int count );
}XENTITYS,*LPXENTITYS; };
typedef XENTITYS* LPXENTITYS;
extern XENTITYS entityDefault; extern XENTITYS entityDefault;
CString XRef2Entity( const char* estr ); CString XRef2Entity( const char* estr );
CString XEntity2Ref( const char* str ); CString XEntity2Ref( const char* str );
typedef enum enum PCODE
{ {
PIE_PARSE_WELFORMED = 0, PIE_PARSE_WELFORMED = 0,
PIE_ALONE_NOT_CLOSED, PIE_ALONE_NOT_CLOSED,
PIE_NOT_CLOSED, PIE_NOT_CLOSED,
PIE_NOT_NESTED, PIE_NOT_NESTED,
PIE_ATTR_NO_VALUE PIE_ATTR_NO_VALUE
}PCODE; };
// Parse info. // Parse info.
typedef struct _tagParseInfo struct PARSEINFO
{ {
bool trim_value; // [set] do trim when parse? bool trim_value; // [set] do trim when parse?
bool entity_value; // [set] do convert from reference to entity? ( &lt; -> < ) bool entity_value; // [set] do convert from reference to entity? ( &lt; -> < )
@@ -77,24 +79,26 @@ typedef struct _tagParseInfo
PCODE error_code; // [get] error code PCODE error_code; // [get] error code
CString error_string; // [get] error string CString error_string; // [get] error string
_tagParseInfo() { trim_value = true; entity_value = true; entitys = &entityDefault; xml = NULL; erorr_occur = false; error_pointer = NULL; error_code = PIE_PARSE_WELFORMED; escape_value = 0; } PARSEINFO() { trim_value = true; entity_value = true; entitys = &entityDefault; xml = NULL; erorr_occur = false; error_pointer = NULL; error_code = PIE_PARSE_WELFORMED; escape_value = 0; }
}PARSEINFO,*LPPARSEINFO; };
typedef PARSEINFO* LPPARSEINFO;
extern PARSEINFO piDefault; extern PARSEINFO piDefault;
// display optional environment // display optional environment
typedef struct _tagDispOption struct DISP_OPT
{ {
bool newline; // newline when new tag bool newline; // newline when new tag
bool reference_value; // do convert from entity to reference ( < -> &lt; ) bool reference_value; // do convert from entity to reference ( < -> &lt; )
LPXENTITYS entitys; // entity table for entity encode LPXENTITYS entitys; // entity table for entity encode
int tab_base; // internal usage int tab_base; // internal usage
_tagDispOption() { newline = true; reference_value = true; entitys = &entityDefault; tab_base = 0; } DISP_OPT() { newline = true; reference_value = true; entitys = &entityDefault; tab_base = 0; }
}DISP_OPT, *LPDISP_OPT; };
typedef DISP_OPT* LPDISP_OPT;
extern DISP_OPT optDefault; extern DISP_OPT optDefault;
// XAttr : Attribute Implementation // XAttr : Attribute Implementation
typedef struct _tagXMLAttr struct XAttr
{ {
CString name; CString name;
CString value; CString value;
@@ -103,13 +107,14 @@ typedef struct _tagXMLAttr
void GetValue(float &out) const { out = (float) atof(value); } void GetValue(float &out) const { out = (float) atof(value); }
void GetValue(bool &out) const { out = atoi(value) != 0; } void GetValue(bool &out) const { out = atoi(value) != 0; }
_tagXMLNode* parent; XNode* parent;
CString GetXML( LPDISP_OPT opt = &optDefault ); CString GetXML( LPDISP_OPT opt = &optDefault );
}XAttr, *LPXAttr; };
typedef XAttr* LPXAttr;
// XMLNode structure // XMLNode structure
typedef struct _tagXMLNode struct XNode
{ {
// name and value // name and value
CString name; CString name;
@@ -182,11 +187,11 @@ typedef struct _tagXMLNode
// operator overloads // operator overloads
LPXNode operator [] ( int i ) { return GetChild(i); } LPXNode operator [] ( int i ) { return GetChild(i); }
_tagXMLNode() { parent = NULL; } XNode() { parent = NULL; }
~_tagXMLNode(); ~XNode();
void Close(); void Close();
}XNode, *LPXNode; };
// Helper Funtion // Helper Funtion
inline long XStr2Int( const char* str, long default_value = 0 ) inline long XStr2Int( const char* str, long default_value = 0 )