All Classes Namespaces Functions Typedefs Enumerations Pages
interface_creatoroperator_iter.h
1 // replace this file (boost preprocessor iteration) with c++11 code if we use c++11
2 
3 // iteration for function "T* operator()(...)"
4 #if BOOST_PP_ITERATION_DEPTH()==1
5 
6  #if BOOST_PP_ITERATION()>0
7  template<
8  // call iteration for "typename P1 p1, typename P2 p2, ..."
9  #define BOOST_PP_ITERATION_PARAMS_2 (4, (1, BOOST_PP_ITERATION(), "hdf5serie/interface_creatoroperator_iter.h", 1))
10  #include BOOST_PP_ITERATE()
11  >
12  #endif
13  T* operator ()(
14  #if BOOST_PP_ITERATION()>0
15  // call iteration for "P1 p1, P2 p2, ..."
16  #define BOOST_PP_ITERATION_PARAMS_2 (4, (1, BOOST_PP_ITERATION(), "hdf5serie/interface_creatoroperator_iter.h", 2))
17  #include BOOST_PP_ITERATE()
18  #endif
19  ) {
20  std::pair<typename std::map<std::string, Child*>::iterator, bool> ret=childs.insert(std::pair<std::string, Child*>(name, NULL));
21  if(!ret.second)
22  throw Exception(self->getPath(), "A element of name "+name+" already exists.");
23  try {
24  T* r=new T(static_cast<Self*>(self), name
25  #if BOOST_PP_ITERATION()>0
26  ,
27  // call iteration for "p1, p2, ..."
28  #define BOOST_PP_ITERATION_PARAMS_2 (4, (1, BOOST_PP_ITERATION(), "hdf5serie/interface_creatoroperator_iter.h", 3))
29  #include BOOST_PP_ITERATE()
30  #endif
31  );
32  ret.first->second=r;
33  return r;
34  }
35  catch(...) {
36  childs.erase(name);
37  throw;
38  }
39  }
40 
41 // iteration for "typename P1 p1, typename P2 p2, ..."
42 #elif BOOST_PP_ITERATION_DEPTH()==2 && BOOST_PP_ITERATION_FLAGS()==1
43 
44  typename BOOST_PP_CAT(P, BOOST_PP_ITERATION())
45  #if BOOST_PP_ITERATION()!=BOOST_PP_ITERATION_FINISH()
46  ,
47  #endif
48 
49 // iteration for "P1 p1, P2 p2, ..."
50 #elif BOOST_PP_ITERATION_DEPTH()==2 && BOOST_PP_ITERATION_FLAGS()==2
51 
52  BOOST_PP_CAT(P, BOOST_PP_ITERATION()) BOOST_PP_CAT(p, BOOST_PP_ITERATION())
53  #if BOOST_PP_ITERATION()!=BOOST_PP_ITERATION_FINISH()
54  ,
55  #endif
56 
57 // iteration for "p1, p2, ..."
58 #elif BOOST_PP_ITERATION_DEPTH()==2 && BOOST_PP_ITERATION_FLAGS()==3
59 
60  BOOST_PP_CAT(p, BOOST_PP_ITERATION())
61  #if BOOST_PP_ITERATION()!=BOOST_PP_ITERATION_FINISH()
62  ,
63  #endif
64 
65 #endif

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML