1 #ifndef OSMIUM_OSM_TAG_HPP
2 #define OSMIUM_OSM_TAG_HPP
48 class Tag :
public osmium::memory::detail::ItemHelper {
56 template <
typename TMember>
60 return reinterpret_cast<unsigned char*
>(std::strchr(reinterpret_cast<char*>(ptr), 0) + 1);
63 static const unsigned char*
after_null(
const unsigned char* ptr) {
64 return reinterpret_cast<const unsigned char*
>(std::strchr(reinterpret_cast<const char*>(ptr), 0) + 1);
71 const unsigned char*
next()
const {
79 const char*
key() const noexcept {
80 return reinterpret_cast<const char*
>(
data());
94 return (!std::strcmp(a.
key(), b.
key()) && (std::strcmp(a.
value(), b.
value()) < 0)) || (std::strcmp(a.
key(), b.
key()) < 0);
100 template <
typename TChar,
typename TTraits>
101 inline std::basic_ostream<TChar, TTraits>& operator<<(std::basic_ostream<TChar, TTraits>& out,
const Tag& tag) {
102 return out << tag.
key() <<
'=' << tag.value();
115 size_type
size() const noexcept {
119 const char*
get_value_by_key(
const char* key,
const char* default_value =
nullptr) const noexcept {
120 auto result = std::find_if(
cbegin(),
cend(), [key](
const Tag& tag) {
121 return !strcmp(tag.
key(), key);
123 if (result ==
cend()) {
124 return default_value;
126 return result->value();
138 #endif // OSMIUM_OSM_TAG_HPP
iterator end()
Definition: collection.hpp:133
Definition: collection.hpp:47
Tag & operator=(const Tag &)=delete
const char * value() const
Definition: tag.hpp:83
const_iterator cend() const
Definition: collection.hpp:141
static unsigned char * after_null(unsigned char *ptr)
Definition: tag.hpp:59
constexpr bool operator==(const Box &lhs, const Box &rhs) noexcept
Definition: box.hpp:222
item_type
Definition: item_type.hpp:43
size_t size_type
Definition: tag.hpp:109
iterator begin()
Definition: collection.hpp:129
double distance(const osmium::geom::Coordinates &c1, const osmium::geom::Coordinates &c2)
Definition: haversine.hpp:64
const unsigned char * next() const
Definition: tag.hpp:71
bool operator<(const Changeset &lhs, const Changeset &rhs)
Definition: changeset.hpp:438
Namespace for everything in the Osmium library.
Definition: assembler.hpp:59
TagList()
Definition: tag.hpp:111
Definition: collection.hpp:111
unsigned char * data() const noexcept
Definition: collection.hpp:85
static constexpr item_type collection_type
Definition: tag.hpp:77
const char * key() const noexcept
Definition: tag.hpp:79
Collection()
Definition: collection.hpp:121
const_iterator cbegin() const
Definition: collection.hpp:137
const char * get_value_by_key(const char *key, const char *default_value=nullptr) const noexcept
Definition: tag.hpp:119
unsigned char * next()
Definition: tag.hpp:67
size_type size() const noexcept
Definition: tag.hpp:115
const char * operator[](const char *key) const noexcept
Definition: tag.hpp:129
static const unsigned char * after_null(const unsigned char *ptr)
Definition: tag.hpp:63