Jpp  16.0.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
JManip.cc File Reference

Example program to test I/O manipulators. More...

#include <string>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <vector>
#include "JLang/JManip.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char *argv[])
 

Detailed Description

Example program to test I/O manipulators.

Author
mdejong

Definition in file JManip.cc.

Function Documentation

int main ( int  argc,
char *  argv[] 
)

Definition at line 77 of file JManip.cc.

78 {
79  using namespace std;
80  using namespace JPP;
81 
82  int debug;
83 
84  try {
85 
86  JParser<> zap;
87 
88  zap['d'] = make_field(debug) = 1;
89 
90  zap(argc, argv);
91  }
92  catch(const exception &error) {
93  FATAL(error.what() << endl);
94  }
95 
96  for (int value = 1; value < 1000000000; value *= 10) {
97  cout << "CENTER <" << CENTER(12) << value << ">" << endl;
98  }
99 
100  for (int value = 1; value < 1000000000; value *= 10) {
101  cout << "FILL <" << FILL(12,'.') << value << ">" << FILL() << endl;
102  }
103 
104  for (int value = 1; value < 1000000000; value *= 10) {
105  cout << "RIGHT <" << RIGHT(12) << value << ">" << endl;
106  }
107 
108  for (int value = 1; value < 1000000000; value *= 10) {
109  cout << "LEFT <" << LEFT(12) << value << ">" << endl;
110  }
111 
112  for (double value = 0.123456; value < 100000; value *= 10) {
113  cout << "FIXED <" << FIXED(12,6) << value << ">" << endl;
114  }
115 
116 
117  {
118  const double c = 12.34;
119 
120  const A a(c);
121  const B b(c);
122 
123  cout << setprecision(3);
124 
125  cout << "A <" << a << ">" << endl;
126  cout << "c <" << c << ">" << endl;
127  cout << "B <" << b << ">" << endl;
128  cout << "c <" << c << ">" << endl;
129 
130  setFormat<A>(JFormat_t(12, 3, std::ios::scientific));
131  setFormat<B>(JFormat_t( 5, 2, std::ios::fixed));
132 
133  cout << "A <" << a << ">" << endl;
134  cout << "c <" << c << ">" << endl;
135  cout << "B <" << b << ">" << endl;
136  cout << "c <" << c << ">" << endl;
137  }
138  {
139  C c;
140 
141  cout << shortprint << c << endl;
142  cout << mediumprint << c << endl;
143  cout << longprint << c << endl;
144  }
145  {
146  ostringstream os[2];
147 
148  const int i = 123456;
149 
150  os[0] << setw(12) << left << i;
151  os[1] << LEFT(12) << i;
152 
153  ASSERT(os[0].str() == os[1].str(), "<" << os[0].str() << "> == <" << os[1].str() << ">");
154  }
155  {
156  ostringstream os[2];
157 
158  const int i = 123456;
159 
160  os[0] << setw(12) << right << i;
161  os[1] << RIGHT(12) << i;
162 
163  ASSERT(os[0].str() == os[1].str(), "<" << os[0].str() << "> == <" << os[1].str() << ">");
164  }
165  {
166  ostringstream os[2];
167 
168  const int i = 123456;
169 
170  os[0] << setw(12) << setfill('0') << i;
171  os[1] << FILL(12, '0') << i;
172 
173  ASSERT(os[0].str() == os[1].str(), "<" << os[0].str() << "> == <" << os[1].str() << ">");
174  }
175  {
176  ostringstream os[2];
177 
178  const double x = 123.456;
179 
180  os[0] << setw(12) << setprecision(5) << fixed << x;
181  os[1] << FIXED(12,5) << x;
182 
183  ASSERT(os[0].str() == os[1].str(), "<" << os[0].str() << "> == <" << os[1].str() << ">");
184  }
185  {
186  ostringstream os[2];
187 
188  const double x = 123.456;
189 
190  os[0] << setw(12) << setprecision(2) << scientific << x;
191  os[1] << SCIENTIFIC(12,2) << x;
192 
193  ASSERT(os[0].str() == os[1].str(), "<" << os[0].str() << "> == <" << os[1].str() << ">");
194  }
195 
196  {
197  vector<int> V = { 1, 2, 3, 4};
198 
199  cout << LAMBDA([v = V](ostream& out) { for (const auto& i : v) { out << " " << i; } }) << endl;
200  }
201 
202  return 0;
203 }
Utility class to parse command line options.
Definition: JParser.hh:1500
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
Auxiliary data structure for alignment of data.
Definition: JManip.hh:366
static const double C
Physics constants.
#define ASSERT(A,...)
Assert macro.
Definition: JMessage.hh:90
Auxiliary data structure to convert (lambda) function to printable object.
Definition: JManip.hh:724
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1961
int debug
debug level
Definition: JSirene.cc:63
std::ostream & shortprint(std::ostream &out)
Set short printing.
Definition: JManip.hh:144
Auxiliary data structure for sequence of same character.
Definition: JManip.hh:328
std::ostream & longprint(std::ostream &out)
Set long printing.
Definition: JManip.hh:172
#define FATAL(A)
Definition: JMessage.hh:67
then JCalibrateToT a
Definition: JTuneHV.sh:116
$WORKDIR ev_configure_domsimulator txt echo process $DOM_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DOM_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
data_type v[N+1][M+1]
Definition: JPolint.hh:756
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:484
Data structure for format specifications.
Definition: JManip.hh:522
std::ostream & mediumprint(std::ostream &out)
Set medium printing.
Definition: JManip.hh:158