1#ifndef OSMIUM_BUILDER_ATTR_HPP
2#define OSMIUM_BUILDER_ATTR_HPP
53#include <initializer_list>
69 template <
typename THandler,
typename... TTypes>
72 template <
typename THandler>
73 struct is_handled_by<THandler> {
74 static constexpr bool value =
false;
77 template <
typename THandler,
typename T,
typename... TRest>
78 struct is_handled_by<THandler, T, TRest...> {
79 static constexpr bool value = std::is_base_of<typename T::handler, THandler>::value ||
80 is_handled_by<THandler, TRest...>::value;
83 template <
typename THandler,
typename... TTypes>
84 struct are_all_handled_by;
86 template <
typename THandler,
typename T>
87 struct are_all_handled_by<THandler, T> {
88 static constexpr bool value = std::is_base_of<typename T::handler, THandler>::value;
91 template <
typename THandler,
typename T,
typename... TRest>
92 struct are_all_handled_by<THandler, T, TRest...> {
93 static constexpr bool value = std::is_base_of<typename T::handler, THandler>::value &&
94 are_all_handled_by<THandler, TRest...>::value;
98 template <
template <
typename>
class Predicate,
typename... Ts>
99 struct static_none_of : std::is_same<std::tuple<std::false_type, typename Predicate<Ts>::type...>,
100 std::tuple<typename Predicate<Ts>::type..., std::false_type>>
104 template <
template <
typename>
class Predicate,
typename... Ts>
105 struct static_all_of : std::is_same<std::tuple<std::true_type, typename Predicate<Ts>::type...>,
106 std::tuple<typename Predicate<Ts>::type..., std::true_type>>
110 template <
typename THandler,
typename... TTypes>
111 struct is_handled_by {
112 template <
typename T>
113 using HasHandler = std::is_base_of<typename T::handler, THandler>;
115 static constexpr bool value = !static_none_of<HasHandler, TTypes...>::value;
119 template <
typename THandler,
typename... TTypes>
120 struct are_all_handled_by {
121 template <
typename T>
122 using HasHandler = std::is_base_of<typename T::handler, THandler>;
124 static constexpr bool value = static_all_of<HasHandler, TTypes...>::value;
130 template <
typename TType>
131 struct type_wrapper {
137 constexpr explicit type_wrapper(
const TType& v) :
144 template <
typename TType>
145 struct iterator_wrapper {
152 constexpr iterator_wrapper(TType
begin, TType
end) :
156 constexpr TType
begin()
const {
160 constexpr TType
end()
const {
167 struct entity_handler {};
168 struct object_handler;
171 struct nodes_handler;
172 struct members_handler;
173 struct changeset_handler;
174 struct discussion_handler;
179#define OSMIUM_ATTRIBUTE(_handler, _name, _type) \
180 struct _name : public osmium::builder::detail::type_wrapper<_type> { \
181 using handler = osmium::builder::detail::_handler;
183#define OSMIUM_ATTRIBUTE_WITH_CONSTRUCTOR(_handler, _name, _type) \
184 OSMIUM_ATTRIBUTE(_handler, _name, _type) \
185 constexpr explicit _name(std::add_const<_type>::type& value) : \
186 type_wrapper(value) {} \
189#define OSMIUM_ATTRIBUTE_ITER(_handler, _name) \
190 template <typename TIterator> \
191 struct _name : public osmium::builder::detail::iterator_wrapper<TIterator> { \
192 using handler = osmium::builder::detail::_handler; \
193 constexpr _name(TIterator first, TIterator last) : \
194 osmium::builder::detail::iterator_wrapper<TIterator>(first, last) {} \
205 constexpr explicit
_deleted(
bool value = true) noexcept :
206 type_wrapper(value) {}
210 constexpr explicit
_visible(
bool value = true) noexcept :
211 type_wrapper(value) {}
216 type_wrapper(value) {}
229 type_wrapper(value) {}
231 type_wrapper(
osmium::Location{lon, lat}) {}
235 constexpr explicit
_user(const
char* val) noexcept :
237 explicit _user(
const std::string& val) noexcept :
238 type_wrapper(val.c_str()) {}
270 constexpr const char*
role() const noexcept {
302 const char*
role() const noexcept {
332 constexpr const char*
user() const noexcept {
336 constexpr const char*
text() const noexcept {
359 type_wrapper(value) {}
360 explicit _tag(
const std::pair<const char* const, const char*>& value) :
362 explicit _tag(
const std::pair<const char*, const char* const>& value) :
364 explicit _tag(
const std::pair<const char*, const char*>& value) :
367 type_wrapper(
std::make_pair(value.first.c_str(), value.second.c_str())) {}
368 explicit _tag(
const char* key,
const char* val) :
369 type_wrapper(
std::make_pair(key, val)) {}
370 explicit _tag(
const std::string& key,
const std::string& val) :
371 type_wrapper(
std::make_pair(key.c_str(), val.c_str())) {}
372 explicit _tag(
const char*
const key_value) :
374 explicit _tag(
const std::string& key_value) :
379 explicit
_t(const
char *tags) :
380 type_wrapper(tags) {}
383 template <
typename TTagIterator>
384 inline constexpr detail::tags_from_iterator_pair<TTagIterator>
_tags(TTagIterator first, TTagIterator last) {
385 return {first, last};
388 template <
typename TContainer>
389 inline detail::tags_from_iterator_pair<typename TContainer::const_iterator>
_tags(
const TContainer& container) {
392 return {
begin(container),
end(container)};
395 using tag_ilist = std::initializer_list<std::pair<const char*, const char*>>;
396 inline detail::tags_from_iterator_pair<tag_ilist::const_iterator>
_tags(
const tag_ilist& container) {
399 return {
begin(container),
end(container)};
406 type_wrapper(NodeRef{value}) {}
407 constexpr explicit _node(
const NodeRef& value) noexcept :
408 type_wrapper(value) {}
411 template <
typename TIdIterator>
412 inline constexpr detail::nodes_from_iterator_pair<TIdIterator>
_nodes(TIdIterator first, TIdIterator last) {
413 return {first, last};
416 template <
typename TContainer>
417 inline detail::nodes_from_iterator_pair<typename TContainer::const_iterator>
_nodes(
const TContainer& container) {
420 return {
begin(container),
end(container)};
427 return {
begin(container),
end(container)};
431 inline detail::nodes_from_iterator_pair<node_ref_ilist::const_iterator>
_nodes(
const node_ref_ilist& container) {
434 return {
begin(container),
end(container)};
440 type_wrapper(value) {}
442 type_wrapper({
type,
id}) {}
444 type_wrapper({
type, id, role}) {}
446 type_wrapper({
type, id, role.c_str()}) {}
448 type_wrapper({member.type(), member.ref(), member.role()}) {}
451 template <
typename TMemberIterator>
452 inline constexpr detail::members_from_iterator_pair<TMemberIterator>
_members(TMemberIterator first, TMemberIterator last) {
453 return {first, last};
456 template <
typename TContainer>
457 inline detail::members_from_iterator_pair<typename TContainer::const_iterator>
_members(
const TContainer& container) {
460 return {
begin(container),
end(container)};
464 inline detail::members_from_iterator_pair<member_ilist::const_iterator>
_members(
const member_ilist& container) {
467 return {
begin(container),
end(container)};
478 type_wrapper(value) {}
480 type_wrapper({comment.date(), comment.uid(), comment.user(), comment.text()}) {}
483 template <
typename TCommentIterator>
484 inline constexpr detail::comments_from_iterator_pair<TCommentIterator>
_comments(TCommentIterator first, TCommentIterator last) {
485 return {first, last};
488 template <
typename TContainer>
489 inline detail::comments_from_iterator_pair<typename TContainer::const_iterator>
_comments(
const TContainer& container) {
492 return {
begin(container),
end(container)};
499 return {
begin(container),
end(container)};
503 template <
typename TIdIterator>
504 inline constexpr detail::outer_ring_from_iterator_pair<TIdIterator>
_outer_ring(TIdIterator first, TIdIterator last) {
505 return {first, last};
508 template <
typename TContainer>
509 inline detail::outer_ring_from_iterator_pair<typename TContainer::const_iterator>
_outer_ring(
const TContainer& container) {
512 return {
begin(container),
end(container)};
519 return {
begin(container),
end(container)};
526 return {
begin(container),
end(container)};
529 template <
typename TIdIterator>
530 inline constexpr detail::inner_ring_from_iterator_pair<TIdIterator>
_inner_ring(TIdIterator first, TIdIterator last) {
531 return {first, last};
534 template <
typename TContainer>
535 inline detail::inner_ring_from_iterator_pair<typename TContainer::const_iterator>
_inner_ring(
const TContainer& container) {
538 return {
begin(container),
end(container)};
545 return {
begin(container),
end(container)};
552 return {
begin(container),
end(container)};
558#undef OSMIUM_ATTRIBUTE_ITER
559#undef OSMIUM_ATTRIBUTE_WITH_CONSTRUCTOR
560#undef OSMIUM_ATTRIBUTE
566 template <
typename TDummy>
571 changeset.set_id(
id.value);
575 changeset.set_num_changes(num_changes.value);
579 changeset.set_num_comments(num_comments.value);
583 changeset.set_created_at(created_at.value);
587 changeset.set_closed_at(closed_at.value);
591 changeset.set_uid(uid.value);
598 template <
typename TDummy>
603 object.set_id(
id.value);
607 object.set_version(version.value);
611 object.set_visible(visible.value);
615 object.set_deleted(deleted.value);
619 object.set_timestamp(timestamp.value);
623 object.set_changeset(changeset.value);
627 object.set_uid(uid.value);
637 node.set_location(location.value);
642 template <
typename THandler,
typename TBuilder,
typename... TArgs>
643 inline void add_basic(TBuilder& builder,
const TArgs&... args)
noexcept {
644 (void)std::initializer_list<int>{
645 (THandler::set_value(builder.object(), args), 0)...
651 template <
typename... TArgs>
660 template <
typename TFirst,
typename... TRest>
661 inline constexpr typename std::enable_if<!std::is_same<attr::_user, TFirst>::value,
const char*>
::type
662 get_user(
const TFirst& ,
const TRest&... args)
noexcept {
666 template <
typename TBuilder,
typename... TArgs>
667 inline void add_user(TBuilder& builder,
const TArgs&... args) {
668 builder.set_user(
get_user(args...));
675 template <
typename TDummy>
676 static void set_value(TagListBuilder& ,
const TDummy& )
noexcept {
680 if (tag.value.second !=
nullptr) {
681 builder.add_tag(tag.value);
684 const char* key = tag.value.first;
685 const char*
const equal_sign = std::strchr(key,
'=');
687 builder.add_tag(key,
"");
690 const char* value = equal_sign + 1;
691 builder.add_tag(key, equal_sign - key,
692 value, std::strlen(value));
695 template <
typename TIterator>
696 static void set_value(TagListBuilder& builder,
const attr::detail::tags_from_iterator_pair<TIterator>& tags) {
697 for (
const auto& tag : tags) {
698 builder.add_tag(tag);
704 for (
const auto& tag : taglist) {
705 const std::size_t pos = tag.find_first_of(
'=');
706 if (pos == std::string::npos) {
707 builder.add_tag(tag,
"");
709 const char* value = tag.c_str() + pos + 1;
710 builder.add_tag(tag.c_str(), pos,
711 value, tag.size() - pos - 1);
721 template <
typename TDummy>
726 builder.add_node_ref(node_ref.value);
729 template <
typename TIterator>
731 for (
const auto& ref : nodes) {
732 builder.add_node_ref(ref);
740 template <
typename TDummy>
741 static void set_value(RelationMemberListBuilder& ,
const TDummy& )
noexcept {
745 builder.add_member(member.value.type(), member.value.ref(), member.value.role());
748 template <
typename TIterator>
749 static void set_value(RelationMemberListBuilder& builder,
const attr::detail::members_from_iterator_pair<TIterator>& members) {
750 for (
const auto& member : members) {
751 builder.add_member(member.type(), member.ref(), member.role());
759 template <
typename TDummy>
760 static void set_value(ChangesetDiscussionBuilder& ,
const TDummy& )
noexcept {
764 builder.add_comment(comment.value.date(), comment.value.uid(), comment.value.user());
765 builder.add_comment_text(comment.value.text());
768 template <
typename TIterator>
769 static void set_value(ChangesetDiscussionBuilder& builder,
const attr::detail::comments_from_iterator_pair<TIterator>& comments) {
770 for (
const auto& comment : comments) {
771 builder.add_comment(comment.date(), comment.uid(), comment.user());
772 builder.add_comment_text(comment.text());
780 template <
typename TDummy>
781 static void set_value(AreaBuilder& ,
const TDummy& )
noexcept {
784 template <
typename TIterator>
785 static void set_value(AreaBuilder& parent,
const attr::detail::outer_ring_from_iterator_pair<TIterator>& nodes) {
787 for (
const auto& ref : nodes) {
788 builder.add_node_ref(ref);
792 template <
typename TIterator>
793 static void set_value(AreaBuilder& parent,
const attr::detail::inner_ring_from_iterator_pair<TIterator>& nodes) {
795 for (
const auto& ref : nodes) {
796 builder.add_node_ref(ref);
804 template <
typename TBuilder,
typename THandler,
typename... TArgs>
805 inline typename std::enable_if<!is_handled_by<THandler, TArgs...>::value>
::type
809 template <
typename TBuilder,
typename THandler,
typename... TArgs>
810 inline typename std::enable_if<is_handled_by<THandler, TArgs...>::value>
::type
812 TBuilder builder{parent.
buffer(), &parent};
813 (void)std::initializer_list<int>{
814 (THandler::set_value(builder, args), 0)...
834 template <
typename... TArgs>
835 inline size_t add_node(osmium::memory::Buffer& buffer,
const TArgs&... args) {
838 NodeBuilder builder{buffer};
840 detail::add_basic<detail::node_handler>(builder, args...);
842 detail::add_list<TagListBuilder, detail::tags_handler>(builder, args...);
845 return buffer.commit();
855 template <
typename... TArgs>
856 inline size_t add_way(osmium::memory::Buffer& buffer,
const TArgs&... args) {
859 WayBuilder builder{buffer};
861 detail::add_basic<detail::object_handler>(builder, args...);
863 detail::add_list<TagListBuilder, detail::tags_handler>(builder, args...);
864 detail::add_list<WayNodeListBuilder, detail::nodes_handler>(builder, args...);
867 return buffer.commit();
877 template <
typename... TArgs>
878 inline size_t add_relation(osmium::memory::Buffer& buffer,
const TArgs&... args) {
881 RelationBuilder builder{buffer};
883 detail::add_basic<detail::object_handler>(builder, args...);
885 detail::add_list<TagListBuilder, detail::tags_handler>(builder, args...);
886 detail::add_list<RelationMemberListBuilder, detail::members_handler>(builder, args...);
889 return buffer.commit();
899 template <
typename... TArgs>
900 inline size_t add_changeset(osmium::memory::Buffer& buffer,
const TArgs&... args) {
903 ChangesetBuilder builder{buffer};
905 detail::add_basic<detail::changeset_handler>(builder, args...);
907 detail::add_list<TagListBuilder, detail::tags_handler>(builder, args...);
908 detail::add_list<ChangesetDiscussionBuilder, detail::discussion_handler>(builder, args...);
911 return buffer.commit();
921 template <
typename... TArgs>
922 inline size_t add_area(osmium::memory::Buffer& buffer,
const TArgs&... args) {
925 AreaBuilder builder{buffer};
927 detail::add_basic<detail::object_handler>(builder, args...);
929 detail::add_list<TagListBuilder, detail::tags_handler>(builder, args...);
931 (void)std::initializer_list<int>{
936 return buffer.commit();
946 template <
typename... TArgs>
951 (void)std::initializer_list<int>{
956 return buffer.commit();
966 template <
typename... TArgs>
967 inline size_t add_tag_list(osmium::memory::Buffer& buffer,
const TArgs&... args) {
970 TagListBuilder builder{buffer};
971 (void)std::initializer_list<int>{
976 return buffer.commit();
constexpr detail::comments_from_iterator_pair< TCommentIterator > _comments(TCommentIterator first, TCommentIterator last)
Definition: attr.hpp:484
constexpr _location(const osmium::Location &value) noexcept
Definition: attr.hpp:228
std::initializer_list< std::pair< const char *, const char * > > tag_ilist
Definition: attr.hpp:395
constexpr _comment(const comment_type &value) noexcept
Definition: attr.hpp:477
constexpr detail::members_from_iterator_pair< TMemberIterator > _members(TMemberIterator first, TMemberIterator last)
Definition: attr.hpp:452
constexpr detail::inner_ring_from_iterator_pair< TIdIterator > _inner_ring(TIdIterator first, TIdIterator last)
Definition: attr.hpp:530
std::pair< const std::string &, const std::string & > pair_of_strings
Definition: attr.hpp:242
size_t add_tag_list(osmium::memory::Buffer &buffer, const TArgs &... args)
Definition: attr.hpp:967
constexpr _member(const member_type &value) noexcept
Definition: attr.hpp:439
size_t add_area(osmium::memory::Buffer &buffer, const TArgs &... args)
Definition: attr.hpp:922
_tag(const pair_of_cstrings &value) noexcept
Definition: attr.hpp:358
constexpr _user(const char *val) noexcept
Definition: attr.hpp:235
std::initializer_list< osmium::NodeRef > node_ref_ilist
Definition: attr.hpp:430
std::initializer_list< osmium::object_id_type > object_id_ilist
Definition: attr.hpp:423
size_t add_node(osmium::memory::Buffer &buffer, const TArgs &... args)
Definition: attr.hpp:835
std::pair< const char *const, const char *const > pair_of_cstrings
Definition: attr.hpp:241
size_t add_relation(osmium::memory::Buffer &buffer, const TArgs &... args)
Definition: attr.hpp:878
size_t add_way(osmium::memory::Buffer &buffer, const TArgs &... args)
Definition: attr.hpp:856
std::initializer_list< comment_type > comment_ilist
Definition: attr.hpp:495
_t(const char *tags)
Definition: attr.hpp:379
constexpr detail::tags_from_iterator_pair< TTagIterator > _tags(TTagIterator first, TTagIterator last)
Definition: attr.hpp:384
size_t add_way_node_list(osmium::memory::Buffer &buffer, const TArgs &... args)
Definition: attr.hpp:947
constexpr detail::outer_ring_from_iterator_pair< TIdIterator > _outer_ring(TIdIterator first, TIdIterator last)
Definition: attr.hpp:504
constexpr _node(osmium::object_id_type value) noexcept
Definition: attr.hpp:405
constexpr detail::nodes_from_iterator_pair< TIdIterator > _nodes(TIdIterator first, TIdIterator last)
Definition: attr.hpp:412
size_t add_changeset(osmium::memory::Buffer &buffer, const TArgs &... args)
Definition: attr.hpp:900
std::initializer_list< member_type > member_ilist
Definition: attr.hpp:463
#define OSMIUM_ATTRIBUTE(_handler, _name, _type)
Definition: attr.hpp:179
#define OSMIUM_ATTRIBUTE_WITH_CONSTRUCTOR(_handler, _name, _type)
Definition: attr.hpp:183
osmium::object_id_type m_ref
Definition: attr.hpp:279
osmium::item_type m_type
Definition: attr.hpp:278
osmium::item_type type() const noexcept
Definition: attr.hpp:294
osmium::object_id_type ref() const noexcept
Definition: attr.hpp:298
member_type_string(char type, osmium::object_id_type ref, std::string &&role) noexcept
Definition: attr.hpp:290
const char * role() const noexcept
Definition: attr.hpp:302
std::string m_role
Definition: attr.hpp:280
member_type_string(osmium::item_type type, osmium::object_id_type ref, std::string &&role)
Definition: attr.hpp:284
member_type(char type, osmium::object_id_type ref, const char *role="") noexcept
Definition: attr.hpp:258
constexpr member_type(osmium::item_type type, osmium::object_id_type ref, const char *role="") noexcept
Definition: attr.hpp:252
osmium::object_id_type m_ref
Definition: attr.hpp:247
osmium::item_type m_type
Definition: attr.hpp:246
constexpr osmium::object_id_type ref() const noexcept
Definition: attr.hpp:266
constexpr const char * role() const noexcept
Definition: attr.hpp:270
constexpr osmium::item_type type() const noexcept
Definition: attr.hpp:262
const char * m_role
Definition: attr.hpp:248
An OSM Changeset, a group of changes made by a single user over a short period of time.
Definition: changeset.hpp:146
Definition: location.hpp:271
Definition: node_ref.hpp:50
Definition: object.hpp:64
Definition: relation.hpp:56
Definition: timestamp.hpp:175
Definition: builder.hpp:56
osmium::memory::Buffer & buffer() noexcept
Return the buffer this builder is using.
Definition: builder.hpp:198
OSMIUM_ATTRIBUTE_ITER(tags_handler, tags_from_iterator_pair)
constexpr const char * get_user(const attr::_user &user, const TArgs &...) noexcept
Definition: attr.hpp:652
void add_user(TBuilder &builder, const TArgs &... args)
Definition: attr.hpp:667
std::enable_if<!is_handled_by< THandler, TArgs... >::value >::type add_list(osmium::builder::Builder &, const TArgs &...) noexcept
Definition: attr.hpp:806
void add_basic(TBuilder &builder, const TArgs &... args) noexcept
Definition: attr.hpp:643
OSMIUM_ATTRIBUTE_WITH_CONSTRUCTOR(object_handler, _id, osmium::object_id_type)
constexpr _deleted(bool value=true) noexcept
Definition: attr.hpp:205
NodeRefListBuilder< InnerRing > InnerRingBuilder
Definition: osm_object_builder.hpp:226
constexpr _visible(bool value=true) noexcept
Definition: attr.hpp:210
NodeRefListBuilder< WayNodeList > WayNodeListBuilder
Definition: osm_object_builder.hpp:224
NodeRefListBuilder< OuterRing > OuterRingBuilder
Definition: osm_object_builder.hpp:225
InputIterator< Reader > end(Reader &)
Definition: reader_iterator.hpp:47
InputIterator< Reader > begin(Reader &reader)
Definition: reader_iterator.hpp:43
type
Definition: entity_bits.hpp:63
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
item_type char_to_item_type(const char c) noexcept
Definition: item_type.hpp:90
uint32_t object_version_type
Type for OSM object version number.
Definition: types.hpp:47
uint32_t user_id_type
Type for OSM user IDs.
Definition: types.hpp:49
std::vector< std::string > split_string(const std::string &str, const char sep, bool compact=false)
Definition: string.hpp:50
uint32_t changeset_id_type
Type for OSM changeset IDs.
Definition: types.hpp:48
constexpr _timestamp(const osmium::Timestamp &value) noexcept
Definition: attr.hpp:215
int64_t object_id_type
Type for OSM object (node, way, or relation) IDs.
Definition: types.hpp:45
item_type
Definition: item_type.hpp:45
_timestamp(const std::string &value)
Definition: attr.hpp:223
uint32_t num_comments_type
Type for changeset num_comments.
Definition: types.hpp:52
uint32_t num_changes_type
Type for changeset num_changes.
Definition: types.hpp:51
Definition: location.hpp:555
static void set_value(osmium::Changeset &changeset, attr::_created_at created_at) noexcept
Definition: attr.hpp:582
static void set_value(osmium::Changeset &changeset, attr::_cid id) noexcept
Definition: attr.hpp:570
static void set_value(osmium::Changeset &changeset, attr::_num_changes num_changes) noexcept
Definition: attr.hpp:574
static void set_value(osmium::Changeset &changeset, attr::_uid uid) noexcept
Definition: attr.hpp:590
static void set_value(osmium::Changeset &changeset, attr::_num_comments num_comments) noexcept
Definition: attr.hpp:578
static void set_value(osmium::Changeset &changeset, attr::_closed_at closed_at) noexcept
Definition: attr.hpp:586
static void set_value(osmium::Changeset &, const TDummy &) noexcept
Definition: attr.hpp:567
static void set_value(ChangesetDiscussionBuilder &builder, const attr::detail::comments_from_iterator_pair< TIterator > &comments)
Definition: attr.hpp:769
static void set_value(ChangesetDiscussionBuilder &, const TDummy &) noexcept
Definition: attr.hpp:760
static void set_value(ChangesetDiscussionBuilder &builder, const attr::_comment &comment)
Definition: attr.hpp:763
static void set_value(RelationMemberListBuilder &, const TDummy &) noexcept
Definition: attr.hpp:741
static void set_value(RelationMemberListBuilder &builder, const attr::detail::members_from_iterator_pair< TIterator > &members)
Definition: attr.hpp:749
static void set_value(RelationMemberListBuilder &builder, const attr::_member &member)
Definition: attr.hpp:744
static void set_value(osmium::Node &node, attr::_location location) noexcept
Definition: attr.hpp:636
static void set_value(WayNodeListBuilder &, const TDummy &) noexcept
Definition: attr.hpp:722
static void set_value(WayNodeListBuilder &builder, const attr::_node &node_ref)
Definition: attr.hpp:725
static void set_value(WayNodeListBuilder &builder, const attr::detail::nodes_from_iterator_pair< TIterator > &nodes)
Definition: attr.hpp:730
static void set_value(osmium::OSMObject &object, attr::_cid changeset) noexcept
Definition: attr.hpp:622
static void set_value(osmium::OSMObject &object, attr::_deleted deleted) noexcept
Definition: attr.hpp:614
static void set_value(osmium::OSMObject &object, attr::_timestamp timestamp) noexcept
Definition: attr.hpp:618
static void set_value(osmium::OSMObject &, const TDummy &) noexcept
Definition: attr.hpp:599
static void set_value(osmium::OSMObject &object, attr::_id id) noexcept
Definition: attr.hpp:602
static void set_value(osmium::OSMObject &object, attr::_visible visible) noexcept
Definition: attr.hpp:610
static void set_value(osmium::OSMObject &object, attr::_version version) noexcept
Definition: attr.hpp:606
static void set_value(osmium::OSMObject &object, attr::_uid uid) noexcept
Definition: attr.hpp:626
static void set_value(AreaBuilder &parent, const attr::detail::outer_ring_from_iterator_pair< TIterator > &nodes)
Definition: attr.hpp:785
static void set_value(AreaBuilder &, const TDummy &) noexcept
Definition: attr.hpp:781
static void set_value(AreaBuilder &parent, const attr::detail::inner_ring_from_iterator_pair< TIterator > &nodes)
Definition: attr.hpp:793