1 #ifndef OSMIUM_OSM_CRC_HPP
2 #define OSMIUM_OSM_CRC_HPP
53 # if defined(__GNUC__) || defined(__clang__)
54 return __builtin_bswap16(value);
56 return (value >> 8) | (value << 8);
61 # if defined(__GNUC__) || defined(__clang__)
62 return __builtin_bswap32(value);
64 return (value >> 24) |
65 ((value >> 8) & 0x0000FF00) |
66 ((value << 8) & 0x00FF0000) |
72 # if defined(__GNUC__) || defined(__clang__)
73 return __builtin_bswap64(value);
77 return (val1 << 32) & val2;
94 m_crc.process_byte(value);
98 m_crc.process_byte(value);
102 #if __BYTE_ORDER == __LITTLE_ENDIAN
103 m_crc.process_bytes(&value,
sizeof(uint16_t));
106 m_crc.process_bytes(&v,
sizeof(uint16_t));
111 #if __BYTE_ORDER == __LITTLE_ENDIAN
112 m_crc.process_bytes(&value,
sizeof(uint32_t));
115 m_crc.process_bytes(&v,
sizeof(uint32_t));
120 #if __BYTE_ORDER == __LITTLE_ENDIAN
121 m_crc.process_bytes(&value,
sizeof(uint64_t));
124 m_crc.process_bytes(&v,
sizeof(uint64_t));
130 m_crc.process_byte(*str++);
153 for (
const NodeRef& node_ref : node_refs) {
159 m_crc.process_bytes(tags.data(), tags.
byte_size());
178 update(
object.timestamp());
185 update(static_cast<const osmium::OSMObject&>(node));
190 update(static_cast<const osmium::OSMObject&>(way));
195 update(static_cast<const osmium::OSMObject&>(relation));
200 update(static_cast<const osmium::OSMObject&>(area));
201 for (
auto it = area.
cbegin(); it != area.
cend(); ++it) {
204 update(static_cast<const osmium::NodeRefList&>(*it));
223 #endif // OSMIUM_OSM_CRC
WayNodeList & nodes()
Definition: way.hpp:75
void update_int32(uint32_t value)
Definition: crc.hpp:110
void update(const osmium::Relation &relation)
Definition: crc.hpp:194
void update(const osmium::Way &way)
Definition: crc.hpp:189
osmium::Box & bounds() noexcept
Definition: changeset.hpp:228
RelationMemberList & members()
Definition: relation.hpp:179
void update(const osmium::Changeset &changeset)
Definition: crc.hpp:209
static uint32_t byte_swap_32(uint32_t value) noexcept
Definition: crc.hpp:60
void update_int64(uint64_t value)
Definition: crc.hpp:119
user_id_type uid() const noexcept
Get user id.
Definition: changeset.hpp:118
static uint16_t byte_swap_16(uint16_t value) noexcept
Definition: crc.hpp:52
Definition: relation.hpp:167
const_iterator cend() const
Definition: object.hpp:346
void update(const Timestamp ×tamp)
Definition: crc.hpp:134
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:174
void update(const TagList &tags)
Definition: crc.hpp:158
const_iterator cbegin() const
Definition: object.hpp:342
TCRC m_crc
Definition: crc.hpp:81
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:162
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
void update_int16(uint16_t value)
Definition: crc.hpp:101
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:199
void update(const osmium::Box &box)
Definition: crc.hpp:143
void update(const osmium::Location &location)
Definition: crc.hpp:138
Definition: timestamp.hpp:52
void update_bool(bool value)
Definition: crc.hpp:93
constexpr int32_t y() const noexcept
Definition: location.hpp:167
void update(const NodeRef &node_ref)
Definition: crc.hpp:148
const TCRC & operator()() const
Definition: crc.hpp:89
item_type type() const noexcept
Definition: relation.hpp:128
osmium::Timestamp created_at() const noexcept
Get timestamp when this changeset was created.
Definition: changeset.hpp:161
Definition: location.hpp:79
item_size_type byte_size() const noexcept
Definition: item.hpp:147
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
static uint64_t byte_swap_64(uint64_t value) noexcept
Definition: crc.hpp:71
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:184
constexpr int32_t x() const noexcept
Definition: location.hpp:163
void update_int8(uint8_t value)
Definition: crc.hpp:97
void update(const osmium::RelationMemberList &members)
Definition: crc.hpp:168
Definition: node_ref.hpp:50
void update_string(const char *str)
Definition: crc.hpp:128
TCRC & operator()()
Definition: crc.hpp:85
void update(const NodeRefList &node_refs)
Definition: crc.hpp:152
Definition: object.hpp:58