14 string sys_type, sys_def;
15 string data_def, data_id, data_type, data_info;
23parameter::parameter(
string line) {
24 stringstream sst(line);
30 if (data_type ==
"str") {
36 if (data_type ==
"num") {
48 string sys_type, sys_def, sys_file;
51 object(
string type,
string def,
string file);
52 object(
string type,
string def);
54 int ic(
string type,
string def);
57 double fp(
string symb);
58 vector<double> vctp(
string symb);
59 string sp(
string symb);
60 vector<string> svct(
string symb);
61 void fval_p(
string symb,
double val);
62 void sval_p(
string symb,
string val);
63 void vct_fp(
string symb, vector<double> vct);
64 void vct_sp(
string symb, vector<string> vct);
69string get_str_parameter(vector<parameter> &par,
string sys_type,
70 string sys_def,
string data_id) {
72 for (
size_t np = 0; np < par.size(); np++) {
73 if (par[np].sys_type == sys_type && par[np].sys_def == sys_def &&
74 par[np].data_id == data_id) {
75 string val = par[np].str[par[np].pos];
77 if (par[np].pos < par[np].str.size() - 1) {
78 par[np].pos = par[np].pos + 1;
90double get_num_parameter(vector<parameter> &par,
string sys_type,
91 string sys_def,
string data_id) {
93 for (
size_t np = 0; np < par.size(); np++) {
94 if (par[np].sys_type == sys_type && par[np].sys_def == sys_def &&
95 par[np].data_id == data_id) {
96 double val = par[np].vct[par[np].pos];
98 if (par[np].pos < par[np].vct.size() - 1) {
99 par[np].pos = par[np].pos + 1;
110void print_parameter_value(vector<parameter> &p,
string sys_type,
111 string sys_def,
string data_id) {
113 for (
size_t np = 0; np < p.size(); np++) {
114 if (p[np].sys_type == sys_type && p[np].sys_def == sys_def &&
115 p[np].data_id == data_id) {
117 cout << p[np].sys_type <<
" " << p[np].sys_def <<
" " << p[np].data_def
118 <<
" " << p[np].data_id <<
" " << p[np].str[p[np].pos] << endl;
121 if (found ==
false) {
122 cout <<
"none found" << endl;
161void get_parameters(vector<parameter> &par,
string sys_type,
string sys_def,
165 p_file.open(input_file);
166 if (!p_file.good()) {
167 cout <<
"input file not found " << endl;
173 string line_txt, type, def, txt, str;
175 bool par_set_found =
false, sys_found =
false;
178 getline(p_file, line_txt);
179 stringstream sst(line_txt);
182 if (type == sys_type && def == sys_def) {
186 while (!par_set_found) {
187 getline(p_file, line_txt);
188 stringstream sst(line_txt);
191 if (txt ==
"input" || txt ==
"prop" || txt ==
"output") {
192 p.sys_type = sys_type;
200 bool str_complete =
false;
204 vector<char> cstr(str.begin(), str.end());
205 if (!str_complete && cstr[0] !=
'#') {
206 if (p.data_type ==
"str") {
207 p.str.push_back(str);
209 if (p.data_type ==
"num") {
210 p.vct.push_back(stod(str));
213 if (cstr[0] ==
'#') {
216 if (str_complete && cstr[0] !=
'#') {
217 p.data_info = str +
" ";
228 if (txt !=
"input" && txt !=
"output" && txt !=
"prop") {
229 par_set_found =
true;
244object::object(
string type,
string def,
string file) {
248 get_parameters(p, type, def, file);
251object::object(
string type,
string def) {
254 if (type ==
"equipment") {
255 get_parameters(p, type, def, DIR +
"Database/Equipment_database");
257 if (type ==
"consumable") {
258 get_parameters(p, type, def, DIR +
"Database/Consumables_database");
260 if (type ==
"solid_residue") {
261 get_parameters(p, type, def, DIR +
"Database/Consumables_database");
267void export_output_parameters(
object &obj,
string file) {
268 ofstream output_parameters(file);
270 for (
size_t np = 0; np < obj.p.size(); np++) {
271 if (obj.p[np].data_def ==
"output") {
272 output_parameters << obj.p[np].sys_type <<
" " << obj.p[np].sys_def <<
" "
273 << obj.p[np].data_id <<
" " << obj.p[np].data_type;
275 if (obj.p[np].data_type ==
"str") {
276 for (
size_t ns = 0; ns < obj.p[np].str.size(); ns++) {
277 output_parameters <<
" " << obj.p[np].str[ns];
281 if (obj.p[np].data_type ==
"num") {
282 for (
size_t ns = 0; ns < obj.p[np].vct.size(); ns++) {
283 output_parameters <<
" " << obj.p[np].vct[ns];
287 output_parameters << endl;
291 output_parameters.close();
297 cout << p.data_id <<
" " << p.data_type;
299 if (p.data_type ==
"str") {
300 for (
size_t ns = 0; ns < p.str.size(); ns++) {
301 cout <<
" " << p.str[ns];
306 if (p.data_type ==
"num") {
307 for (
size_t ns = 0; ns < p.vct.size(); ns++) {
308 cout <<
" " << p.vct[ns];
316void print_parameters(
object &obj) {
317 cout <<
" -------------------------------------- " << endl;
318 cout << obj.sys_type <<
" " << obj.sys_def <<
" parameters: " << endl;
319 cout <<
" -------------------------------------- " << endl;
321 for (
size_t np = 0; np < obj.p.size(); np++) {
322 print_parameter(obj.p[np]);
339 cout <<
" -------------------------------------- " << endl;
341 if (obj.c.size() > 0) {
342 for (
size_t nc = 0; nc < obj.c.size(); nc++) {
343 print_parameters(obj.c[nc]);
350double fp(vector<parameter> &par,
string sys_type,
string sys_def,
352 return get_num_parameter(par, sys_type, sys_def, data_id);
357string sp(vector<parameter> &par,
string sys_type,
string sys_def,
359 return get_str_parameter(par, sys_type, sys_def, data_id);
364vector<string> sp_vct(vector<parameter> &par,
string sys_type,
string sys_def,
368 for (
size_t np = 0; np < par.size(); np++) {
369 if (par[np].sys_type == sys_type && par[np].sys_def == sys_def &&
370 par[np].data_id == data_id) {
371 for (
size_t n = 0; n < par[np].str.size(); n++) {
372 vct.push_back(par[np].str[n]);
378 if (found ==
false) {
386int object::ic(
string type,
string def) {
387 for (
size_t n = 0; n < c.size(); n++) {
388 if (c[n].sys_type == type && c[n].sys_def == def) {
395int object::ip(
string symb) {
397 for (
size_t np = 0; np < p.size(); np++) {
398 if (p[np].data_id == symb) {
406bool object::bp(
string symb) {
408 for (
size_t np = 0; np < p.size(); np++) {
409 if (p[np].data_id == symb) {
419double object::fp(
string symb) {
420 return get_num_parameter(p, sys_type, sys_def, symb);
425string object::sp(
string symb) {
426 return get_str_parameter(p, sys_type, sys_def, symb);
431vector<string> object::svct(
string symb) {
432 return sp_vct(p, sys_type, sys_def, symb);
437void val_p(vector<parameter> &par,
string data_def,
string sys_type,
438 string sys_def,
string data_id,
double val) {
442 for (
size_t np = 0; np < par.size(); np++) {
443 if (par[np].sys_type == sys_type && par[np].sys_def == sys_def &&
444 par[np].data_id == data_id) {
445 par[np].vct.push_back(val);
446 par[np].pos = par[np].str.size() - 1;
450 if (found ==
false) {
453 p.data_def = data_def;
454 p.sys_type = sys_type;
458 p.vct.push_back(val);
466void object::fval_p(
string symb,
double val) {
467 if (divide_string(symb,
'-').size() == 1) {
468 val_p(p,
"prop", sys_type, sys_def, symb, val);
470 if (divide_string(symb,
'-').size() == 2) {
471 val_p(p, divide_string(symb,
'-')[0], sys_type, sys_def,
472 divide_string(symb,
'-')[1], val);
478void str_p(vector<parameter> &par,
string data_def,
string sys_type,
479 string sys_def,
string data_id,
string val) {
483 for (
size_t np = 0; np < par.size(); np++) {
484 if (par[np].sys_type == sys_type && par[np].sys_def == sys_def &&
485 par[np].data_id == data_id) {
486 par[np].str.push_back(val);
487 par[np].pos = par[np].str.size() - 1;
491 if (found ==
false) {
494 p.data_def = data_def;
495 p.sys_type = sys_type;
499 p.str.push_back(val);
507void object::sval_p(
string symb,
string val) {
508 if (divide_string(symb,
'-').size() == 1) {
509 str_p(p,
"prop", sys_type, sys_def, symb, val);
511 if (divide_string(symb,
'-').size() == 2) {
512 str_p(p, divide_string(symb,
'-')[0], sys_type, sys_def,
513 divide_string(symb,
'-')[1], val);
519vector<double> fp_vct(vector<parameter> &par,
string sys_type,
string sys_def,
523 for (
size_t np = 0; np < par.size(); np++) {
524 if (par[np].sys_type == sys_type && par[np].sys_def == sys_def &&
525 par[np].data_id == data_id) {
526 for (
size_t n = 0; n < par[np].vct.size(); n++) {
527 vct.push_back(par[np].vct[n]);
538vector<double> object::vctp(
string symb) {
539 return fp_vct(p, sys_type, sys_def, symb);
544void fvct_p(vector<parameter> &par,
string data_def,
string sys_type,
545 string sys_def,
string data_id, vector<double> val) {
548 for (
size_t np = 0; np < par.size(); np++) {
549 if (par[np].sys_type == sys_type && par[np].sys_def == sys_def &&
550 par[np].data_id == data_id) {
552 for (
size_t n = 0; n < val.size(); n++) {
553 par[np].vct.push_back(val[n]);
559 if (found ==
false) {
562 p.data_def = data_def;
563 p.sys_type = sys_type;
568 for (
size_t n = 0; n < val.size(); n++) {
569 p.vct.push_back(val[n]);
579void object::vct_fp(
string symb, vector<double> vct) {
580 if (divide_string(symb,
'-').size() == 1) {
581 fvct_p(p,
"prop", sys_type, sys_def, symb, vct);
583 if (divide_string(symb,
'-').size() == 2) {
584 fvct_p(p, divide_string(symb,
'-')[0], sys_type, sys_def,
585 divide_string(symb,
'-')[1], vct);
591void svct_p(vector<parameter> &par,
string data_def,
string sys_type,
592 string sys_def,
string data_id, vector<string> val) {
595 for (
size_t np = 0; np < par.size(); np++) {
596 if (par[np].sys_type == sys_type && par[np].sys_def == sys_def &&
597 par[np].data_id == data_id) {
599 for (
size_t n = 0; n < val.size(); n++) {
600 par[np].str.push_back(val[n]);
606 if (found ==
false) {
609 p.data_def = data_def;
610 p.sys_type = sys_type;
615 for (
size_t n = 0; n < val.size(); n++) {
616 p.str.push_back(val[n]);
624void object::vct_sp(
string symb, vector<string> vct) {
625 if (divide_string(symb,
'-').size() == 1) {
626 svct_p(p,
"prop", sys_type, sys_def, symb, vct);
628 if (divide_string(symb,
'-').size() == 2) {
629 svct_p(p, divide_string(symb,
'-')[0], sys_type, sys_def,
630 divide_string(symb,
'-')[1], vct);
634void transfer_parameter(
string symb,
object from,
object &to) {
635 to.p.push_back(from.p[from.ip(symb)]);
Definition Parameters.cpp:46
Definition Parameters.cpp:12