Drizzled Public API Documentation

find_ptr.h
1 /* Drizzle
2  * Copyright (C) 2011 Olaf van der Spek
3  *
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.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #pragma once
19 
20 template <class T, class U>
21 typename T::value_type::second_type* find_ptr(T& c, U v)
22 {
23  typename T::iterator i = c.find(v);
24  return i == c.end() ? NULL : &i->second;
25 }
26 
27 template <class T, class U>
28 const typename T::value_type::second_type* find_ptr(const T& c, U v)
29 {
30  typename T::const_iterator i = c.find(v);
31  return i == c.end() ? NULL : &i->second;
32 }
33 
34 template <class T, class U>
35 typename T::value_type::second_type find_ptr2(T& c, U v)
36 {
37  typename T::value_type::second_type* i = find_ptr(c, v);
38  return i ? *i : NULL;
39 }
40 
41 template <class T, class U>
42 const typename T::value_type::second_type find_ptr2(const T& c, U v)
43 {
44  const typename T::value_type::second_type* i = find_ptr(c, v);
45  return i ? *i : NULL;
46 }