21 #include <sqlitepp/sqlitepp.hpp>
75 inline std::ostream & operator << (std::ostream & os, std::pair<vec3d,vec3d>
const & p)
77 os << p.first <<
" " << p.second;
84 inline std::istream &
operator >> (std::istream & is, std::pair<vec3d,vec3d> & p)
99 while (not std::cin.eof())
121 template <
typename T> T
As
123 std::map<std::string,std::string>
const & dict,
124 std::string
const & keyword,
125 std::string
const & name
129 std::map<std::string,std::string>::const_iterator it = dict.find(keyword);
130 if (it == dict.end())
131 throw exception (
"ERROR: \"%s\" requires specifying the parameter \"--%s\"!\n", name.c_str(), keyword.c_str());
135 std::istringstream ss(it->second);
156 virtual std::string
const &
id()
const = 0;
159 virtual std::string
const &
description()
const = 0;
165 virtual std::vector<std::string>
const &
SQL_Update()
const = 0;
168 virtual std::vector<std::string>
const &
deps()
const = 0;
171 virtual std::vector<std::string>
const &
vdeps()
const = 0;
176 virtual bool initialize (sqlitepp::session &
db)
const = 0;
181 sqlitepp::session &
db,
182 std::map<std::string,std::string>
const & params
199 Variable const *
get (std::string
const & id)
const;
213 std::vector<Variable*> list;
234 #define AddNewVariableClass(ClassName) \
235 class ClassName : public Variable \
239 bool initialize (sqlitepp::session & db) const; \
241 static const std::string Id; \
242 std::string const & id () const { return Id; } \
244 static const std::string Description; \
245 std::string const & description () const { return Description; } \
247 static const std::vector<std::string> Dependencies; \
248 std::vector<std::string> const & deps () const { return Dependencies; } \
250 static const std::vector<std::string> VecDependencies; \
251 std::vector<std::string> const & vdeps () const { return VecDependencies; } \
253 std::vector<std::string> const & SQL_CreateTable () const; \
254 std::vector<std::string> const & SQL_Update () const; \
258 sqlitepp::session & db, \
259 std::map<std::string,std::string> const & params \
double change_units(eUnit A, eUnit B)
Energy units change.
Definition: variables.cpp:66
std::vector< Variable * >::iterator iterator
Definition: variables.h:204
virtual std::vector< std::string > const & vdeps() const =0
List of vectorizable scattering event parameters that have to be specified by user.
virtual std::vector< std::string > const & SQL_Update() const =0
SQL statements that update the table after insetion of new data.
const_iterator begin() const
Definition: variables.h:208
std::istream & operator>>(std::istream &is, std::pair< vec3d, vec3d > &p)
Definition: variables.h:84
std::string unit_name(eUnit u)
Energy unit name.
Definition: variables.cpp:126
Base class for scatering variables.
Definition: variables.h:146
aUnit
Definition: hex-db.h:40
virtual ~Variable()
destructor
Definition: variables.h:151
eUnit
Energy units.
Definition: hex-db.h:25
std::vector< T > readStandardInput()
Definition: variables.h:94
iterator end()
Definition: variables.h:207
List of variables.
Definition: variables.h:192
sqlitepp::session db
Definition: hex-db.cpp:31
#define AddNewVariableClass(ClassName)
Create class for a given variable name.
Definition: variables.h:234
virtual std::vector< std::string > const & SQL_CreateTable() const =0
SQL statements that create the required table, or empty vector if not needed.
iterator begin()
Definition: variables.h:206
T As(std::map< std::string, std::string > const &dict, std::string const &keyword, std::string const &name)
Convert dictionary entry to a numeric type.
Definition: variables.h:122
virtual bool initialize(sqlitepp::session &db) const =0
initialize (e.g.) by defining external routines for SQLite
VariableList vlist
forward declaration of the variable list "vlist"
Definition: hex-db.cpp:32
Exception class.
Definition: misc.h:39
virtual std::string const & id() const =0
String identification of the variable.
~VariableList()
Definition: variables.cpp:41
virtual std::string const & description() const =0
Longer description text for use in program help.
std::vector< Variable * >::const_iterator const_iterator
Definition: variables.h:205
const_iterator end() const
Definition: variables.h:209
lUnit
Output (length) units.
Definition: hex-db.h:33
virtual std::vector< std::string > const & deps() const =0
List of all scattering event parameters that have to be specified by user.
virtual bool run(sqlitepp::session &db, std::map< std::string, std::string > const ¶ms) const =0
write out requested data
VariableList()
Definition: variables.cpp:19