Show overall progress for checking packages in package cache
[cygwin-setup.git] / Generic.h
blob7406b7fe3edb8d06ecb827ff9112c1bc42fed242
1 /*
2 * Copyright (c) 2003 Robert Collins.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * A copy of the GNU General Public License can be found at
10 * http://www.gnu.org/
12 * Written by Robert Collins <robertc@hotmail.com>
16 #ifndef SETUP_GENERIC_H
17 #define SETUP_GENERIC_H
19 /* Todo fully paramterise */
20 template <class _Visitor, class _Predicate>
21 struct _visit_if {
22 _visit_if(_Visitor v, _Predicate p) : visitor(v), predicate (p) {}
23 void operator() (typename _Visitor::argument_type& arg) {
24 if (predicate(arg))
25 visitor(arg);
27 _Visitor visitor;
28 _Predicate predicate;
31 template <class _Visitor, class _Predicate>
32 _visit_if<_Visitor, _Predicate>
33 visit_if(_Visitor visitor, _Predicate predicate)
35 return _visit_if<_Visitor, _Predicate>(visitor, predicate);
38 #endif /* SETUP_GENERIC_H */