#ifndef ICL_XML_NODE_FILTER_H #define ICL_XML_NODE_FILTER_H #include namespace icl{ /// Utility interface to filter nodes \ingroup XML /** XMLNodeFilter instances can be passed to XMLNode's getAllChlidNodes() functions The bool operator()(const XMLNode&) operator has to be defined in subclasses. Nodes for which this function returns false, are filtered out. The default implementation is called XMLNodeFilterAll, which returns always true. */ class XMLNodeFilter{ public: /// filter the node here virtual bool operator()(const XMLNode &node) const= 0; virtual ~XMLNodeFilter(){} virtual XMLNodeFilter *deepCopy() const = 0; }; /// Default implementation for XMLNodeFilter interface, which lets all nodes pass through \ingroup XML class XMLNodeFilterAll : public XMLNodeFilter{ public: /// returns always true virtual bool operator()(const XMLNode&) const{ return true; } /// deep copy function virtual XMLNodeFilter *deepCopy() const{ return new XMLNodeFilterAll; } }; /// Can be used to filter nodes by Types \ingroup XML class XMLNodeFilterByType : public XMLNodeFilter{ public: int nodeTypes; //