|
coral
A C++ library for distributed co-simulation
|
Misc. utilities (i.e., stuff that didn't really fit anywhere else). More...
Namespaces | |
| zip | |
| Utilities for dealing with ZIP archives. | |
Classes | |
| class | TempDir |
| An RAII object that creates a unique directory on construction and recursively deletes it again on destruction. More... | |
Functions | |
| std::vector< std::string > | CommandLine (int argc, char const *const *argv) |
| Returns a string vector with the same contents as the standard C program argument array. | |
| boost::optional< boost::program_options::variables_map > | ParseArguments (const std::vector< std::string > &args, boost::program_options::options_description options, const boost::program_options::options_description &positionalOptions, const boost::program_options::positional_options_description &positions, std::ostream &helpOutput, const std::string &commandName, const std::string &commandDescription, const std::string &extraHelp=std::string()) |
| Parses program arguments and, if necessary, prints a help message. More... | |
| void | EncodeUint16 (std::uint16_t source, char target[2]) |
| Encodes a 16-bit unsigned integer using little-endian byte order. | |
| void | EncodeUint32 (std::uint32_t source, char target[4]) |
| Encodes a 32-bit unsigned integer using little-endian byte order. | |
| void | EncodeUint64 (std::uint64_t source, char target[8]) |
| Encodes a 64-bit unsigned integer using little-endian byte order. | |
| std::uint16_t | DecodeUint16 (const char source[2]) |
| Decodes a 16-bit unsigned integer using little-endian byte order. | |
| std::uint32_t | DecodeUint32 (const char source[4]) |
| Decodes a 32-bit unsigned integer using little-endian byte order. | |
| std::uint64_t | DecodeUint64 (const char source[8]) |
| Decodes a 64-bit unsigned integer using little-endian byte order. | |
| int | ArrayStringCmp (const char *array, size_t length, const char *stringz) |
| Given a character array and its length, compares it lexicographically to a zero-terminated string. More... | |
| std::string | RandomUUID () |
| Returns a string that contains a random UUID. | |
| std::string | RandomString (size_t size, const char *charSet) |
| Creates a random string. More... | |
| std::string | Timestamp () |
| Returns the current UTC time in the ISO 8601 "basic" format. More... | |
| template<typename T1 , typename T2 > | |
| T1 | MoveAndReplace (T1 &variable, const T2 &replacement) |
| Moves a value, replacing it with another one. More... | |
| template<typename T > | |
| T | MoveAndReplace (T &variable) |
Overload of MoveAndReplace() that replaces variable with a default-constructed value. | |
| template<typename F > | |
| void | LastCall (F &f) |
| Calls the given function(-like object), but only after swapping it with a default-constructed one. More... | |
| template<typename Action > | |
| ScopeGuard< Action > | OnScopeExit (Action action) |
| Scope guard. More... | |
| void | SpawnProcess (const std::string &program, const std::vector< std::string > &args) |
| Starts a new process. More... | |
| boost::filesystem::path | ThisExePath () |
| Returns the path of the current executable. More... | |
Misc. utilities (i.e., stuff that didn't really fit anywhere else).
| int coral::util::ArrayStringCmp | ( | const char * | array, |
| size_t | length, | ||
| const char * | stringz | ||
| ) |
Given a character array and its length, compares it lexicographically to a zero-terminated string.
This is equivalent to std::strcmp, except that it only requires one of the arrays (stringz) to be null-terminated.
| void coral::util::LastCall | ( | F & | f | ) |
Calls the given function(-like object), but only after swapping it with a default-constructed one.
This is useful for function objects that may only be called once, such as one-shot callbacks.
LastCall(f, x) is equivalent to the following:
Thus, f will be left in its default-constructed state even if it throws. (However, if the default constructor throws in the first line, f will never be called at all.)
| T1 coral::util::MoveAndReplace | ( | T1 & | variable, |
| const T2 & | replacement | ||
| ) |
Moves a value, replacing it with another one.
This function works just like std::move, except that it only works on lvalues and assigns an explicit value to the variable which is being moved from. This is inefficient for types that provide move semantics (std::move should be used for those), but useful for e.g. built-in types.
| ScopeGuard<Action> coral::util::OnScopeExit | ( | Action | action | ) |
Scope guard.
This function creates a generic RAII object that will execute a user-defined action on scope exit.
| boost::optional<boost::program_options::variables_map> coral::util::ParseArguments | ( | const std::vector< std::string > & | args, |
| boost::program_options::options_description | options, | ||
| const boost::program_options::options_description & | positionalOptions, | ||
| const boost::program_options::positional_options_description & | positions, | ||
| std::ostream & | helpOutput, | ||
| const std::string & | commandName, | ||
| const std::string & | commandDescription, | ||
| const std::string & | extraHelp = std::string() |
||
| ) |
Parses program arguments and, if necessary, prints a help message.
This is a convenience function which takes two sets of program options, options and positionalOptions, where the former contains the ones that should be specified by the user with switches (e.g. --foo) and the latter contains the ones that are specified using "normal" (positional) arguments, and performs the following actions:
--help option to options.args, mapping them to options specified in options and positionalOptions.--help option was specified, or positional arguments were expected and args is empty, prints a help message and returns an empty/false object.If an empty/false object is returned, it is recommended that the program exits more or less immediately.
The help message is constructed using boost::program_options own formatted output functions, so it is recommended to include helpful option descriptions when adding options to options and positionalOptions.
| [in] | args | The command-line arguments as they were passed to the program (not including the program name). |
| [in] | options | The options that should be specified with command-line switches (i.e., –switch or -s). |
| [in] | positionalOptions | The options that should be interpreted as positional arguments. |
| [in] | positions | An object that describes how to map positional arguments to options. |
| [in,out] | helpOutput | The output stream to which a help message should be written. |
| [in] | commandName | The command name, as it should be displayed in the help message. |
| [in] | commandDescription | A description of what the command does, for the help message. |
| [in] | extraHelp | Text to output below the standard help message. |
| std::string coral::util::RandomString | ( | size_t | size, |
| const char * | charSet | ||
| ) |
Creates a random string.
This creates a string of the given size by randomly selecting characters from charSet, which must be a null-terminated string.
| std::invalid_argument | If charSet is null or empty. |
| void coral::util::SpawnProcess | ( | const std::string & | program, |
| const std::vector< std::string > & | args | ||
| ) |
Starts a new process.
Windows warning: This function only supports a very limited form of argument quoting. The elements of args may contain spaces, but no quotation marks or other characters that are considered "special" in a Windows command line.
| boost::filesystem::path coral::util::ThisExePath | ( | ) |
Returns the path of the current executable.
| std::runtime_error | if the path could for some reason not be determined. |
| std::string coral::util::Timestamp | ( | ) |
Returns the current UTC time in the ISO 8601 "basic" format.
This returns a string on the form yyyymmddThhmmssZ (where the lower-case letters represent the date/time numbers).
1.8.11