|
static int | day (int y, int m=1, int d=1) |
|
static int | day (int y, int m, int d, bool check) |
|
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 | dow (int y, int m, int d) |
|
static int | dow (int s) |
|
template<typename T > |
static T | fractionalyear (const std::string &s) |
|
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 T > |
static T | num (const std::string &s) |
|
template<typename T > |
static T | nummatch (const std::string &s) |
|
template<typename T > |
static T | fract (const std::string &s) |
|
static int | lookup (const std::string &s, char c) |
|
static int | lookup (const char *s, char c) |
|
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) |
|
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 bool | ParseLine (const std::string &line, std::string &key, std::string &val) |
|
static int | set_digits (int ndigits=0) |
|
template<> |
bool | val (const std::string &s) |
|
Some utility routines for GeographicLib.
Example of use:
#include <iostream>
#include <exception>
try {
int
cout << d2 - d1 << "\n";
}
catch (const exception& e) {
cerr << "Caught exception: " << e.what() << "\n";
return 1;
}
}
Definition at line 35 of file Utility.hpp.
static void GeographicLib::Utility::date |
( |
const std::string & |
s, |
|
|
int & |
y, |
|
|
int & |
m, |
|
|
int & |
d |
|
) |
| |
|
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).
- Parameters
-
[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. |
- Exceptions
-
Definition at line 179 of file Utility.hpp.
template<typename T >
static T GeographicLib::Utility::fractionalyear |
( |
const std::string & |
s | ) |
|
|
inlinestatic |
Convert a string representing a date to a fractional year.
- Template Parameters
-
T | the type of the argument. |
- Parameters
-
[in] | s | the string to be converted. |
- Exceptions
-
- Returns
- the fractional year.
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.
template<typename T >
static std::string GeographicLib::Utility::str |
( |
T |
x, |
|
|
int |
p = -1 |
|
) |
| |
|
inlinestatic |
Convert a object of type T to a string.
- Template Parameters
-
T | the type of the argument. |
- Parameters
-
[in] | x | the value to be converted. |
[in] | p | the precision used (default −1). |
- Exceptions
-
std::bad_alloc | if memory for the string can't be allocated. |
- Returns
- the string representation.
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.
Referenced by GeographicLib::MGRS::Check(), GeographicLib::DMS::DecodeLatLon(), GeographicLib::UTMUPS::DecodeZone(), DistanceStrings(), GeographicLib::DMS::Encode(), GeographicLib::UTMUPS::EncodeZone(), GeographicLib::MGRS::Forward(), GeographicLib::UTMUPS::Forward(), GeographicLib::Geohash::Forward(), GeographicLib::GARS::Forward(), GeographicLib::Georef::Forward(), GeographicLib::OSGB::GridReference(), main(), GeographicLib::SphericalEngine::coeff::readcoeffs(), GeographicLib::Georef::Reverse(), GeographicLib::MGRS::Reverse(), GeographicLib::UTMUPS::Reverse(), and GeographicLib::UTMUPS::StandardZone().
static std::string GeographicLib::Utility::str |
( |
Math::real |
x, |
|
|
int |
p = -1 |
|
) |
| |
|
inlinestatic |
Convert a Math::real object to a string.
- Parameters
-
[in] | x | the value to be converted. |
[in] | p | the precision used (default −1). |
- Exceptions
-
std::bad_alloc | if memory for the string can't be allocated. |
- Returns
- the string representation.
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.
References GeographicLib::Math::isfinite().
template<typename T >
static T GeographicLib::Utility::val |
( |
const std::string & |
s | ) |
|
|
inlinestatic |
Convert a string to type T.
- Template Parameters
-
T | the type of the return value. |
- Parameters
-
[in] | s | the string to be converted. |
- Exceptions
-
- Returns
- object of type 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
- "false", "f", "nil", "no", "n", "off", or "" meaning false,
- "true", "t", "yes", "y", or "on" meaning true;
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.
template<typename ExtT , typename IntT , bool bigendp>
static void GeographicLib::Utility::readarray |
( |
std::istream & |
str, |
|
|
IntT |
array[], |
|
|
size_t |
num |
|
) |
| |
|
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.
- Template Parameters
-
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. |
- Parameters
-
[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. |
- Exceptions
-
Definition at line 494 of file Utility.hpp.
References GeographicLib::Math::bigendian.
template<typename ExtT , typename IntT , bool bigendp>
static void GeographicLib::Utility::writearray |
( |
std::ostream & |
str, |
|
|
const IntT |
array[], |
|
|
size_t |
num |
|
) |
| |
|
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.
- Template Parameters
-
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. |
- Parameters
-
[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. |
- Exceptions
-
Definition at line 563 of file Utility.hpp.
References GeographicLib::Math::bigendian.
int GeographicLib::Utility::set_digits |
( |
int |
ndigits = 0 | ) |
|
|
static |
Set the binary precision of a real number.
- Parameters
-
[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). |
- Returns
- the resulting number of bits of precision.
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.
References GeographicLib::Math::set_digits().
Referenced by main().