Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JVectorize.hh
Go to the documentation of this file.
1 #ifndef __JLANG__JVECTORIZE__
2 #define __JLANG__JVECTORIZE__
3 
4 #include <vector>
5 
6 
7 /**
8  * \file
9  * Auxiliary methods to convert data members or return values of member methods of a set of objects to a single vector.
10  * \author mdejong
11  */
12 namespace JLANG {}
13 namespace JPP { using namespace JLANG; }
14 
15 namespace JLANG {
16 
17  /**
18  * Method to create array of values of data member.
19  *
20  * \param __begin begin of data
21  * \param __end end of data
22  * \param value pointer to data member
23  * \return data
24  */
25  template<class T, class JType_t, class JValue_t>
26  inline const std::vector<JValue_t>& make_array(T __begin, T __end, JValue_t JType_t::*value)
27  {
28  static std::vector<JValue_t> buffer;
29 
30  buffer.clear();
31 
32  for (T __p = __begin; __p != __end; ++__p) {
33  buffer.push_back(*__p.*value);
34  }
35 
36  return buffer;
37  }
38 
39 
40  /**
41  * Method to create array of return values of member method.
42  *
43  * \param __begin begin of data
44  * \param __end end of data
45  * \param function pointer to member method
46  * \return data
47  */
48  template<class T, class JType_t, class JValue_t>
49  inline const std::vector<JValue_t>& make_array(T __begin, T __end, JValue_t (JType_t::*function)() const)
50  {
51  static std::vector<JValue_t> buffer;
52 
53  buffer.clear();
54 
55  for (T __p = __begin; __p != __end; ++__p) {
56  buffer.push_back((*__p.*function)());
57  }
58 
59  return buffer;
60  }
61 
62 
63 
64  /**
65  * Method to create array of return values of member method.
66  *
67  * \param __begin begin of data
68  * \param __end end of data
69  * \param function pointer to member method
70  * \return data
71  */
72  template<class T, class JType_t, class JValue_t>
73  inline const std::vector<JValue_t>& make_array(T __begin, T __end, JValue_t (JType_t::*function)())
74  {
75  static std::vector<JValue_t> buffer;
76 
77  buffer.clear();
78 
79  for (T __p = __begin; __p != __end; ++__p) {
80  buffer.push_back((*__p.*function)());
81  }
82 
83  return buffer;
84  }
85 }
86 
87 #endif
const std::vector< JValue_t > & make_array(T __begin, T __end, JValue_t JType_t::*value)
Method to create array of values of data member.
Definition: JVectorize.hh:26