21 #ifndef ERKALE_STRUTIL
22 #define ERKALE_STRUTIL
30 std::string tolower(
const std::string & in);
32 std::string toupper(
const std::string & in);
35 int stricmp(
const std::string & str1,
const std::string & str2);
37 int strcmp(
const std::string & str1,
const std::string & str2);
40 std::string readline(std::istream & in,
bool skipempty=
true,
const std::string & cchars=
"#!");
42 bool isblank(
const std::string & line);
45 std::string readline(FILE *in);
48 std::vector<std::string> splitline(
const std::string & line);
51 std::string trim(
const std::string & line);
54 std::string rem_dbl_whitespace(
const std::string & line);
57 int readint(std::string num);
60 double readdouble(std::string num);
63 void print_E(
const arma::vec & E,
const std::vector<double> & occ,
bool all=
false);
66 std::string memory_size(
size_t size,
bool approx=
false);
69 void print_symmat(
const arma::mat &mat,
bool floatformat=0,
double cutoff=1e-3);
71 void print_mat(
const arma::mat & mat,
const char *fmt=
" % .e");
74 void print_orb(
const arma::mat & C,
const arma::vec & E);
77 std::vector<std::string> parse(std::string in,
const std::string & separator);
80 std::vector<size_t> parse_range(
const std::string & in,
bool convert=
false);
83 std::vector<double> parse_range_double(
const std::string & in);
86 void parse_cube(
const std::string & sizes, std::vector<double> & x, std::vector<double> & y, std::vector<double> & z);
89 std::string space_number(
int num);
92 std::string print_bar(std::string msg,
char pad=
'*',
int width=80,
bool toupper=
true);