1 #ifndef OSMIUM_OSM_CRC_HPP 2 #define OSMIUM_OSM_CRC_HPP 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;
88 template <
typename TCRC>
104 m_crc.process_byte(value);
108 m_crc.process_byte(value);
112 #if __BYTE_ORDER == __LITTLE_ENDIAN 113 m_crc.process_bytes(&value,
sizeof(uint16_t));
116 m_crc.process_bytes(&v,
sizeof(uint16_t));
121 #if __BYTE_ORDER == __LITTLE_ENDIAN 122 m_crc.process_bytes(&value,
sizeof(uint32_t));
125 m_crc.process_bytes(&v,
sizeof(uint32_t));
130 #if __BYTE_ORDER == __LITTLE_ENDIAN 131 m_crc.process_bytes(&value,
sizeof(uint64_t));
134 m_crc.process_bytes(&v,
sizeof(uint64_t));
140 m_crc.process_byte(*str++);
145 update_int32(uint32_t(timestamp));
149 update_int32(location.x());
150 update_int32(location.y());
154 update(box.bottom_left());
155 update(box.top_right());
159 update_int64(node_ref.ref());
160 update(node_ref.location());
164 for (
const NodeRef& node_ref : node_refs) {
170 for (
const Tag& tag : tags) {
171 update_string(tag.key());
172 update_string(tag.value());
177 update_int64(member.ref());
178 update_int16(uint16_t(member.type()));
179 update_string(member.role());
189 update_int64(
object.
id());
190 update_bool(
object.visible());
191 update_int32(
object.version());
192 update(
object.timestamp());
193 update_int32(
object.uid());
194 update_string(
object.user());
195 update(
object.tags());
199 update(static_cast<const osmium::OSMObject&>(node));
200 update(node.location());
204 update(static_cast<const osmium::OSMObject&>(way));
209 update(static_cast<const osmium::OSMObject&>(relation));
210 update(relation.members());
214 update(static_cast<const osmium::OSMObject&>(area));
215 for (
const auto& subitem : area) {
218 update(static_cast<const osmium::NodeRefList&>(subitem));
224 for (
const auto& comment : discussion) {
225 update(comment.date());
226 update_int32(comment.uid());
227 update_string(comment.user());
228 update_string(comment.text());
233 update_int64(changeset.id());
234 update(changeset.created_at());
235 update(changeset.closed_at());
236 update(changeset.bounds());
237 update_int32(changeset.num_changes());
238 update_int32(changeset.num_comments());
239 update_int32(changeset.uid());
240 update_string(changeset.user());
241 update(changeset.tags());
242 update(changeset.discussion());
249 #endif // OSMIUM_OSM_CRC_HPP
Definition: changeset.hpp:130
void update(const osmium::RelationMemberList &members) noexcept
Definition: crc.hpp:182
void update_string(const char *str) noexcept
Definition: crc.hpp:138
void update_int16(const uint16_t value) noexcept
Definition: crc.hpp:111
Definition: relation.hpp:168
void update(const osmium::Location &location) noexcept
Definition: crc.hpp:148
void update(const osmium::Relation &relation) noexcept
Definition: crc.hpp:208
void update(const osmium::Node &node) noexcept
Definition: crc.hpp:198
Definition: relation.hpp:152
void update(const osmium::Way &way) noexcept
Definition: crc.hpp:203
TCRC m_crc
Definition: crc.hpp:91
void update_int64(const uint64_t value) noexcept
Definition: crc.hpp:129
void update(const osmium::Changeset &changeset) noexcept
Definition: crc.hpp:232
void update(const osmium::Area &area) noexcept
Definition: crc.hpp:213
void update(const osmium::Box &box) noexcept
Definition: crc.hpp:153
const TCRC & operator()() const noexcept
Definition: crc.hpp:99
TCRC & operator()() noexcept
Definition: crc.hpp:95
void update(const osmium::RelationMember &member) noexcept
Definition: crc.hpp:176
Definition: relation.hpp:57
void update_int32(const uint32_t value) noexcept
Definition: crc.hpp:120
void update(const TagList &tags) noexcept
Definition: crc.hpp:169
Namespace for everything in the Osmium library.
Definition: assembler.hpp:63
Definition: timestamp.hpp:115
uint32_t byte_swap_32(uint32_t value) noexcept
Definition: crc.hpp:65
Definition: location.hpp:266
void update(const osmium::OSMObject &object) noexcept
Definition: crc.hpp:188
uint64_t byte_swap_64(uint64_t value) noexcept
Definition: crc.hpp:76
void update(const Timestamp ×tamp) noexcept
Definition: crc.hpp:144
Definition: node_ref_list.hpp:52
An OSM Changeset, a group of changes made by a single user over a short period of time...
Definition: changeset.hpp:148
Definition: node_ref.hpp:50
void update(const NodeRefList &node_refs) noexcept
Definition: crc.hpp:163
uint16_t byte_swap_16(uint16_t value) noexcept
Definition: crc.hpp:57
void update(const osmium::ChangesetDiscussion &discussion) noexcept
Definition: crc.hpp:223
void update(const NodeRef &node_ref) noexcept
Definition: crc.hpp:158
void update_bool(const bool value) noexcept
Definition: crc.hpp:103
Definition: object.hpp:64
void update_int8(const uint8_t value) noexcept
Definition: crc.hpp:107