Libosmium  2.20.0
Fast and flexible C++ library for working with OpenStreetMap data
Public Member Functions | Private Types | Private Member Functions | Static Private Attributes | List of all members
osmium::builder::OSMObjectBuilder< TDerived, T > Class Template Reference

#include <osm_object_builder.hpp>

Inheritance diagram for osmium::builder::OSMObjectBuilder< TDerived, T >:
Inheritance graph
[legend]
Collaboration diagram for osmium::builder::OSMObjectBuilder< TDerived, T >:
Collaboration graph
[legend]

Public Member Functions

 OSMObjectBuilder (osmium::memory::Buffer &buffer, Builder *parent=nullptr)
 
T & object () noexcept
 
const T & cobject () const noexcept
 
TDerived & set_user (const char *user, const string_size_type length)
 
TDerived & set_user (const char *user)
 
TDerived & set_user (const std::string &user)
 
void add_tags (const std::initializer_list< std::pair< const char *, const char * > > &tags)
 
- Public Member Functions inherited from osmium::builder::Builder
 Builder (const Builder &)=delete
 
 Builder (Builder &&)=delete
 
Builderoperator= (const Builder &)=delete
 
Builderoperator= (Builder &&)=delete
 
osmium::memory::Buffer & buffer () noexcept
 Return the buffer this builder is using. More...
 
void add_item (const osmium::memory::Item &item)
 

Private Types

using type = TDerived
 

Private Member Functions

void set_user_size (string_size_type size) noexcept
 

Static Private Attributes

static constexpr const std::size_t min_size_for_user = osmium::memory::padded_length(sizeof(string_size_type) + 1)
 

Additional Inherited Members

- Protected Member Functions inherited from osmium::builder::Builder
 Builder (osmium::memory::Buffer &buffer, Builder *parent, osmium::memory::item_size_type size)
 
 ~Builder () noexcept
 
unsigned char * item_pos () const noexcept
 
osmium::memory::Itemitem () const noexcept
 
unsigned char * reserve_space (std::size_t size)
 
void add_padding (bool self=false)
 
void add_size (osmium::memory::item_size_type size)
 
uint32_t size () const noexcept
 
template<typename T >
T * reserve_space_for ()
 
osmium::memory::item_size_type append (const char *data, const osmium::memory::item_size_type length)
 
osmium::memory::item_size_type append_with_zero (const char *data, const osmium::memory::item_size_type length)
 
osmium::memory::item_size_type append (const char *str)
 

Member Typedef Documentation

◆ type

template<typename TDerived , typename T >
using osmium::builder::OSMObjectBuilder< TDerived, T >::type = TDerived
private

Constructor & Destructor Documentation

◆ OSMObjectBuilder()

template<typename TDerived , typename T >
osmium::builder::OSMObjectBuilder< TDerived, T >::OSMObjectBuilder ( osmium::memory::Buffer &  buffer,
Builder parent = nullptr 
)
inlineexplicit

Member Function Documentation

◆ add_tags()

template<typename TDerived , typename T >
void osmium::builder::OSMObjectBuilder< TDerived, T >::add_tags ( const std::initializer_list< std::pair< const char *, const char * > > &  tags)
inline

◆ cobject()

template<typename TDerived , typename T >
const T & osmium::builder::OSMObjectBuilder< TDerived, T >::cobject ( ) const
inlinenoexcept

Get a const reference to the object being built.

Note that this reference will be invalidated by every action on the builder that might make the buffer grow. This includes calls to set_user() and any time a new sub-builder is created.

◆ object()

template<typename TDerived , typename T >
T & osmium::builder::OSMObjectBuilder< TDerived, T >::object ( )
inlinenoexcept

Get a reference to the object being built.

Note that this reference will be invalidated by every action on the builder that might make the buffer grow. This includes calls to set_user() and any time a new sub-builder is created.

◆ set_user() [1/3]

template<typename TDerived , typename T >
TDerived & osmium::builder::OSMObjectBuilder< TDerived, T >::set_user ( const char *  user)
inline

Set user name.

Parameters
userPointer to \0-terminated user name.
Precondition
strlen(user) < 2^16 - 1

◆ set_user() [2/3]

template<typename TDerived , typename T >
TDerived & osmium::builder::OSMObjectBuilder< TDerived, T >::set_user ( const char *  user,
const string_size_type  length 
)
inline

Set user name.

Parameters
userPointer to user name.
lengthLength of user name (without \0 termination).

◆ set_user() [3/3]

template<typename TDerived , typename T >
TDerived & osmium::builder::OSMObjectBuilder< TDerived, T >::set_user ( const std::string &  user)
inline

Set user name.

Parameters
userUser name.
Precondition
user.size() < 2^16 - 1

◆ set_user_size()

template<typename TDerived , typename T >
void osmium::builder::OSMObjectBuilder< TDerived, T >::set_user_size ( string_size_type  size)
inlineprivatenoexcept

Member Data Documentation

◆ min_size_for_user

template<typename TDerived , typename T >
constexpr const std::size_t osmium::builder::OSMObjectBuilder< TDerived, T >::min_size_for_user = osmium::memory::padded_length(sizeof(string_size_type) + 1)
staticconstexprprivate

The documentation for this class was generated from the following file: