libosmscout 1.1.1
Loading...
Searching...
No Matches
Utility stuff
Collaboration diagram for Utility stuff:

Classes

class  osmscout::Breaker
class  osmscout::Cache< K, V, IK >
class  osmscout::CLASS_FINAL< DataLoader >

Typedefs

using osmscout::OSMId = int64_t
using osmscout::Id = uint64_t
using osmscout::FileOffset = uint64_t
using osmscout::TypeId = uint16_t

Functions

template<typename N>
unsigned int osmscout::EncodeNumberSigned (N number, char *buffer)
template<typename N>
unsigned int osmscout::EncodeNumberUnsigned (N number, char *buffer)
template<typename N>
unsigned int osmscout::EncodeNumber (N number, char *buffer)
template<typename N, size_t S>
unsigned int osmscout::EncodeNumber (N number, std::array< char, S > &buffer)
template<typename N>
unsigned int osmscout::DecodeNumberSigned (const char *buffer, N &number)
template<typename N>
unsigned int osmscout::DecodeNumberUnsigned (const char *buffer, N &number)
template<typename N>
unsigned int osmscout::DecodeNumber (const char *buffer, N &number)
template<typename N>
osmscout::BitsToBytes (N bits)
template<typename N>
uint8_t osmscout::BytesNeededToEncodeNumber (N number)
template<typename N>
uint8_t osmscout::BitsNeededToEncodeNumber (N number)
OSMSCOUT_API uint64_t osmscout::InterleaveNumbers (uint32_t a, uint32_t b)
OSMSCOUT_API GeoCoord osmscout::PolygonCenter (const Area &area, double precision=1)
OSMSCOUT_API bool osmscout::StringToBool (const char *string, bool &value)
OSMSCOUT_API bool osmscout::GetDigitValue (char digit, size_t &result)
template<typename N>
bool osmscout::StringToNumber (const std::string &string, N &number, size_t base=10)
OSMSCOUT_API bool osmscout::StringToNumber (const char *string, double &value)
OSMSCOUT_API bool osmscout::StringToNumber (const std::string &string, double &value)
OSMSCOUT_API size_t osmscout::CountWords (const std::string &text)
OSMSCOUT_API std::list< std::string > osmscout::SplitStringAtSpace (const std::string &input)
OSMSCOUT_API std::list< std::string > osmscout::SplitString (const std::string &stringList, const std::string &separator, int maxSize=-1)
OSMSCOUT_API std::string osmscout::ReplaceString (const std::string &in, const std::string &search, const std::string &replacement)
OSMSCOUT_API std::string osmscout::GetFirstInStringList (const std::string &stringList, const std::string &divider)
OSMSCOUT_API void osmscout::TokenizeString (const std::string &input, std::list< std::string > &tokens)
OSMSCOUT_API void osmscout::SimplifyTokenList (std::list< std::string > &tokens)
OSMSCOUT_API void osmscout::GroupStringListToStrings (std::list< std::string >::const_iterator token, size_t listSize, size_t parts, std::list< std::list< std::string > > &lists)
OSMSCOUT_API std::string osmscout::ByteSizeToString (FileOffset size, const Locale &locale=Locale::ByEnvironmentSafe())
OSMSCOUT_API std::wstring osmscout::LocaleStringToWString (const std::string &text)
OSMSCOUT_API std::string osmscout::WStringToLocaleString (const std::wstring &text)
OSMSCOUT_API std::wstring osmscout::UTF8StringToWString (const std::string &text)
OSMSCOUT_API std::u32string osmscout::UTF8StringToU32String (const std::string &text)
OSMSCOUT_API std::string osmscout::WStringToUTF8String (const std::wstring &text)
OSMSCOUT_API std::string osmscout::LocaleStringToUTF8String (const std::string &text)
OSMSCOUT_API std::string osmscout::UTF8StringToLocaleString (const std::string &text)

Variables

OSMSCOUT_API const double osmscout::lonConversionFactor
OSMSCOUT_API const double osmscout::latConversionFactor
const size_t osmscout::coordByteSize =7

Detailed Description

General utility stuff like enhanced string operations, special data structures...

Typedef Documentation

◆ FileOffset

using osmscout::FileOffset = uint64_t

Type for describing the position of data within a file.

◆ Id

using osmscout::Id = uint64_t

Type to be used for libosmscout internal ids (unsigned numbers with 64 bit size).

◆ OSMId

using osmscout::OSMId = int64_t

Type to be used for OSM ids (signed numbers with 64 bit size).

◆ TypeId

using osmscout::TypeId = uint16_t

Type for describing a type of an way, area or node.

Function Documentation

◆ BitsNeededToEncodeNumber()

template<typename N>
uint8_t osmscout::BitsNeededToEncodeNumber ( N number)

Returns the number of bytes needed to encode the number. The function calculates the number of bytes that contain information, dropping leading bytes that only contain zero.

◆ BitsToBytes()

template<typename N>
N osmscout::BitsToBytes ( N bits)
inline

Returns the number of bytes needed to encode the given number of bits.

◆ ByteSizeToString()

OSMSCOUT_API std::string osmscout::ByteSizeToString ( FileOffset size,
const Locale & locale = Locale::ByEnvironmentSafe() )
extern

Prints byte size with short, human readable form by ISO/IEC 80000 standard. It means that KiB stands for 1024 bytes, MiB for 1024^2, GiB 1024^3...

Returned string is locale aware, UTF-8 encoded

◆ BytesNeededToEncodeNumber()

template<typename N>
uint8_t osmscout::BytesNeededToEncodeNumber ( N number)

Returns the number of bytes needed to encode the number. The function calculates the number of bytes that contain information, dropping leading bytes that only contain zero.

◆ CountWords()

OSMSCOUT_API size_t osmscout::CountWords ( const std::string & text)
extern

◆ DecodeNumber()

template<typename N>
unsigned int osmscout::DecodeNumber ( const char * buffer,
N & number )
inline

Decode a variable length encoded number from the buffer back to the variable.

The methods returns the number of bytes read.

◆ DecodeNumberSigned()

template<typename N>
unsigned int osmscout::DecodeNumberSigned ( const char * buffer,
N & number )
inline

Decode a signed variable length encoded number from the buffer back to the variable.

The methods returns the number of bytes read.

◆ DecodeNumberUnsigned()

template<typename N>
unsigned int osmscout::DecodeNumberUnsigned ( const char * buffer,
N & number )
inline

Decode an unsigned variable length encoded number from the buffer back to the variable.

The methods returns the number of bytes read.

◆ EncodeNumber() [1/2]

template<typename N>
unsigned int osmscout::EncodeNumber ( N number,
char * buffer )
inline

Encode a number into the given buffer using some variable length encoding.

The current implementation requires the buffer to have at least space for sizeof(N)*8/7 bytes for an unsigned number and sizeof(N)*8/7 + 1/8 bytes for a signed number

This are 5 bytes for a 32bit value and 10 bytes for a 64bit value.

The methods returns the number of bytes written.

◆ EncodeNumber() [2/2]

template<typename N, size_t S>
unsigned int osmscout::EncodeNumber ( N number,
std::array< char, S > & buffer )
inline

Encode a number into the given buffer using some variable length encoding.

The current implementation requires the buffer to have at least space for sizeof(N)*8/7 bytes for an unsigned number and sizeof(N)*8/7 + 1/8 bytes for a signed number

This are 5 bytes for a 32bit value and 10 bytes for a 64bit value.

The methods returns the number of bytes written.

◆ EncodeNumberSigned()

template<typename N>
unsigned int osmscout::EncodeNumberSigned ( N number,
char * buffer )
inline

Encode a signed number into the given buffer using some variable length encoding.

The first bit (if set) signals a negative number. The highest bit in a byte is set, if there is an additional byte following. So we use one bit for signaling signess and use 7 of 8 bytes per byte for data.

The current implementation thus requires the buffer to have at least space for sizeof(N)*8/7 + 1/8 bytes:

This are 5 bytes for a 32bit value and 10 bytes for a 64bit value.

The methods returns the number of bytes written.

◆ EncodeNumberUnsigned()

template<typename N>
unsigned int osmscout::EncodeNumberUnsigned ( N number,
char * buffer )
inline

Encode an unsigned number into the given buffer using some variable length encoding.

The highest bit in a byte is set, if there is an additional byte following. So we use 7 of 8 bytes per byte for data.

The current implementation requires the buffer to have at least space for sizeof(N)*8/7 bytes:

This are 5 bytes for a 32bit value and 10 bytes for a 64bit value.

The methods returns the number of bytes written.

◆ GetDigitValue()

OSMSCOUT_API bool osmscout::GetDigitValue ( char digit,
size_t & result )
extern

Returns the numerical value of the given character, if the character is a digit in a numerical value. The current code allows digits in the range from 0-9 and a-f and A-F. And thus supports numerical bases from 1-16.

◆ GetFirstInStringList()

OSMSCOUT_API std::string osmscout::GetFirstInStringList ( const std::string & stringList,
const std::string & divider )
extern

Assumes that the string consists of a number of values separated by one of the given divider. If the list consists of one entry, no divider is used.

Returns the first entry in the list

Note
stringList must not be empty
at least one divider must be given

◆ GroupStringListToStrings()

OSMSCOUT_API void osmscout::GroupStringListToStrings ( std::list< std::string >::const_iterator token,
size_t listSize,
size_t parts,
std::list< std::list< std::string > > & lists )
extern

Given a list of strings, individual strings will be combined into a given number of sub groups (individual string concatenated and separated by a space).

If you pass a list of 5 strings to be divided into 3 parts, a list of string-list will be returned, where each list contains exactly 3 strings.

◆ InterleaveNumbers()

OSMSCOUT_API uint64_t osmscout::InterleaveNumbers ( uint32_t a,
uint32_t b )
extern

Encodes the given numbers into a new number of twice the size that has the bits of each number alternating interleaved.

This can be used to convert two dimensional coordinates into one number, where coordinates close in 2D are close in the one dimensional projection, too.

◆ LocaleStringToUTF8String()

OSMSCOUT_API std::string osmscout::LocaleStringToUTF8String ( const std::string & text)
extern

Convert the given std::string in the current locale to a std::string containing a corresponding UTF8 character sequence

Parameters
textthe std::wstring to get converted
Returns
the converted std::string

◆ LocaleStringToWString()

OSMSCOUT_API std::wstring osmscout::LocaleStringToWString ( const std::string & text)
extern

Converts the given std::string with content in the current locale to a std::wstring

Parameters
textString to get converted
Returns
corresponding std::wstring

◆ PolygonCenter()

OSMSCOUT_API GeoCoord osmscout::PolygonCenter ( const Area & area,
double precision = 1 )
extern

A fast algorithm for finding polygon pole of inaccessibility, the most distant internal point from the polygon outline (not to be confused with centroid). Useful for optimal placement of a text label on a polygon.

Based on PolyLabel algorithm from Mapbox

◆ ReplaceString()

OSMSCOUT_API std::string osmscout::ReplaceString ( const std::string & in,
const std::string & search,
const std::string & replacement )
extern

Replace all occurrences of search in input string by some other string. When search is empty, unchanged input string is returned.

Parameters
in- input string
search
replacement
Returns

◆ SimplifyTokenList()

OSMSCOUT_API void osmscout::SimplifyTokenList ( std::list< std::string > & tokens)
extern

Simplifying a token list by merging tokens that start with an upper case letter followed by a token starting with a lower case letter.

◆ SplitString()

OSMSCOUT_API std::list< std::string > osmscout::SplitString ( const std::string & stringList,
const std::string & separator,
int maxSize = -1 )
extern

Split string by separator. For arguments "asphalt;ground;gravel" and ";" return list of three...

Note
when stringList is empty, result is empty list
separator must not be empty
when string ends with separator, last (empty) element is omitted
when maxSize is negative, list will contains all elements

◆ SplitStringAtSpace()

OSMSCOUT_API std::list< std::string > osmscout::SplitStringAtSpace ( const std::string & input)
extern

Converts the given string into a list of whitespace separated (std::isspace()) strings.

◆ StringToBool()

OSMSCOUT_API bool osmscout::StringToBool ( const char * string,
bool & value )
extern

Convert the given string to a boolean value

Parameters
stringstring with a potential boolean value (either 'true' or 'false')
valuevalue to copy the result to if no error occurred
Returns
'true' if the value was parsed, else 'false'

◆ StringToNumber() [1/3]

OSMSCOUT_API bool osmscout::StringToNumber ( const char * string,
double & value )
extern

◆ StringToNumber() [2/3]

OSMSCOUT_API bool osmscout::StringToNumber ( const std::string & string,
double & value )
extern

◆ StringToNumber() [3/3]

template<typename N>
bool osmscout::StringToNumber ( const std::string & string,
N & number,
size_t base = 10 )
inline

Converts a string holding a (possibly negative) numerical value of the given base to the numerical value itself.

Example: "-13" => -13

◆ TokenizeString()

OSMSCOUT_API void osmscout::TokenizeString ( const std::string & input,
std::list< std::string > & tokens )
extern

Converts the given string into a list of whitespace or colon-separated strings.

◆ UTF8StringToLocaleString()

OSMSCOUT_API std::string osmscout::UTF8StringToLocaleString ( const std::string & text)
extern

Convert the given std::string in UTF-8 a std::string containing to corresponding string in the current locale.

Parameters
textthe std::wstring to get converted
Returns
the converted std::string

◆ UTF8StringToU32String()

OSMSCOUT_API std::u32string osmscout::UTF8StringToU32String ( const std::string & text)
extern

Convert the given std::string containign a UTF8 character sequence to a std::u32string

Parameters
textString to get converted
Returns
corresponding std::wstring

◆ UTF8StringToWString()

OSMSCOUT_API std::wstring osmscout::UTF8StringToWString ( const std::string & text)
extern

Convert the given std::string containign a UTF8 character sequence to a std::wstring

Parameters
textString to get converted
Returns
corresponding std::wstring

◆ WStringToLocaleString()

OSMSCOUT_API std::string osmscout::WStringToLocaleString ( const std::wstring & text)
extern

Converts the given std::wstring to a std::string with content in the current locale

Parameters
textString to get converted
Returns
corresponding std::string

◆ WStringToUTF8String()

OSMSCOUT_API std::string osmscout::WStringToUTF8String ( const std::wstring & text)
extern

Convert the given std::wstring to a std::string containing a corresponding UTF8 character sequence

Parameters
textthe std::wstring to get converted
Returns
the converted std::string

Variable Documentation

◆ coordByteSize

const size_t osmscout::coordByteSize =7

Number of bytes needed to store a lat,lon coordinate pair.

◆ latConversionFactor

OSMSCOUT_API const double osmscout::latConversionFactor
extern

Coordinates will be stored as unsigned long values in file. For the conversion the float value is shifted to positive value and afterwards multiplied by conversion factor to get long values without significant values after colon.

◆ lonConversionFactor

OSMSCOUT_API const double osmscout::lonConversionFactor
extern

Coordinates will be stored as unsigned long values in file. For the conversion the float value is shifted to positive value and afterwards multiplied by conversion factor to get long values without significant values after colon.