Libosmium
2.15.5
Fast and flexible C++ library for working with OpenStreetMap data
|
Go to the documentation of this file. 1 #ifndef OSMIUM_OSM_CRC_HPP
2 #define OSMIUM_OSM_CRC_HPP
55 inline namespace util {
58 #if defined(__GNUC__) || defined(__clang__)
59 return __builtin_bswap16(value);
61 return (value >> 8) | (value << 8);
66 #if defined(__GNUC__) || defined(__clang__)
67 return __builtin_bswap32(value);
69 return (value >> 24) |
70 ((value >> 8) & 0x0000FF00) |
71 ((value << 8) & 0x00FF0000) |
77 #if defined(__GNUC__) || defined(__clang__)
78 return __builtin_bswap64(value);
82 return (val1 << 32) | val2;
101 template <
typename TCRC>
117 m_crc.process_byte(value);
121 m_crc.process_byte(value);
125 #if __BYTE_ORDER == __LITTLE_ENDIAN
126 m_crc.process_bytes(&value,
sizeof(uint16_t));
129 m_crc.process_bytes(&v,
sizeof(uint16_t));
134 #if __BYTE_ORDER == __LITTLE_ENDIAN
135 m_crc.process_bytes(&value,
sizeof(uint32_t));
138 m_crc.process_bytes(&v,
sizeof(uint32_t));
143 #if __BYTE_ORDER == __LITTLE_ENDIAN
144 m_crc.process_bytes(&value,
sizeof(uint64_t));
147 m_crc.process_bytes(&v,
sizeof(uint64_t));
153 m_crc.process_byte(*str++);
167 update(box.bottom_left());
173 update(node_ref.location());
177 for (
const NodeRef& node_ref : node_refs) {
183 for (
const Tag& tag : tags) {
205 update(
object.timestamp());
223 update(relation.members());
228 for (
const auto& subitem : area) {
237 for (
const auto& comment : discussion) {
247 update(changeset.created_at());
248 update(changeset.closed_at());
249 update(changeset.bounds());
255 update(changeset.discussion());
262 #endif // OSMIUM_OSM_CRC_HPP
void update_int64(const uint64_t value) noexcept
Definition: crc.hpp:142
void update_string(const char *str) noexcept
Definition: crc.hpp:151
uint16_t byte_swap_16(uint16_t value) noexcept
Definition: crc.hpp:57
Definition: object.hpp:64
void update(const osmium::Box &box) noexcept
Definition: crc.hpp:166
uint64_t byte_swap_64(uint64_t value) noexcept
Definition: crc.hpp:76
void update_int16(const uint16_t value) noexcept
Definition: crc.hpp:124
void update_int32(const uint32_t value) noexcept
Definition: crc.hpp:133
void update(const osmium::Changeset &changeset) noexcept
Definition: crc.hpp:245
Definition: node_ref_list.hpp:52
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
void update(const osmium::OSMObject &object) noexcept
Definition: crc.hpp:201
const TCRC & operator()() const noexcept
Definition: crc.hpp:112
void update(const osmium::Relation &relation) noexcept
Definition: crc.hpp:221
void update(const osmium::RelationMember &member) noexcept
Definition: crc.hpp:189
TCRC m_crc
Definition: crc.hpp:104
void update(const osmium::RelationMemberList &members) noexcept
Definition: crc.hpp:195
Definition: timestamp.hpp:147
void update(const osmium::Way &way) noexcept
Definition: crc.hpp:216
void update(const NodeRef &node_ref) noexcept
Definition: crc.hpp:171
Definition: relation.hpp:168
Definition: relation.hpp:57
uint32_t byte_swap_32(uint32_t value) noexcept
Definition: crc.hpp:65
void update(const osmium::Node &node) noexcept
Definition: crc.hpp:211
void update(const osmium::Location &location) noexcept
Definition: crc.hpp:161
Definition: location.hpp:271
void update(const NodeRefList &node_refs) noexcept
Definition: crc.hpp:176
void update_int8(const uint8_t value) noexcept
Definition: crc.hpp:120
Definition: changeset.hpp:132
TCRC & operator()() noexcept
Definition: crc.hpp:108
void update(const Timestamp ×tamp) noexcept
Definition: crc.hpp:157
void update(const osmium::Area &area) noexcept
Definition: crc.hpp:226
void update(const TagList &tags) noexcept
Definition: crc.hpp:182
void update(const osmium::ChangesetDiscussion &discussion) noexcept
Definition: crc.hpp:236
void update_bool(const bool value) noexcept
Definition: crc.hpp:116
Definition: relation.hpp:154
Definition: node_ref.hpp:50
An OSM Changeset, a group of changes made by a single user over a short period of time.
Definition: changeset.hpp:148