From bad619d2418c03c8a7cc1023640794405715865d Mon Sep 17 00:00:00 2001 From: cantor Date: Thu, 8 Nov 2007 02:29:39 +0000 Subject: [PATCH] Add a find_if template for pointer-based containers. git-svn-id: https://svn.middleware.georgetown.edu/cpp-xmltooling/trunk@418 de75baf8-a10c-0410-a50a-987c0e22f00f --- xmltooling/util/Predicates.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/xmltooling/util/Predicates.h b/xmltooling/util/Predicates.h index 4f92439..baf2268 100644 --- a/xmltooling/util/Predicates.h +++ b/xmltooling/util/Predicates.h @@ -83,7 +83,20 @@ namespace xmltooling { private: const QName& m_q; }; - + + /** + * Template algorithm returns first pointer element from a container that matches a predicate. + * + * @param c read-only container of pointer-based objects + * @param p a predicate function + * @return the first object in the container matching the predicate, or NULL + */ + template + typename Container::value_type find_if(const typename Container& c, const typename Predicate& p) { + Container::const_iterator i = std::find_if(c.begin(), c.end(), p); + return (i!=c.end()) ? *i : NULL; + } + }; #endif /* __xmltooling_predicates_h__ */ -- 2.1.4