Some utility routines for GeographicLib. More...
#include <Utility.hpp>
Public Member Functions | |
template<> | |
bool | val (const std::string &s) |
Static Public Member Functions | |
static void | date (int s, int &y, int &m, int &d) |
static void | date (const std::string &s, int &y, int &m, int &d) |
static int | day (int y, int m=1, int d=1) |
static int | day (int y, int m, int d, bool check) |
static int | dow (int y, int m, int d) |
static int | dow (int s) |
template<typename T > | |
static T | fract (const std::string &s) |
template<typename T > | |
static T | fractionalyear (const std::string &s) |
static int | lookup (const std::string &s, char c) |
static int | lookup (const char *s, char c) |
template<typename T > | |
static T | num (const std::string &s) |
template<typename T > | |
static T | nummatch (const std::string &s) |
static bool | ParseLine (const std::string &line, std::string &key, std::string &val) |
template<typename ExtT , typename IntT , bool bigendp> | |
static void | readarray (std::istream &str, IntT array[], size_t num) |
template<typename ExtT , typename IntT , bool bigendp> | |
static void | readarray (std::istream &str, std::vector< IntT > &array) |
static int | set_digits (int ndigits=0) |
template<typename T > | |
static std::string | str (T x, int p=-1) |
static std::string | str (Math::real x, int p=-1) |
static std::string | trim (const std::string &s) |
template<typename T > | |
static T | val (const std::string &s) |
template<typename ExtT , typename IntT , bool bigendp> | |
static void | writearray (std::ostream &str, const IntT array[], size_t num) |
template<typename ExtT , typename IntT , bool bigendp> | |
static void | writearray (std::ostream &str, std::vector< IntT > &array) |
Static Private Member Functions | |
static bool | gregorian (int y, int m, int d) |
static bool | gregorian (int s) |
Some utility routines for GeographicLib.
Example of use:
Definition at line 35 of file Utility.hpp.
Given a day (counting from 0001-01-01 as day 1), return the date.
[in] | s | the sequential day number (must be positive) |
[out] | y | the year. |
[out] | m | the month, Jan = 1, etc. |
[out] | d | the day of the month. |
Definition at line 146 of file Utility.hpp.
|
inlinestatic |
Given a date as a string in the format yyyy, yyyy-mm, or yyyy-mm-dd, return the numeric values for the year, month, and day. No checking is done on these values. The string "now" is interpreted as the present date (in UTC).
[in] | s | the date in string format. |
[out] | y | the year. |
[out] | m | the month, Jan = 1, etc. |
[out] | d | the day of the month. |
GeographicErr | is s is malformed. |
Definition at line 179 of file Utility.hpp.
Convert a date to the day numbering sequentially starting with 0001-01-01 as day 1.
[in] | y | the year (must be positive). |
[in] | m | the month, Jan = 1, etc. (must be positive). Default = 1. |
[in] | d | the day of the month (must be positive). Default = 1. |
Definition at line 60 of file Utility.hpp.
Convert a date to the day numbering sequentially starting with 0001-01-01 as day 1.
[in] | y | the year (must be positive). |
[in] | m | the month, Jan = 1, etc. (must be positive). Default = 1. |
[in] | d | the day of the month (must be positive). Default = 1. |
[in] | check | whether to check the date. |
GeographicErr | if the date is invalid and check is true. |
Definition at line 123 of file Utility.hpp.
Given the date, return the day of the week.
[in] | y | the year (must be positive). |
[in] | m | the month, Jan = 1, etc. (must be positive). |
[in] | d | the day of the month (must be positive). |
Definition at line 227 of file Utility.hpp.
Given the sequential day, return the day of the week.
[in] | s | the sequential day (must be positive). |
Definition at line 236 of file Utility.hpp.
|
inlinestatic |
Read a simple fraction, e.g., 3/4, from a string to an object of type T.
T | the type of the return value. |
[in] | s | the string to be converted. |
GeographicErr | is s is not readable as a fraction of type T. |
Definition at line 439 of file Utility.hpp.
|
inlinestatic |
Convert a string representing a date to a fractional year.
T | the type of the argument. |
[in] | s | the string to be converted. |
GeographicErr | if s can't be interpreted as a date. |
The string is first read as an ordinary number (e.g., 2010 or 2012.5); if this is successful, the value is returned. Otherwise the string should be of the form yyyy-mm or yyyy-mm-dd and this is converted to a number with 2010-01-01 giving 2010.0 and 2012-07-03 giving 2012.5.
Definition at line 253 of file Utility.hpp.
Definition at line 37 of file Utility.hpp.
|
inlinestaticprivate |
Definition at line 46 of file Utility.hpp.
|
inlinestatic |
Lookup up a character in a string.
[in] | s | the string to be searched. |
[in] | c | the character to look for. |
c is converted to upper case before search s. Therefore, it is intended that s should not contain any lower case letters.
Definition at line 459 of file Utility.hpp.
|
inlinestatic |
Lookup up a character in a char*.
[in] | s | the char* string to be searched. |
[in] | c | the character to look for. |
c is converted to upper case before search s. Therefore, it is intended that s should not contain any lower case letters.
Definition at line 475 of file Utility.hpp.
|
inlinestatic |
Definition at line 387 of file Utility.hpp.
|
inlinestatic |
Match "nan" and "inf" (and variants thereof) in a string.
T | the type of the return value (this should be a floating point type). |
[in] | s | the string to be matched. |
White space is not allowed at the beginning or end of s.
Definition at line 402 of file Utility.hpp.
|
static |
Parse a KEY VALUE line.
[in] | line | the input line. |
[out] | key | the key. |
[out] | val | the value. |
std::bad_alloc | if memory for the internal strings can't be allocated. |
A # character and everything after it are discarded. If the result is just white space, the routine returns false (and key and val are not set). Otherwise the first token is taken to be the key and the rest of the line (trimmed of leading and trailing white space) is the value.
Definition at line 22 of file Utility.cpp.
|
inlinestatic |
Read data of type ExtT from a binary stream to an array of type IntT. The data in the file is in (bigendp ? big : little)-endian format.
ExtT | the type of the objects in the binary stream (external). |
IntT | the type of the objects in the array (internal). |
bigendp | true if the external storage format is big-endian. |
[in] | str | the input stream containing the data of type ExtT (external). |
[out] | array | the output array of type IntT (internal). |
[in] | num | the size of the array. |
GeographicErr | if the data cannot be read. |
Definition at line 494 of file Utility.hpp.
|
inlinestatic |
Read data of type ExtT from a binary stream to a vector array of type IntT. The data in the file is in (bigendp ? big : little)-endian format.
ExtT | the type of the objects in the binary stream (external). |
IntT | the type of the objects in the array (internal). |
bigendp | true if the external storage format is big-endian. |
[in] | str | the input stream containing the data of type ExtT (external). |
[out] | array | the output vector of type IntT (internal). |
GeographicErr | if the data cannot be read. |
Definition at line 545 of file Utility.hpp.
Set the binary precision of a real number.
[in] | ndigits | the number of bits of precision. If ndigits is 0 (the default), then determine the precision from the environment variable GEOGRAPHICLIB_DIGITS. If this is undefined, use ndigits = 256 (i.e., about 77 decimal digits). |
This only has an effect when GEOGRAPHICLIB_PRECISION = 5. The precision should only be set once and before calls to any other GeographicLib functions. (Several functions, for example Math::pi(), cache the return value in a static local variable. The precision needs to be set before a call to any such functions.) In multi-threaded applications, it is necessary also to set the precision in each thread (see the example GeoidToGTX.cpp).
Definition at line 48 of file Utility.cpp.
|
inlinestatic |
Convert a object of type T to a string.
T | the type of the argument. |
[in] | x | the value to be converted. |
[in] | p | the precision used (default −1). |
std::bad_alloc | if memory for the string can't be allocated. |
If p ≥ 0, then the number fixed format is used with p bits of precision. With p < 0, there is no manipulation of the format.
Definition at line 276 of file Utility.hpp.
|
inlinestatic |
Convert a Math::real object to a string.
[in] | x | the value to be converted. |
[in] | p | the precision used (default −1). |
std::bad_alloc | if memory for the string can't be allocated. |
If p ≥ 0, then the number fixed format is used with p bits of precision. With p < 0, there is no manipulation of the format. This is an overload of str<T> which deals with inf and nan.
Definition at line 294 of file Utility.hpp.
|
inlinestatic |
Trim the white space from the beginning and end of a string.
[in] | s | the string to be trimmed |
Definition at line 324 of file Utility.hpp.
|
inlinestatic |
Convert a string to type T.
T | the type of the return value. |
[in] | s | the string to be converted. |
GeographicErr | is s is not readable as a T. |
White space at the beginning and end of s is ignored.
Special handling is provided for some types.
If T is a floating point type, then inf and nan are recognized.
If T is bool, then s should either be string a representing 0 (false) or 1 (true) or one of the strings
case is ignored.
If T is std::string, then s is returned (with the white space at the beginning and end removed).
Definition at line 359 of file Utility.hpp.
|
inline |
The specialization of Utility::val<T>() for bools.
Definition at line 663 of file Utility.hpp.
|
inlinestatic |
Write data in an array of type IntT as type ExtT to a binary stream. The data in the file is in (bigendp ? big : little)-endian format.
ExtT | the type of the objects in the binary stream (external). |
IntT | the type of the objects in the array (internal). |
bigendp | true if the external storage format is big-endian. |
[out] | str | the output stream for the data of type ExtT (external). |
[in] | array | the input array of type IntT (internal). |
[in] | num | the size of the array. |
GeographicErr | if the data cannot be written. |
Definition at line 563 of file Utility.hpp.
|
inlinestatic |
Write data in an array of type IntT as type ExtT to a binary stream. The data in the file is in (bigendp ? big : little)-endian format.
ExtT | the type of the objects in the binary stream (external). |
IntT | the type of the objects in the array (internal). |
bigendp | true if the external storage format is big-endian. |
[out] | str | the output stream for the data of type ExtT (external). |
[in] | array | the input vector of type IntT (internal). |
GeographicErr | if the data cannot be written. |
Definition at line 610 of file Utility.hpp.