Stan Math Library  2.9.0
reverse mode automatic differentiation
VectorBuilder.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_SCAL_META_VECTORBUILDER_HPP
2 #define STAN_MATH_PRIM_SCAL_META_VECTORBUILDER_HPP
3 
5 #include <stdexcept>
6 #include <vector>
7 
8 namespace stan {
9 
27  template<typename T1, bool used, bool is_vec>
29  public:
30  explicit VectorBuilderHelper(size_t /* n */) { }
31  T1& operator[](size_t /* i */) {
32  throw std::logic_error("used is false. this should never be called");
33  }
34  };
35 
36  template<typename T1>
37  class VectorBuilderHelper<T1, true, false> {
38  private:
39  T1 x_;
40  public:
41  explicit VectorBuilderHelper(size_t /* n */) : x_(0.0) { }
42  T1& operator[](size_t /* i */) {
43  return x_;
44  }
45  };
46 
47  template<typename T1>
48  class VectorBuilderHelper<T1, true, true> {
49  private:
50  std::vector<T1> x_;
51  public:
52  explicit VectorBuilderHelper(size_t n) : x_(n) { }
53  T1& operator[](size_t i) {
54  return x_[i];
55  }
56  };
57 
58  template<bool used, typename T1, typename T2, typename T3 = double,
59  typename T4 = double, typename T5 = double, typename T6 = double,
60  typename T7 = double>
61  class VectorBuilder {
62  public:
63  VectorBuilderHelper<T1, used,
65  explicit VectorBuilder(size_t n) : a(n) { }
66  T1& operator[](size_t i) {
67  return a[i];
68  }
69  };
70 
71 }
72 #endif
73 
VectorBuilderHelper< T1, used, contains_vector< T2, T3, T4, T5, T6, T7 >::value > a
VectorBuilder allocates type T1 values to be used as intermediate values.
T1 & operator[](size_t i)

     [ Stan Home Page ] © 2011–2015, Stan Development Team.