g4tools  5.4.0
vdata
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_vdata
5 #define tools_vdata
6 
7 #include <vector>
8 
9 #if defined(__APPLE__)
10 #include <TargetConditionals.h>
11 #endif
12 
13 namespace tools {
14 
15 // || !__GXX_EXPERIMENTAL_CXX0X__
16 
17 template <class T>
18 inline const T* vec_data(const std::vector<T>& a_vec) {
19 #if TARGET_OS_IPHONE || __INTEL_COMPILER || _MSC_VER || (__GNUC__ == 4 && __GNUC_MINOR__ <= 0)
20  if(a_vec.empty()) return 0;
21  const T& vf = a_vec.front();
22  return &vf;
23 #else
24  return a_vec.data();
25 #endif
26 }
27 
28 template <class T>
29 inline T* vec_data(std::vector<T>& a_vec) {
30 #if TARGET_OS_IPHONE || __INTEL_COMPILER || _MSC_VER || (__GNUC__ == 4 && __GNUC_MINOR__ <= 0)
31  if(a_vec.empty()) return 0;
32  T& vf = a_vec.front();
33  return &vf;
34 #else
35  return a_vec.data();
36 #endif
37 }
38 
39 /*
40 #include "forit"
41 //std::vector<bool>::data() does not compile. The below may do the job :
42 inline bool* _vec_data(std::vector<bool>& a_v,bool& a_to_delete) {
43  a_to_delete = true;
44  bool* _data = new bool[a_v.size()+1];
45  size_t count = 0;
46  tools_vforcit(bool,a_v,it) {_data[count] = *it;count++;}
47  return _data;
48 }
49 
50 template <class TYPE>
51 inline TYPE* _vec_data(std::vector<TYPE>& a_v,bool& a_to_delete) {
52  a_to_delete = false;
53  return vec_data(a_v);
54 }
55 */
56 
57 inline void tools_vdata_check_compile() {std::vector<double> v;vec_data(v);}
58 
59 }
60 
61 #endif
tools::vec_data
const T * vec_data(const std::vector< T > &a_vec)
Definition: vdata:18
tools::tools_vdata_check_compile
void tools_vdata_check_compile()
Definition: vdata:57
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26