ERKALE
ERKALE - DFT from Hel
 All Classes Functions Variables Friends Pages
storage.h
1 /*
2  * This source code is part of
3  *
4  * E R K A L E
5  * -
6  * HF/DFT from Hel
7  *
8  * Written by Susi Lehtola, 2010-2011
9  * Copyright (c) 2010-2011, Susi Lehtola
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13  * as published by the Free Software Foundation; either version 2
14  * of the License, or (at your option) any later version.
15  */
16 
17 #ifndef ERKALE_STORAGE
18 #define ERKALE_STORAGE
19 
20 #include "../global.h"
21 
22 #include <string>
23 #include <vector>
24 
26 typedef struct {
28  std::string name;
30  double val;
31 } double_st_t;
32 
34 typedef struct {
36  std::string name;
38  std::vector<double> val;
40 
42 typedef struct {
44  std::string name;
46  int val;
47 } int_st_t;
48 
50 typedef struct {
52  std::string name;
54  std::vector<int> val;
55 } int_vec_st_t;
56 
58 typedef struct {
60  std::string name;
62  std::string val;
63 } string_st_t;
64 
66 class Storage {
68  std::vector<int_st_t> ints;
70  std::vector<double_st_t> doubles;
72  std::vector<int_vec_st_t> intvec;
74  std::vector<double_vec_st_t> doublevec;
76  std::vector<string_st_t> strings;
77 
78  public:
80  Storage();
82  ~Storage();
83 
85  void add(const int_st_t & val);
87  void add(const double_st_t & val);
89  void add(const int_vec_st_t & val);
91  void add(const double_vec_st_t & val);
93  void add(const string_st_t & val);
94 
96  int get_int(const std::string & name) const;
98  double get_double(const std::string & name) const;
100  std::vector<int> get_int_vec(const std::string & name) const;
102  std::vector<double> get_double_vec(const std::string & name) const;
104  std::string get_string(const std::string & name) const;
105 
107  void set_int(const std::string & name, int val);
109  void set_double(const std::string & name, double val);
111  void set_int_vec(const std::string & name, const std::vector<int> & val);
113  void set_double_vec(const std::string & name, const std::vector<double> & val);
115  void set_string(const std::string & name, const std::string & val);
116 
118  std::vector<std::string> find_int(const std::string & name) const;
120  std::vector<std::string> find_double(const std::string & name) const;
122  std::vector<std::string> find_int_vec(const std::string & name) const;
124  std::vector<std::string> find_double_vec(const std::string & name) const;
126  std::vector<std::string> find_string(const std::string & name) const;
127 
128 
130  void print(bool vals=false) const;
131 };
132 
133 #endif
Class for storing input data.
Definition: storage.h:66
std::string name
Name of entry.
Definition: storage.h:60
std::vector< std::string > find_int(const std::string &name) const
Get possible integer keywords.
Definition: storage.cpp:184
int get_int(const std::string &name) const
Get integer value.
Definition: storage.cpp:49
Integer value.
Definition: storage.h:42
std::vector< int > get_int_vec(const std::string &name) const
Get integer vector.
Definition: storage.cpp:73
int val
Value.
Definition: storage.h:46
std::vector< std::string > find_int_vec(const std::string &name) const
Get possible integer vector keywords.
Definition: storage.cpp:204
void print(bool vals=false) const
Print contents (vector values, too?)
Definition: storage.cpp:234
std::string name
Name of entry.
Definition: storage.h:28
std::vector< std::string > find_double_vec(const std::string &name) const
Get possible double vector keywords.
Definition: storage.cpp:214
void add(const int_st_t &val)
Add integer value.
Definition: storage.cpp:28
void set_string(const std::string &name, const std::string &val)
Get string.
Definition: storage.cpp:169
std::vector< double_st_t > doubles
Stack of doubles.
Definition: storage.h:70
void set_double_vec(const std::string &name, const std::vector< double > &val)
Get double precision vector.
Definition: storage.cpp:155
Array of doubles.
Definition: storage.h:34
std::vector< double > get_double_vec(const std::string &name) const
Get double precision vector.
Definition: storage.cpp:86
void set_int_vec(const std::string &name, const std::vector< int > &val)
Set integer vector.
Definition: storage.cpp:141
~Storage()
Destructor.
Definition: storage.cpp:25
std::vector< double_vec_st_t > doublevec
Stack of double precision arrays.
Definition: storage.h:74
std::string val
Value.
Definition: storage.h:62
std::vector< int > val
Value.
Definition: storage.h:54
std::vector< std::string > find_string(const std::string &name) const
Get possible string keywords.
Definition: storage.cpp:224
std::string name
Name of entry.
Definition: storage.h:36
String value.
Definition: storage.h:58
std::vector< string_st_t > strings
String array.
Definition: storage.h:76
std::vector< int_vec_st_t > intvec
Stack of integer arrays.
Definition: storage.h:72
std::vector< double > val
Value.
Definition: storage.h:38
double val
Value.
Definition: storage.h:30
void set_int(const std::string &name, int val)
Set integer value.
Definition: storage.cpp:113
Storage()
Constructor.
Definition: storage.cpp:22
Array of integers.
Definition: storage.h:50
std::string name
Name of entry.
Definition: storage.h:44
std::string get_string(const std::string &name) const
Get string.
Definition: storage.cpp:99
std::string name
Name of entry.
Definition: storage.h:52
std::vector< std::string > find_double(const std::string &name) const
Get possible double keywords.
Definition: storage.cpp:194
std::vector< int_st_t > ints
Stack of integers.
Definition: storage.h:68
Double precision number.
Definition: storage.h:26
void set_double(const std::string &name, double val)
Set double precision value.
Definition: storage.cpp:127
double get_double(const std::string &name) const
Get double precision value.
Definition: storage.cpp:61