Stan  1.0
probability, sampling & optimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros Pages
csv_writer.hpp
Go to the documentation of this file.
1 #ifndef __STAN__IO__CSV_WRITER_HPP__
2 #define __STAN__IO__CSV_WRITER_HPP__
3 
4 #include <cstddef>
5 #include <iostream>
6 #include <stan/math/matrix.hpp>
7 
8 namespace stan {
9 
10  namespace io {
11 
20  class csv_writer {
21  private:
22  std::ostream& o_;
23  bool at_bol_;
24 
25  public:
26 
33  void comma() {
34  if (at_bol_) {
35  at_bol_ = false;
36  return;
37  }
38  o_ << ",";
39  }
40 
41 
48  csv_writer(std::ostream& o)
49  : o_(o), at_bol_(true) {
50  }
51 
60  void newline() {
61  o_ << "\n";
62  at_bol_ = true;
63  }
64 
73  void write(int n) {
74  comma();
75  o_ << n;
76  }
77 
86  void write(double x) {
87  comma();
88  o_ << x;
89  }
90 
99  void write(const Eigen::Matrix<double,Eigen::Dynamic,1>& v) {
101  for (size_type i = 0; i < v.size(); ++i)
102  write(v[i]);
103  }
104 
113  void write(const Eigen::Matrix<double,1,Eigen::Dynamic>& rv) {
115  for (size_type i = 0; i < rv.size(); ++i)
116  write(rv[i]);
117  }
118 
127  void write(const Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic>& m) {
129  for (size_type i = 0; i < m.rows(); ++i)
130  for (size_type j = 0; j < m.cols(); ++j)
131  write(m(i,j));
132  }
133 
142  void write_col_major(const Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic>& m) {
144  for (size_type j = 0; j < m.cols(); ++j)
145  for (size_type i = 0; i < m.rows(); ++i)
146  write(m(i,j));
147  }
148 
158  void write(const std::string& s) {
159  comma();
160 
161  o_ << '"';
162  for (size_t i = 0; i < s.size(); ++i) {
163  if (s.at(i) == '"') {
164  o_ << '"' << '"'; // double quotes
165  } else {
166  o_ << s.at(i);
167  }
168  }
169  o_ << '"';
170  }
171 
172 
173  };
174 
175  }
176 
177 }
178 
179 #endif

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