Osmium  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Types | Private Member Functions | Private Attributes
Osmium::Input::PBF< THandler > Class Template Reference

#include <pbf.hpp>

Inheritance diagram for Osmium::Input::PBF< THandler >:
Inheritance graph
[legend]
Collaboration diagram for Osmium::Input::PBF< THandler >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 PBF (OSMFile &file, THandler &handler)
void parse ()

Private Types

typedef std::pair< const void
*, size_t > 
array_t

Private Member Functions

void parse_group (const OSMPBF::PrimitiveGroup &group, const OSMPBF::StringTable &stringtable)
void parse_node_group (const OSMPBF::PrimitiveGroup &, const OSMPBF::StringTable &, void(Osmium::Handler::Base::*)(const shared_ptr< Osmium::OSM::Node const > &) const)
template<typename T >
void parse_node_group (const OSMPBF::PrimitiveGroup &group, const OSMPBF::StringTable &stringtable, T)
void parse_way_group (const OSMPBF::PrimitiveGroup &, const OSMPBF::StringTable &, void(Osmium::Handler::Base::*)(const shared_ptr< Osmium::OSM::Way const > &) const)
template<typename T >
void parse_way_group (const OSMPBF::PrimitiveGroup &group, const OSMPBF::StringTable &stringtable, T)
void parse_relation_group (const OSMPBF::PrimitiveGroup &, const OSMPBF::StringTable &, void(Osmium::Handler::Base::*)(const shared_ptr< Osmium::OSM::Relation const > &) const)
template<typename T >
void parse_relation_group (const OSMPBF::PrimitiveGroup &group, const OSMPBF::StringTable &stringtable, T)
void parse_dense_node_group (const OSMPBF::PrimitiveGroup &, const OSMPBF::StringTable &, void(Osmium::Handler::Base::*)(const shared_ptr< Osmium::OSM::Node const > &) const)
template<typename T >
void parse_dense_node_group (const OSMPBF::PrimitiveGroup &group, const OSMPBF::StringTable &stringtable, T)
int convert_from_network_byte_order (unsigned char data[4])
bool read_blob_header ()
array_t read_blob (const int size)

Private Attributes

unsigned char m_input_buffer [OSMPBF::max_uncompressed_blob_size]
unsigned char m_unpack_buffer [OSMPBF::max_uncompressed_blob_size]
OSMPBF::Blob m_pbf_blob
OSMPBF::BlobHeader m_pbf_blob_header
OSMPBF::PrimitiveBlock m_pbf_primitive_block
int64_t m_date_factor

Detailed Description

template<class THandler>
class Osmium::Input::PBF< THandler >

Class for parsing PBF files.

Generally you are not supposed to instantiate this class yourself. Instead create an OSMFile object and call its read() method.

Template Parameters:
THandlerA handler class (subclass of Osmium::Handler::Base).

Member Typedef Documentation

template<class THandler >
typedef std::pair<const void*, size_t> Osmium::Input::PBF< THandler >::array_t [private]

Constructor & Destructor Documentation

template<class THandler >
Osmium::Input::PBF< THandler >::PBF ( OSMFile file,
THandler &  handler 
) [inline]

Instantiate PBF Parser

Parameters:
fileOSMFile instance.
handlerInstance of THandler.

Member Function Documentation

template<class THandler >
int Osmium::Input::PBF< THandler >::convert_from_network_byte_order ( unsigned char  data[4]) [inline, private]

Convert 4 bytes from network byte order.

template<class THandler >
void Osmium::Input::PBF< THandler >::parse ( ) [inline, virtual]

Parse PBF file.

Will throw a subclass of Osmium::OSMFile::FileTypeError when it turns out while parsing the file, that it is of the wrong type.

Implements Osmium::Input::Base< THandler >.

template<class THandler >
void Osmium::Input::PBF< THandler >::parse_dense_node_group ( const OSMPBF< THandler >::PrimitiveGroup &  ,
const OSMPBF< THandler >::StringTable ,
void(Osmium::Handler::Base::*)(const shared_ptr< Osmium::OSM::Node const > &)  const 
) [inline, private]
template<class THandler >
template<typename T >
void Osmium::Input::PBF< THandler >::parse_dense_node_group ( const OSMPBF< THandler >::PrimitiveGroup &  group,
const OSMPBF< THandler >::StringTable stringtable,
 
) [inline, private]
template<class THandler >
void Osmium::Input::PBF< THandler >::parse_group ( const OSMPBF< THandler >::PrimitiveGroup &  group,
const OSMPBF< THandler >::StringTable stringtable 
) [inline, private]

Parse one PrimitiveGroup inside a PrimitiveBlock. This function will check what type of data the group contains (nodes, dense nodes, ways, or relations) and call the proper parsing function. It will also make sure the right before_* and after_* methods are called.

Parameters:
groupThe PrimitiveGroup to parse.
stringtableThe string table inside the PrimitiveBlock with tags and usernames.
template<class THandler >
void Osmium::Input::PBF< THandler >::parse_node_group ( const OSMPBF< THandler >::PrimitiveGroup &  ,
const OSMPBF< THandler >::StringTable ,
void(Osmium::Handler::Base::*)(const shared_ptr< Osmium::OSM::Node const > &)  const 
) [inline, private]
template<class THandler >
template<typename T >
void Osmium::Input::PBF< THandler >::parse_node_group ( const OSMPBF< THandler >::PrimitiveGroup &  group,
const OSMPBF< THandler >::StringTable stringtable,
 
) [inline, private]
template<class THandler >
void Osmium::Input::PBF< THandler >::parse_relation_group ( const OSMPBF< THandler >::PrimitiveGroup &  ,
const OSMPBF< THandler >::StringTable ,
void(Osmium::Handler::Base::*)(const shared_ptr< Osmium::OSM::Relation const > &)  const 
) [inline, private]
template<class THandler >
template<typename T >
void Osmium::Input::PBF< THandler >::parse_relation_group ( const OSMPBF< THandler >::PrimitiveGroup &  group,
const OSMPBF< THandler >::StringTable stringtable,
 
) [inline, private]
template<class THandler >
void Osmium::Input::PBF< THandler >::parse_way_group ( const OSMPBF< THandler >::PrimitiveGroup &  ,
const OSMPBF< THandler >::StringTable ,
void(Osmium::Handler::Base::*)(const shared_ptr< Osmium::OSM::Way const > &)  const 
) [inline, private]
template<class THandler >
template<typename T >
void Osmium::Input::PBF< THandler >::parse_way_group ( const OSMPBF< THandler >::PrimitiveGroup &  group,
const OSMPBF< THandler >::StringTable stringtable,
 
) [inline, private]
template<class THandler >
array_t Osmium::Input::PBF< THandler >::read_blob ( const int  size) [inline, private]

Read a (possibly compressed) blob of data. If the blob is compressed, it is uncompressed.

template<class THandler >
bool Osmium::Input::PBF< THandler >::read_blob_header ( ) [inline, private]

Read blob header by first reading the size and then the header

Returns:
false for EOF, true otherwise

Member Data Documentation

template<class THandler >
int64_t Osmium::Input::PBF< THandler >::m_date_factor [private]
template<class THandler >
unsigned char Osmium::Input::PBF< THandler >::m_input_buffer[OSMPBF::max_uncompressed_blob_size] [private]
template<class THandler >
OSMPBF::Blob Osmium::Input::PBF< THandler >::m_pbf_blob [private]
template<class THandler >
OSMPBF::BlobHeader Osmium::Input::PBF< THandler >::m_pbf_blob_header [private]
template<class THandler >
OSMPBF::PrimitiveBlock Osmium::Input::PBF< THandler >::m_pbf_primitive_block [private]
template<class THandler >
unsigned char Osmium::Input::PBF< THandler >::m_unpack_buffer[OSMPBF::max_uncompressed_blob_size] [private]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines