[define]

#define xml_foreach(node, list)                                                   \
  int __i = 0;                                                                    \
  int __count = (list).count();                                                   \
  if (__count > 0)                                                                \
    for (QDomNode node = (list).at(0); __i < __count; __i++, node = (list).at(__i))



[usage 1]

void foo(QDomNodeList list)
{
  xml_foreach(node, list)
  {
    // node...
  }
}




You can not use xml_foreach macro more than 1 time in a function because __i and __count variables might be declared multiple times.

[usage 2]

void foo2(QDomNodeList list)
{
  {
    xml_foreach(node, list)
    {
      // node ...
    }
  }
  {
    xml_foreach(node, list)
    {
      // node ...
    }
  }
}