Index: XmlFile.h =================================================================== --- XmlFile.h (revision 28331) +++ XmlFile.h (working copy) @@ -57,27 +57,31 @@ typedef vector XNodes; #define FOREACH_Attr( pNode, Var ) \ + XAttrs::const_iterator Var##End=(pNode)->m_attrs.end(); \ for( XAttrs::iterator Var = (pNode)->m_attrs.begin(); \ - Var != (pNode)->m_attrs.end(); \ + Var != Var##End; \ ++Var ) #define FOREACH_CONST_Attr( pNode, Var ) \ + XAttrs::const_iterator Var##End=(pNode)->m_attrs.end(); \ for( XAttrs::const_iterator Var = (pNode)->m_attrs.begin(); \ - Var != (pNode)->m_attrs.end(); \ + Var != Var##End; \ ++Var ) #define FOREACH_Child( pNode, Var ) \ XNode *Var = NULL; \ + XNodes::const_iterator Var##EndItr=(pNode)->m_childs.end(); \ for( XNodes::iterator Var##Iter = (pNode)->m_childs.begin(); \ - Var = (Var##Iter != (pNode)->m_childs.end())? *Var##Iter:NULL, \ - Var##Iter != (pNode)->m_childs.end(); \ + Var = (Var##Iter != Var##EndItr)? *Var##Iter:NULL, \ + Var##Iter != Var##EndItr; \ ++Var##Iter ) #define FOREACH_CONST_Child( pNode, Var ) \ const XNode *Var = NULL; \ + XNodes::const_iterator Var##EndItr=(pNode)->m_childs.end(); \ for( XNodes::const_iterator Var##Iter = (pNode)->m_childs.begin(); \ - Var = (Var##Iter != (pNode)->m_childs.end())? *Var##Iter:NULL, \ - Var##Iter != (pNode)->m_childs.end(); \ + Var = (Var##Iter != Var##EndItr)? *Var##Iter:NULL, \ + Var##Iter != Var##EndItr; \ ++Var##Iter ) class XNode