1 #ifndef OSMIUM_OSM_CRC_HPP
2 #define OSMIUM_OSM_CRC_HPP
52 # if defined(__GNUC__) || defined(__clang__)
53 return __builtin_bswap16(value);
55 return (value >> 8) | (value << 8);
60 # if defined(__GNUC__) || defined(__clang__)
61 return __builtin_bswap32(value);
63 return (value >> 24) |
64 ((value >> 8) & 0x0000FF00) |
65 ((value << 8) & 0x00FF0000) |
71 # if defined(__GNUC__) || defined(__clang__)
72 return __builtin_bswap64(value);
76 return (val1 << 32) | val2;
98 m_crc.process_byte(value);
102 m_crc.process_byte(value);
106 #if __BYTE_ORDER == __LITTLE_ENDIAN
107 m_crc.process_bytes(&value,
sizeof(uint16_t));
110 m_crc.process_bytes(&v,
sizeof(uint16_t));
115 #if __BYTE_ORDER == __LITTLE_ENDIAN
116 m_crc.process_bytes(&value,
sizeof(uint32_t));
119 m_crc.process_bytes(&v,
sizeof(uint32_t));
124 #if __BYTE_ORDER == __LITTLE_ENDIAN
125 m_crc.process_bytes(&value,
sizeof(uint64_t));
128 m_crc.process_bytes(&v,
sizeof(uint64_t));
134 m_crc.process_byte(*str++);
157 for (
const NodeRef& node_ref : node_refs) {
163 for (
const Tag& tag : tags) {
185 update(
object.timestamp());
192 update(static_cast<const osmium::OSMObject&>(node));
197 update(static_cast<const osmium::OSMObject&>(way));
202 update(static_cast<const osmium::OSMObject&>(relation));
207 update(static_cast<const osmium::OSMObject&>(area));
208 for (
auto it = area.
cbegin(); it != area.
cend(); ++it) {
211 update(static_cast<const osmium::NodeRefList&>(*it));
231 #endif // OSMIUM_OSM_CRC
WayNodeList & nodes()
Definition: way.hpp:75
void update(const osmium::Relation &relation)
Definition: crc.hpp:201
void update_int8(const uint8_t value)
Definition: crc.hpp:101
void update_int16(const uint16_t value)
Definition: crc.hpp:105
void update(const osmium::Way &way)
Definition: crc.hpp:196
osmium::Box & bounds() noexcept
Definition: changeset.hpp:228
RelationMemberList & members()
Definition: relation.hpp:179
void update(const osmium::Changeset &changeset)
Definition: crc.hpp:216
void update_int64(const uint64_t value)
Definition: crc.hpp:123
user_id_type uid() const noexcept
Get user id.
Definition: changeset.hpp:118
const TagList & tags() const
Get the list of tags.
Definition: changeset.hpp:247
Definition: relation.hpp:167
const_iterator cend() const
Definition: object.hpp:346
void update(const Timestamp ×tamp)
Definition: crc.hpp:138
const char * user() const
Get user name.
Definition: changeset.hpp:242
changeset_id_type id() const noexcept
Get ID of this changeset.
Definition: changeset.hpp:92
Definition: relation.hpp:150
void update(const osmium::OSMObject &object)
Definition: crc.hpp:181
void update(const TagList &tags)
Definition: crc.hpp:162
const_iterator cbegin() const
Definition: object.hpp:342
TCRC m_crc
Definition: crc.hpp:85
osmium::object_id_type ref() const noexcept
Definition: node_ref.hpp:62
OSMIUM_CONSTEXPR Location bottom_left() const noexcept
Definition: box.hpp:164
void update(const osmium::RelationMember &member)
Definition: crc.hpp:169
osmium::Timestamp closed_at() const noexcept
Definition: changeset.hpp:171
Definition: relation.hpp:54
Namespace for everything in the Osmium library.
Definition: assembler.hpp:55
OSMIUM_CONSTEXPR Location top_right() const noexcept
Definition: box.hpp:178
num_changes_type num_changes() const noexcept
Get the number of changes in this changeset.
Definition: changeset.hpp:208
void update(const osmium::Area &area)
Definition: crc.hpp:206
void update(const osmium::Box &box)
Definition: crc.hpp:147
void update(const osmium::Location &location)
Definition: crc.hpp:142
Definition: timestamp.hpp:52
constexpr int32_t y() const noexcept
Definition: location.hpp:167
void update(const NodeRef &node_ref)
Definition: crc.hpp:152
const TCRC & operator()() const
Definition: crc.hpp:93
item_type type() const noexcept
Definition: relation.hpp:128
uint32_t byte_swap_32(uint32_t value) noexcept
Definition: crc.hpp:59
void update_bool(const bool value)
Definition: crc.hpp:97
osmium::Timestamp created_at() const noexcept
Get timestamp when this changeset was created.
Definition: changeset.hpp:161
Definition: location.hpp:79
object_id_type ref() const noexcept
Definition: relation.hpp:110
osmium::Location location() const noexcept
Definition: node.hpp:61
const char * role() const noexcept
Definition: relation.hpp:136
uint64_t byte_swap_64(uint64_t value) noexcept
Definition: crc.hpp:70
Definition: node_ref_list.hpp:50
An OSM Changeset, a group of changes made by a single user over a short period of time...
Definition: changeset.hpp:61
void update(const osmium::Node &node)
Definition: crc.hpp:191
void update_int32(const uint32_t value)
Definition: crc.hpp:114
constexpr int32_t x() const noexcept
Definition: location.hpp:163
void update(const osmium::RelationMemberList &members)
Definition: crc.hpp:175
Definition: node_ref.hpp:50
void update_string(const char *str)
Definition: crc.hpp:132
uint16_t byte_swap_16(uint16_t value) noexcept
Definition: crc.hpp:51
TCRC & operator()()
Definition: crc.hpp:89
void update(const NodeRefList &node_refs)
Definition: crc.hpp:156
Definition: object.hpp:58