Empty class which just contains several (static) tools. More...
#include <Tools.h>
Classes | |
| class | CriticalSectionWithKey |
| Utility to create named critical sections Key should be usable in a std::map. More... | |
| class | DirectoryChanger |
| Tiny class that changes directory and comes back when going out of scope. More... | |
| class | FastStringUnorderedMap |
| Tiny class implementing faster std::string_view access to an unordered_map It exposes a limited number of methods of std::unordered_map. More... | |
Static Public Member Functions | |
| static double | bessel0 (const double &val) |
| Modified 0th-order Bessel function of the first kind. | |
| static bool | caseInSensStringCompare (std::string_view str1, std::string_view str2) |
| compare two string in a case insensitive manner | |
| static std::string | concatenateExceptionMessages () |
| Build a concatenated exception message. | |
| template<typename T, typename U> | |
| static void | convert (const T &t, U &u) |
| static bool | convertNoexcept (const std::string &str, AtomNumber &t) |
| Convert a string to a atom number, reading it. | |
| static bool | convertNoexcept (const std::string &str, double &t) |
| Convert a string to a double, reading it. | |
| static bool | convertNoexcept (const std::string &str, float &t) |
| Convert a string to a float, reading it. | |
| static bool | convertNoexcept (const std::string &str, int &t) |
| Convert a string to a int, reading it. | |
| static bool | convertNoexcept (const std::string &str, long double &t) |
| Convert a string to a long double, reading it. | |
| static bool | convertNoexcept (const std::string &str, long int &t) |
| Convert a string to a long int, reading it. | |
| static bool | convertNoexcept (const std::string &str, long long int &t) |
| Convert a string to a long long int, reading it. | |
| static bool | convertNoexcept (const std::string &str, long long unsigned &t) |
| Convert a string to a long long unsigned int, reading it. | |
| static bool | convertNoexcept (const std::string &str, long unsigned &t) |
| Convert a string to a long unsigned int, reading it. | |
| static bool | convertNoexcept (const std::string &str, std::string &t) |
| Convert a string to a string (i.e. copy) | |
| static bool | convertNoexcept (const std::string &str, unsigned &t) |
| Convert a string to an unsigned int, reading it. | |
| template<typename T> | |
| static bool | convertNoexcept (T i, std::string &str) |
| Convert anything into a string. | |
| static std::string | convertRegexForJson (const std::string &command) |
| Correct the "escape sequences" from regexes to be compatible with the json format. | |
| static std::string | extension (const std::string &) |
| Extract the extensions from a file name. | |
| template<int exp, typename T = double> | |
| static constexpr T | fastpow (T base) |
| Fast int power for power known at compile time. | |
| template<typename T> | |
| static constexpr T | fastpow (T base, int exp) |
| Fast int power. | |
| static bool | findKeyword (const std::vector< std::string > &line, const std::string &key) |
| Find a keyword on the input line, just reporting if it exists or not. | |
| static bool | getKey (std::vector< std::string > &line, const std::string &key, std::string &s, int rep=-1) |
| Retrieve a key from a vector of options. | |
| static bool | getline (FILE *, std::string &line) |
| Get a line from the file pointer ifile. | |
| static bool | getParsedLine (IFile &ifile, std::vector< std::string > &line, const bool trimcomments=true) |
| Get a parsed line from the file pointer ifile This function already takes care of joining continued lines and splitting the resulting line into an array of words. | |
| static std::vector< std::string > | getWords (std::string_view line, const char *sep=NULL, int *parlevel=NULL, const char *parenthesis="{", bool delete_parenthesis=true) |
| Split the line in words using separators. | |
| static void | getWordsSimple (gch::small_vector< std::string_view > &words, std::string_view line) |
| Faster version This version does not parse parenthesis and operates on a preallocated small_vector of string_view's. | |
| static void | getWordsSimple (gch::small_vector< std::string_view > &words, std::string_view line, std::string_view sep) |
| static void | interpretLabel (std::vector< std::string > &s) |
| interpret ":" syntax for labels | |
| static void | interpretRanges (std::vector< std::string > &) |
| Interpret atom ranges. | |
| static std::vector< std::string > | ls (const std::string &) |
| list files in a directory | |
| static void | ltrim (std::string &s) |
| Remove leading blanks. | |
| template<class T, class... Args> | |
| static auto | make_unique (Args &&... args) |
| static std::unique_ptr< std::lock_guard< std::mutex > > | molfile_lock () |
| template<typename T> | |
| static bool | parse (std::string_view argument, T &val) |
| Parse the argument and eventually unrave the variant for the current replica. | |
| template<typename T> | |
| static bool | parse (std::vector< std::string > &line, const std::string &key, T &val, int rep=-1) |
| Find a keyword on the input line, eventually deleting it, and saving its value to val. | |
| static bool | parseFlag (std::vector< std::string > &line, const std::string &key, bool &val) |
| Find a keyword without arguments on the input line. | |
| template<class T> | |
| static bool | parseVector (const std::string_view argument, std::vector< T > &val, int rep=-1) |
| template<class T> | |
| static bool | parseVector (std::vector< std::string > &line, const std::string &key, std::vector< T > &val, int rep=-1) |
| Find a keyword on the input line, eventually deleting it, and saving its value to a vector. | |
| static double | pbc (double) |
| Apply pbc for a unitary cell. | |
| template<typename T> | |
| static void | removeDuplicates (std::vector< T > &vec) |
| Remove duplicates from a vector of type T. | |
| template<typename T, unsigned n, unsigned m> | |
| static void | set_to_zero (std::vector< TensorTyped< T, n, m > > &vec) |
| template<typename T, unsigned n> | |
| static void | set_to_zero (std::vector< VectorTyped< T, n > > &vec) |
| template<typename T> | |
| static void | set_to_zero (T *ptr, const unsigned n) |
| static bool | startWith (std::string_view full, std::string_view start) |
| Check if a string full starts with string start. | |
| static void | stripLeadingAndTrailingBlanks (std::string &str) |
| removes leading and trailing blanks from a string | |
| static void | trim (std::string &s) |
| Convert anything into anything, throwing an exception in case there is an error Remove trailing blanks. | |
| static void | trimComments (std::string &s) |
| Remove trailing comments. | |
| template<typename T> | |
| static std::vector< const T * > | unique2raw (const std::vector< std::unique_ptr< const T > > &) |
| Tool to create a vector of raw pointers from a vector of unique_pointers. | |
| template<typename T> | |
| static std::vector< T * > | unique2raw (const std::vector< std::unique_ptr< T > > &) |
| Tool to create a vector of raw pointers from a vector of unique_pointers (const version). | |
| static std::string_view | unravelReplicas (std::string_view argument, int rep=-1) |
Static Public Attributes | |
| static constexpr std::string_view | replicaToken ="@replicas:" |
Static Private Member Functions | |
| template<class T> | |
| static bool | convertToAny (const std::string &str, T &t) |
| class to convert a string to a generic type T | |
| template<class T> | |
| static bool | convertToInt (const std::string &str, T &t) |
| class to convert a string to a int type T | |
| template<class T> | |
| static bool | convertToReal (const std::string &str, T &t) |
| class to convert a string to a real type T. | |
| template<int exp, typename T = double, std::enable_if_t<(exp >=0), bool > = true> | |
| static constexpr T | fastpow_rec (T base, T result) |
| the recursive part of the template fastpow implementation | |
Empty class which just contains several (static) tools.
|
static |
Modified 0th-order Bessel function of the first kind.
|
static |
compare two string in a case insensitive manner
|
static |
Build a concatenated exception message.
Should be called with an in-flight exception.
|
inlinestatic |
|
static |
Convert a string to a atom number, reading it.
|
static |
Convert a string to a double, reading it.
|
static |
Convert a string to a float, reading it.
|
static |
Convert a string to a int, reading it.
|
static |
Convert a string to a long double, reading it.
|
static |
Convert a string to a long int, reading it.
|
static |
Convert a string to a long long int, reading it.
|
static |
Convert a string to a long long unsigned int, reading it.
|
static |
Convert a string to a long unsigned int, reading it.
|
static |
Convert a string to a string (i.e. copy)
|
static |
Convert a string to an unsigned int, reading it.
|
static |
Convert anything into a string.
|
static |
Correct the "escape sequences" from regexes to be compatible with the json format.
C++ wants a raw string (like R"<<(content)<<") for the regexes and the python package json (and the json format itself actually) wants the various '\' to be escaped with and '\' becasue the interpreter tries to read anything that begins with '\' as an escape sequence (it does not know that it is an input for a regex)
For example '
' will not cause an error but it will be intepreted as and explicit newline, so we we want '\n' in the json whereas '.' will cause an erron when read by python
|
staticprivate |
class to convert a string to a generic type T
|
staticprivate |
class to convert a string to a int type T
|
staticprivate |
class to convert a string to a real type T.
T should be either float, double, or long double
|
static |
Extract the extensions from a file name.
E.g.: extension("pippo.xyz")="xyz". It only returns extensions with a length between 1 and 4 E.g.: extension("pippo.12345")="" whereas extenion("pippo.1234")="1234"; It is also smart enough to detect "/", so that extension("pippo/.t")="" whereas extension("pippo/a.t")="t"
|
inlinestaticconstexpr |
Fast int power for power known at compile time.
|
inlinestaticconstexpr |
Fast int power.
|
inlinestaticconstexprprivate |
the recursive part of the template fastpow implementation
|
static |
Find a keyword on the input line, just reporting if it exists or not.
|
static |
Retrieve a key from a vector of options.
It finds a key starting with "key=" or equal to "key" and copy the part after the = on s. E.g.: line.push_back("aa=xx"); getKey(line,"aa",s); will set s="xx"
|
static |
Get a line from the file pointer ifile.
|
static |
Get a parsed line from the file pointer ifile This function already takes care of joining continued lines and splitting the resulting line into an array of words.
|
static |
Split the line in words using separators.
It also take into account parenthesis. Outer parenthesis found are removed from output, and the text between them is considered as a single word. Only the outer parenthesis are processed, to allow nesting them. parlevel, if not NULL, is increased or decreased according to the number of opened/closed parenthesis
|
static |
Faster version This version does not parse parenthesis and operates on a preallocated small_vector of string_view's.
|
static |
|
static |
interpret ":" syntax for labels
|
static |
Interpret atom ranges.
|
static |
list files in a directory
|
static |
Remove leading blanks.
|
inlinestatic |
|
static |
|
static |
Parse the argument and eventually unrave the variant for the current replica.
|
static |
Find a keyword on the input line, eventually deleting it, and saving its value to val.
|
inlinestatic |
Find a keyword without arguments on the input line.
|
static |
|
static |
Find a keyword on the input line, eventually deleting it, and saving its value to a vector.
|
inlinestatic |
Apply pbc for a unitary cell.
beware: this brings any number into a pbc that ranges from -0.5 to 0.5
|
static |
Remove duplicates from a vector of type T.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
static |
Check if a string full starts with string start.
Same as full.find(start)==0, but faster
|
static |
removes leading and trailing blanks from a string
|
static |
Convert anything into anything, throwing an exception in case there is an error Remove trailing blanks.
|
static |
Remove trailing comments.
|
static |
Tool to create a vector of raw pointers from a vector of unique_pointers.
See the non const version.
|
static |
Tool to create a vector of raw pointers from a vector of unique_pointers (const version).
Returning a vector is fast in C++11. It can be used in order to feed a vector<unique_ptr<T>> to a function that takes a vector<T*>.
// some function that takes a vec void func(std::vector<Data*> & vec); std::vector<std::unique_ptr<Data>> vec; // func(vec); // does not compile func(Tools::unique2raw(vec)); // compiles
Notice that the conversion is fast but takes some time to allocate the new vector and copy the pointers. In case the function acting on the vector<T*> is very fast and we do not want to add significant overhead, it might be convenient to store a separate set of raw pointers.
// some function that takes a vec
void func(std::vector<Data*> & vec);
std::vector<std::unique_ptr<Data>> vec;
// conversion done only once:
auto vec_ptr=Tools::unique2raw(vec);
for(int i=0;i<1000;i++){
func(vec_ptr);
}
|
static |
|
staticconstexpr |
Hosted by GitHub
|
1.13.2
|