1 #ifndef OSMIUM_BUILDER_OSM_OBJECT_BUILDER_HPP
2 #define OSMIUM_BUILDER_OSM_OBJECT_BUILDER_HPP
37 #include <initializer_list>
78 void add_tag(
const char* key,
const char* value) {
100 void add_tag(
const std::string& key,
const std::string& value) {
101 add_size(
append(key.data(), static_cast_with_assert<string_size_type>(key.size() + 1)) +
102 append(value.data(), static_cast_with_assert<string_size_type>(value.size() + 1)));
159 add_role(member, role, static_cast_with_assert<string_size_type>(std::strlen(role)));
170 add_role(member, role.data(), static_cast_with_assert<string_size_type>(role.size()));
198 add_role(*member, role, role_length);
215 add_member(type, ref, role, strlen(role), full_member);
229 add_member(type, ref, role.data(), role.size(), full_member);
241 static_cast<Builder*
>(
this)->reserve_space_for<string_size_type>();
245 void add_tags(
const std::initializer_list<std::pair<const char*, const char*>>& tags) {
247 for (
const auto& p : tags) {
248 tl_builder.
add_tag(p.first, p.second);
267 for (
const auto& node_ref : nodes) {
305 #endif // OSMIUM_BUILDER_OSM_OBJECT_BUILDER_HPP
Definition: osm_object_builder.hpp:235
NodeRefListBuilder< InnerRing > InnerRingBuilder
Definition: osm_object_builder.hpp:133
~TagListBuilder()
Definition: osm_object_builder.hpp:68
osmium::memory::Buffer & buffer() noexcept
Return the buffer this builder is using.
Definition: builder.hpp:179
type
Definition: entity_bits.hpp:60
osmium::memory::item_size_type append_zero()
Definition: builder.hpp:173
WayBuilder(osmium::memory::Buffer &buffer, Builder *parent=nullptr)
Definition: osm_object_builder.hpp:261
AreaBuilder(osmium::memory::Buffer &buffer, Builder *parent=nullptr)
Definition: osm_object_builder.hpp:278
void add_member(osmium::item_type type, object_id_type ref, const char *role, const osmium::OSMObject *full_member=nullptr)
Definition: osm_object_builder.hpp:214
void initialize_from_object(const osmium::OSMObject &source)
Definition: osm_object_builder.hpp:285
void add_user(const char *user, const string_size_type length)
Definition: builder.hpp:206
OSMObjectBuilder< osmium::Node > NodeBuilder
Definition: osm_object_builder.hpp:254
item_type
Definition: item_type.hpp:43
~RelationMemberListBuilder()
Definition: osm_object_builder.hpp:179
void add_tag(const char *key, const string_size_type key_length, const char *value, const string_size_type value_length)
Definition: osm_object_builder.hpp:90
Definition: relation.hpp:150
OSMObject & set_id(object_id_type id) noexcept
Definition: object.hpp:124
RelationMemberListBuilder(osmium::memory::Buffer &buffer, Builder *parent=nullptr)
Definition: osm_object_builder.hpp:175
void add_member(osmium::item_type type, object_id_type ref, const char *role, const string_size_type role_length, const osmium::OSMObject *full_member=nullptr)
Definition: osm_object_builder.hpp:194
osmium::object_id_type object_id_to_area_id(osmium::object_id_type id, osmium::item_type type) noexcept
Definition: area.hpp:92
NodeRefListBuilder< WayNodeList > WayNodeListBuilder
Definition: osm_object_builder.hpp:131
void add_role(osmium::RelationMember &member, const char *role)
Definition: osm_object_builder.hpp:158
Definition: osm_object_builder.hpp:108
Definition: relation.hpp:54
int64_t object_id_type
Type for OSM object (node, way, or relation) IDs.
Definition: types.hpp:45
Namespace for everything in the Osmium library.
Definition: assembler.hpp:55
void add_tags(const std::initializer_list< std::pair< const char *, const char * >> &tags)
Definition: osm_object_builder.hpp:245
void add_node_refs(const std::initializer_list< osmium::NodeRef > &nodes)
Definition: osm_object_builder.hpp:265
void add_role(osmium::RelationMember &member, const char *role, const string_size_type length)
Definition: osm_object_builder.hpp:145
OSMObjectBuilder(osmium::memory::Buffer &buffer, Builder *parent=nullptr)
Definition: osm_object_builder.hpp:239
uint16_t string_size_type
Definition: types.hpp:58
NodeRefListBuilder< OuterRing > OuterRingBuilder
Definition: osm_object_builder.hpp:132
OSMObject & set_timestamp(const osmium::Timestamp timestamp) noexcept
Definition: object.hpp:284
void add_node_ref(const object_id_type ref, const osmium::Location location=Location())
Definition: osm_object_builder.hpp:125
user_id_type uid() const noexcept
Get user id of this object.
Definition: object.hpp:234
changeset_id_type changeset() const noexcept
Get changeset id of this object.
Definition: object.hpp:210
OSMObject & set_changeset(changeset_id_type changeset) noexcept
Definition: object.hpp:219
Definition: location.hpp:79
Definition: osm_object_builder.hpp:257
object_id_type id() const noexcept
Get ID of this object.
Definition: object.hpp:110
OSMObject & set_version(object_version_type version) noexcept
Definition: object.hpp:195
object_version_type version() const noexcept
Get version of this object.
Definition: object.hpp:186
void set_role_size(string_size_type size) noexcept
Definition: relation.hpp:96
void add_member(osmium::item_type type, object_id_type ref, const std::string &role, const osmium::OSMObject *full_member=nullptr)
Definition: osm_object_builder.hpp:228
NodeRefListBuilder(osmium::memory::Buffer &buffer, Builder *parent=nullptr)
Definition: osm_object_builder.hpp:112
Definition: buffer.hpp:94
Definition: builder.hpp:186
OSMObject & set_visible(bool visible) noexcept
Definition: object.hpp:163
~NodeRefListBuilder()
Definition: osm_object_builder.hpp:116
osmium::memory::item_size_type append(const char *data, const osmium::memory::item_size_type length)
Definition: builder.hpp:152
ObjectBuilder< osmium::Changeset > ChangesetBuilder
Definition: osm_object_builder.hpp:299
bool visible() const noexcept
Is this object marked visible (ie not deleted)?
Definition: object.hpp:144
void add_role(osmium::RelationMember &member, const std::string &role)
Definition: osm_object_builder.hpp:169
void add_size(uint32_t size)
Definition: builder.hpp:116
void add_item(const osmium::memory::Item *item)
Definition: builder.hpp:127
OSMObjectBuilder< osmium::Relation > RelationBuilder
Definition: osm_object_builder.hpp:255
void add_tag(const std::string &key, const std::string &value)
Definition: osm_object_builder.hpp:100
Definition: node_ref.hpp:50
osmium::Area & object() noexcept
Definition: builder.hpp:196
const char * user() const noexcept
Get user name for this object.
Definition: object.hpp:290
item_type type() const noexcept
Definition: item.hpp:155
osmium::Timestamp timestamp() const noexcept
Get timestamp when this object last changed.
Definition: object.hpp:274
OSMObject & set_uid(user_id_type uid) noexcept
Definition: object.hpp:243
Definition: builder.hpp:57
Definition: osm_object_builder.hpp:135
TagListBuilder(osmium::memory::Buffer &buffer, Builder *parent=nullptr)
Definition: osm_object_builder.hpp:64
void add_tag(const char *key, const char *value)
Definition: osm_object_builder.hpp:78
Definition: object.hpp:58
Definition: osm_object_builder.hpp:60
void add_node_ref(const NodeRef &node_ref)
Definition: osm_object_builder.hpp:120
Definition: osm_object_builder.hpp:274
void add_padding(bool self=false)
Definition: builder.hpp:103