1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#ifndef NODE_PERSISTENT_CACHE_H
#define NODE_PERSISTENT_CACHE_H
#include <memory>
#include <osmium/index/map/dense_file_array.hpp>
#include <osmium/osm/location.hpp>
#include "node-ram-cache.hpp"
#include "osmtypes.hpp"
struct options_t;
class reprojection;
class node_persistent_cache
{
public:
node_persistent_cache(options_t const *options,
std::shared_ptr<node_ram_cache> ptr);
~node_persistent_cache();
void set(osmid_t id, osmium::Location const &coord);
osmium::Location get(osmid_t id);
size_t get_list(osmium::WayNodeList *nodes);
private:
// Dense node cache for unsigned IDs only
using index_t =
osmium::index::map::DenseFileArray<osmium::unsigned_object_id_type,
osmium::Location>;
std::shared_ptr<node_ram_cache> m_ram_cache;
int m_fd;
std::unique_ptr<index_t> m_index;
bool m_remove_file;
const char *m_fname;
};
#endif
|