Renaming of MemorySetting > Ownership

This commit is contained in:
Pepijn Schoen
2017-04-03 09:51:41 +02:00
committed by Patrick Niklaus
parent d6e56c38d5
commit 16665aeb00
21 changed files with 126 additions and 126 deletions
+4 -4
View File
@@ -20,19 +20,19 @@ using EdgeBasedGraphEdgeData = partition::EdgeBasedGraphEdgeData;
struct MultiLevelEdgeBasedGraph
: public partition::MultiLevelGraph<EdgeBasedGraphEdgeData,
osrm::storage::MemorySetting::InternalMemory>
osrm::storage::Ownership::Container>
{
using Base = partition::MultiLevelGraph<EdgeBasedGraphEdgeData,
osrm::storage::MemorySetting::InternalMemory>;
osrm::storage::Ownership::Container>;
using Base::Base;
};
struct MultiLevelEdgeBasedGraphView
: public partition::MultiLevelGraph<EdgeBasedGraphEdgeData,
osrm::storage::MemorySetting::SharedMemory>
osrm::storage::Ownership::View>
{
using Base = partition::MultiLevelGraph<EdgeBasedGraphEdgeData,
osrm::storage::MemorySetting::SharedMemory>;
osrm::storage::Ownership::View>;
using Base::Base;
};
@@ -62,7 +62,7 @@ class ContiguousInternalMemoryAlgorithmDataFacade<algorithm::CH>
: public datafacade::AlgorithmDataFacade<algorithm::CH>
{
private:
using QueryGraph = util::StaticGraph<EdgeData, osrm::storage::MemorySetting::SharedMemory>;
using QueryGraph = util::StaticGraph<EdgeData, osrm::storage::Ownership::View>;
using GraphNode = QueryGraph::NodeArrayEntry;
using GraphEdge = QueryGraph::EdgeArrayEntry;
@@ -200,11 +200,11 @@ class ContiguousInternalMemoryDataFacadeBase : public BaseDataFacade
{
private:
using super = BaseDataFacade;
using IndexBlock = util::RangeTable<16, osrm::storage::MemorySetting::SharedMemory>::BlockT;
using IndexBlock = util::RangeTable<16, osrm::storage::Ownership::View>::BlockT;
using RTreeLeaf = super::RTreeLeaf;
using SharedRTree = util::StaticRTree<RTreeLeaf,
util::vector_view<util::Coordinate>,
osrm::storage::MemorySetting::SharedMemory>;
osrm::storage::Ownership::View>;
using SharedGeospatialQuery = GeospatialQuery<SharedRTree, BaseDataFacade>;
using RTreeNode = SharedRTree::TreeNode;
@@ -214,7 +214,7 @@ class ContiguousInternalMemoryDataFacadeBase : public BaseDataFacade
unsigned m_check_sum;
util::vector_view<util::Coordinate> m_coordinate_list;
util::PackedVector<OSMNodeID, osrm::storage::MemorySetting::SharedMemory> m_osmnodeid_list;
util::PackedVector<OSMNodeID, osrm::storage::Ownership::View> m_osmnodeid_list;
util::vector_view<GeometryID> m_via_geometry_list;
util::vector_view<NameID> m_name_ID_list;
util::vector_view<LaneDataID> m_lane_data_id;
@@ -251,7 +251,7 @@ class ContiguousInternalMemoryDataFacadeBase : public BaseDataFacade
util::vector_view<util::guidance::EntryClass> m_entry_class_table;
// the look-up table for distinct bearing classes. A bearing class lists the available bearings
// at an intersection
std::shared_ptr<util::RangeTable<16, osrm::storage::MemorySetting::SharedMemory>>
std::shared_ptr<util::RangeTable<16, osrm::storage::Ownership::View>>
m_bearing_ranges_table;
util::vector_view<DiscreteBearing> m_bearing_values_table;
@@ -505,7 +505,7 @@ class ContiguousInternalMemoryDataFacadeBase : public BaseDataFacade
blocks_ptr, data_layout.num_entries[storage::DataLayout::BEARING_BLOCKS]);
m_bearing_ranges_table =
std::make_unique<util::RangeTable<16, osrm::storage::MemorySetting::SharedMemory>>(
std::make_unique<util::RangeTable<16, osrm::storage::Ownership::View>>(
bearing_offsets,
bearing_blocks,
static_cast<unsigned>(m_bearing_values_table.size()));
+13 -13
View File
@@ -24,24 +24,24 @@ class CompressedEdgeContainer;
namespace detail
{
template <osrm::storage::MemorySetting MemorySetting> class SegmentDataContainerImpl;
template <osrm::storage::Ownership Ownership> class SegmentDataContainerImpl;
}
namespace io
{
template <osrm::storage::MemorySetting MemorySetting>
template <osrm::storage::Ownership Ownership>
inline void read(const boost::filesystem::path &path,
detail::SegmentDataContainerImpl<MemorySetting> &segment_data);
template <osrm::storage::MemorySetting MemorySetting>
detail::SegmentDataContainerImpl<Ownership> &segment_data);
template <osrm::storage::Ownership Ownership>
inline void write(const boost::filesystem::path &path,
const detail::SegmentDataContainerImpl<MemorySetting> &segment_data);
const detail::SegmentDataContainerImpl<Ownership> &segment_data);
}
namespace detail
{
template <osrm::storage::MemorySetting MemorySetting> class SegmentDataContainerImpl
template <osrm::storage::Ownership Ownership> class SegmentDataContainerImpl
{
template <typename T> using Vector = typename util::ShM<T, MemorySetting>::vector;
template <typename T> using Vector = typename util::ShM<T, Ownership>::vector;
friend CompressedEdgeContainer;
@@ -191,11 +191,11 @@ template <osrm::storage::MemorySetting MemorySetting> class SegmentDataContainer
auto GetNumberOfSegments() const { return fwd_weights.size(); }
friend void
io::read<MemorySetting>(const boost::filesystem::path &path,
detail::SegmentDataContainerImpl<MemorySetting> &segment_data);
io::read<Ownership>(const boost::filesystem::path &path,
detail::SegmentDataContainerImpl<Ownership> &segment_data);
friend void
io::write<MemorySetting>(const boost::filesystem::path &path,
const detail::SegmentDataContainerImpl<MemorySetting> &segment_data);
io::write<Ownership>(const boost::filesystem::path &path,
const detail::SegmentDataContainerImpl<Ownership> &segment_data);
private:
Vector<std::uint32_t> index;
@@ -209,9 +209,9 @@ template <osrm::storage::MemorySetting MemorySetting> class SegmentDataContainer
}
using SegmentDataView =
detail::SegmentDataContainerImpl<osrm::storage::MemorySetting::SharedMemory>;
detail::SegmentDataContainerImpl<osrm::storage::Ownership::View>;
using SegmentDataContainer =
detail::SegmentDataContainerImpl<osrm::storage::MemorySetting::InternalMemory>;
detail::SegmentDataContainerImpl<osrm::storage::Ownership::Container>;
}
}
+16 -16
View File
@@ -27,24 +27,24 @@ namespace partition
{
namespace detail
{
template <osrm::storage::MemorySetting MemorySetting> class CellStorageImpl;
template <osrm::storage::Ownership Ownership> class CellStorageImpl;
}
using CellStorage = detail::CellStorageImpl<osrm::storage::MemorySetting::InternalMemory>;
using CellStorageView = detail::CellStorageImpl<osrm::storage::MemorySetting::SharedMemory>;
using CellStorage = detail::CellStorageImpl<osrm::storage::Ownership::Container>;
using CellStorageView = detail::CellStorageImpl<osrm::storage::Ownership::View>;
namespace io
{
template <osrm::storage::MemorySetting MemorySetting>
template <osrm::storage::Ownership Ownership>
inline void read(const boost::filesystem::path &path,
detail::CellStorageImpl<MemorySetting> &storage);
template <osrm::storage::MemorySetting MemorySetting>
detail::CellStorageImpl<Ownership> &storage);
template <osrm::storage::Ownership Ownership>
inline void write(const boost::filesystem::path &path,
const detail::CellStorageImpl<MemorySetting> &storage);
const detail::CellStorageImpl<Ownership> &storage);
}
namespace detail
{
template <osrm::storage::MemorySetting MemorySetting> class CellStorageImpl
template <osrm::storage::Ownership Ownership> class CellStorageImpl
{
public:
using WeightOffset = std::uint32_t;
@@ -66,7 +66,7 @@ template <osrm::storage::MemorySetting MemorySetting> class CellStorageImpl
};
private:
template <typename T> using Vector = typename util::ShM<T, MemorySetting>::vector;
template <typename T> using Vector = typename util::ShM<T, Ownership>::vector;
// Implementation of the cell view. We need a template parameter here
// because we need to derive a read-only and read-write view from this.
@@ -188,7 +188,7 @@ template <osrm::storage::MemorySetting MemorySetting> class CellStorageImpl
template <
typename GraphT,
typename = std::enable_if<MemorySetting == osrm::storage::MemorySetting::InternalMemory>>
typename = std::enable_if<Ownership == osrm::storage::Ownership::Container>>
CellStorageImpl(const partition::MultiLevelPartition &partition, const GraphT &base_graph)
{
// pre-allocate storge for CellData so we can have random access to it by cell id
@@ -318,7 +318,7 @@ template <osrm::storage::MemorySetting MemorySetting> class CellStorageImpl
}
template <
typename = std::enable_if<MemorySetting == osrm::storage::MemorySetting::SharedMemory>>
typename = std::enable_if<Ownership == osrm::storage::Ownership::View>>
CellStorageImpl(Vector<EdgeWeight> weights_,
Vector<NodeID> source_boundary_,
Vector<NodeID> destination_boundary_,
@@ -344,7 +344,7 @@ template <osrm::storage::MemorySetting MemorySetting> class CellStorageImpl
}
template <
typename = std::enable_if<MemorySetting == osrm::storage::MemorySetting::InternalMemory>>
typename = std::enable_if<Ownership == osrm::storage::Ownership::Container>>
Cell GetCell(LevelID level, CellID id)
{
const auto level_index = LevelIDToIndex(level);
@@ -356,10 +356,10 @@ template <osrm::storage::MemorySetting MemorySetting> class CellStorageImpl
cells[cell_index], weights.data(), source_boundary.data(), destination_boundary.data()};
}
friend void io::read<MemorySetting>(const boost::filesystem::path &path,
detail::CellStorageImpl<MemorySetting> &storage);
friend void io::write<MemorySetting>(const boost::filesystem::path &path,
const detail::CellStorageImpl<MemorySetting> &storage);
friend void io::read<Ownership>(const boost::filesystem::path &path,
detail::CellStorageImpl<Ownership> &storage);
friend void io::write<Ownership>(const boost::filesystem::path &path,
const detail::CellStorageImpl<Ownership> &storage);
private:
Vector<EdgeWeight> weights;
+4 -4
View File
@@ -16,9 +16,9 @@ namespace partition
namespace io
{
template <typename EdgeDataT, osrm::storage::MemorySetting MemorySetting>
template <typename EdgeDataT, osrm::storage::Ownership Ownership>
inline void read(const boost::filesystem::path &path,
MultiLevelGraph<EdgeDataT, MemorySetting> &graph)
MultiLevelGraph<EdgeDataT, Ownership> &graph)
{
const auto fingerprint = storage::io::FileReader::VerifyFingerprint;
storage::io::FileReader reader{path, fingerprint};
@@ -28,9 +28,9 @@ inline void read(const boost::filesystem::path &path,
reader.DeserializeVector(graph.edge_to_level);
}
template <typename EdgeDataT, osrm::storage::MemorySetting MemorySetting>
template <typename EdgeDataT, osrm::storage::Ownership Ownership>
inline void write(const boost::filesystem::path &path,
const MultiLevelGraph<EdgeDataT, MemorySetting> &graph)
const MultiLevelGraph<EdgeDataT, Ownership> &graph)
{
const auto fingerprint = storage::io::FileWriter::GenerateFingerprint;
storage::io::FileWriter writer{path, fingerprint};
+13 -13
View File
@@ -16,24 +16,24 @@ namespace osrm
{
namespace partition
{
template <typename EdgeDataT, osrm::storage::MemorySetting MemorySetting> class MultiLevelGraph;
template <typename EdgeDataT, osrm::storage::Ownership Ownership> class MultiLevelGraph;
namespace io
{
template <typename EdgeDataT, osrm::storage::MemorySetting MemorySetting>
void read(const boost::filesystem::path &path, MultiLevelGraph<EdgeDataT, MemorySetting> &graph);
template <typename EdgeDataT, osrm::storage::Ownership Ownership>
void read(const boost::filesystem::path &path, MultiLevelGraph<EdgeDataT, Ownership> &graph);
template <typename EdgeDataT, osrm::storage::MemorySetting MemorySetting>
template <typename EdgeDataT, osrm::storage::Ownership Ownership>
void write(const boost::filesystem::path &path,
const MultiLevelGraph<EdgeDataT, MemorySetting> &graph);
const MultiLevelGraph<EdgeDataT, Ownership> &graph);
}
template <typename EdgeDataT, osrm::storage::MemorySetting MemorySetting>
class MultiLevelGraph : public util::StaticGraph<EdgeDataT, MemorySetting>
template <typename EdgeDataT, osrm::storage::Ownership Ownership>
class MultiLevelGraph : public util::StaticGraph<EdgeDataT, Ownership>
{
private:
using SuperT = util::StaticGraph<EdgeDataT, MemorySetting>;
template <typename T> using Vector = typename util::ShM<T, MemorySetting>::vector;
using SuperT = util::StaticGraph<EdgeDataT, Ownership>;
template <typename T> using Vector = typename util::ShM<T, Ownership>::vector;
public:
// We limit each node to have 255 edges
@@ -192,11 +192,11 @@ class MultiLevelGraph : public util::StaticGraph<EdgeDataT, MemorySetting>
}
friend void
io::read<EdgeDataT, MemorySetting>(const boost::filesystem::path &path,
MultiLevelGraph<EdgeDataT, MemorySetting> &graph);
io::read<EdgeDataT, Ownership>(const boost::filesystem::path &path,
MultiLevelGraph<EdgeDataT, Ownership> &graph);
friend void
io::write<EdgeDataT, MemorySetting>(const boost::filesystem::path &path,
const MultiLevelGraph<EdgeDataT, MemorySetting> &graph);
io::write<EdgeDataT, Ownership>(const boost::filesystem::path &path,
const MultiLevelGraph<EdgeDataT, Ownership> &graph);
Vector<EdgeOffset> node_to_edge_offset;
};
+15 -15
View File
@@ -26,32 +26,32 @@ namespace partition
{
namespace detail
{
template <osrm::storage::MemorySetting MemorySetting> class MultiLevelPartitionImpl;
template <osrm::storage::Ownership Ownership> class MultiLevelPartitionImpl;
}
using MultiLevelPartition =
detail::MultiLevelPartitionImpl<osrm::storage::MemorySetting::InternalMemory>;
detail::MultiLevelPartitionImpl<osrm::storage::Ownership::Container>;
using MultiLevelPartitionView =
detail::MultiLevelPartitionImpl<osrm::storage::MemorySetting::SharedMemory>;
detail::MultiLevelPartitionImpl<osrm::storage::Ownership::View>;
namespace io
{
template <osrm::storage::MemorySetting MemorySetting>
void read(const boost::filesystem::path &file, detail::MultiLevelPartitionImpl<MemorySetting> &mlp);
template <osrm::storage::MemorySetting MemorySetting>
template <osrm::storage::Ownership Ownership>
void read(const boost::filesystem::path &file, detail::MultiLevelPartitionImpl<Ownership> &mlp);
template <osrm::storage::Ownership Ownership>
void write(const boost::filesystem::path &file,
const detail::MultiLevelPartitionImpl<MemorySetting> &mlp);
const detail::MultiLevelPartitionImpl<Ownership> &mlp);
}
namespace detail
{
template <osrm::storage::MemorySetting MemorySetting> class MultiLevelPartitionImpl final
template <osrm::storage::Ownership Ownership> class MultiLevelPartitionImpl final
{
// we will support at most 16 levels
static const constexpr std::uint8_t MAX_NUM_LEVEL = 16;
static const constexpr std::uint8_t NUM_PARTITION_BITS = sizeof(PartitionID) * CHAR_BIT;
template <typename T> using Vector = typename util::ShM<T, MemorySetting>::vector;
template <typename T> using Vector = typename util::ShM<T, Ownership>::vector;
public:
// Contains all data necessary to describe the level hierarchy
@@ -70,8 +70,8 @@ template <osrm::storage::MemorySetting MemorySetting> class MultiLevelPartitionI
// cell_sizes is index by level (starting at 0, the base graph).
// However level 0 always needs to have cell size 1, since it is the
// basegraph.
template <typename = typename std::enable_if<MemorySetting ==
osrm::storage::MemorySetting::InternalMemory>>
template <typename = typename std::enable_if<Ownership ==
osrm::storage::Ownership::Container>>
MultiLevelPartitionImpl(const std::vector<std::vector<CellID>> &partitions,
const std::vector<std::uint32_t> &lidx_to_num_cells)
: level_data(MakeLevelData(lidx_to_num_cells))
@@ -79,8 +79,8 @@ template <osrm::storage::MemorySetting MemorySetting> class MultiLevelPartitionI
InitializePartitionIDs(partitions);
}
template <typename = typename std::enable_if<MemorySetting ==
osrm::storage::MemorySetting::SharedMemory>>
template <typename = typename std::enable_if<Ownership ==
osrm::storage::Ownership::View>>
MultiLevelPartitionImpl(LevelData level_data,
Vector<PartitionID> partition_,
Vector<CellID> cell_to_children_)
@@ -138,9 +138,9 @@ template <osrm::storage::MemorySetting MemorySetting> class MultiLevelPartitionI
return cell_to_children[offset + cell + 1];
}
friend void io::read<MemorySetting>(const boost::filesystem::path &file,
friend void io::read<Ownership>(const boost::filesystem::path &file,
MultiLevelPartitionImpl &mlp);
friend void io::write<MemorySetting>(const boost::filesystem::path &file,
friend void io::write<Ownership>(const boost::filesystem::path &file,
const MultiLevelPartitionImpl &mlp);
private:
+3 -3
View File
@@ -30,10 +30,10 @@ namespace osrm
namespace storage
{
enum class MemorySetting
enum class Ownership
{
SharedMemory,
InternalMemory
Container,
View
};
struct OSRMLockFile
+11 -11
View File
@@ -23,7 +23,7 @@ namespace util
* configure BITSIZE and ELEMSIZE
*/
template <typename T,
osrm::storage::MemorySetting MemorySetting = osrm::storage::MemorySetting::InternalMemory>
osrm::storage::Ownership Ownership = osrm::storage::Ownership::Container>
class PackedVector
{
static const constexpr std::size_t BITSIZE = 33;
@@ -124,20 +124,20 @@ class PackedVector
std::size_t size() const { return num_elements; }
template <bool enabled = (MemorySetting == osrm::storage::MemorySetting::SharedMemory)>
template <bool enabled = (Ownership == osrm::storage::Ownership::View)>
void reserve(typename std::enable_if<!enabled, std::size_t>::type capacity)
{
vec.reserve(elements_to_blocks(capacity));
}
template <bool enabled = (MemorySetting == osrm::storage::MemorySetting::SharedMemory)>
template <bool enabled = (Ownership == osrm::storage::Ownership::View)>
void reset(typename std::enable_if<enabled, std::uint64_t>::type *ptr,
typename std::enable_if<enabled, std::size_t>::type size)
{
vec.reset(ptr, size);
}
template <bool enabled = (MemorySetting == osrm::storage::MemorySetting::SharedMemory)>
template <bool enabled = (Ownership == osrm::storage::Ownership::View)>
void set_number_of_entries(typename std::enable_if<enabled, std::size_t>::type count)
{
num_elements = count;
@@ -149,44 +149,44 @@ class PackedVector
}
private:
typename util::ShM<std::uint64_t, MemorySetting>::vector vec;
typename util::ShM<std::uint64_t, Ownership>::vector vec;
std::size_t num_elements = 0;
signed cursor = -1;
template <bool enabled = (MemorySetting == osrm::storage::MemorySetting::SharedMemory)>
template <bool enabled = (Ownership == osrm::storage::Ownership::View)>
void replace_last_elem(typename std::enable_if<enabled, std::uint64_t>::type last_elem)
{
vec[cursor] = last_elem;
}
template <bool enabled = (MemorySetting == osrm::storage::MemorySetting::SharedMemory)>
template <bool enabled = (Ownership == osrm::storage::Ownership::View)>
void replace_last_elem(typename std::enable_if<!enabled, std::uint64_t>::type last_elem)
{
vec.back() = last_elem;
}
template <bool enabled = (MemorySetting == osrm::storage::MemorySetting::SharedMemory)>
template <bool enabled = (Ownership == osrm::storage::Ownership::View)>
void add_last_elem(typename std::enable_if<enabled, std::uint64_t>::type last_elem)
{
vec[cursor + 1] = last_elem;
cursor++;
}
template <bool enabled = (MemorySetting == osrm::storage::MemorySetting::SharedMemory)>
template <bool enabled = (Ownership == osrm::storage::Ownership::View)>
void add_last_elem(typename std::enable_if<!enabled, std::uint64_t>::type last_elem)
{
vec.push_back(last_elem);
}
template <bool enabled = (MemorySetting == osrm::storage::MemorySetting::SharedMemory)>
template <bool enabled = (Ownership == osrm::storage::Ownership::View)>
std::uint64_t vec_back(typename std::enable_if<enabled>::type * = nullptr)
{
return vec[cursor];
}
template <bool enabled = (MemorySetting == osrm::storage::MemorySetting::SharedMemory)>
template <bool enabled = (Ownership == osrm::storage::Ownership::View)>
std::uint64_t vec_back(typename std::enable_if<!enabled>::type * = nullptr)
{
return vec.back();
+14 -14
View File
@@ -20,14 +20,14 @@ namespace util
*/
template <unsigned BLOCK_SIZE = 16,
osrm::storage::MemorySetting MemorySetting = osrm::storage::MemorySetting::InternalMemory>
osrm::storage::Ownership Ownership = osrm::storage::Ownership::Container>
class RangeTable;
template <unsigned BLOCK_SIZE, osrm::storage::MemorySetting MemorySetting>
std::ostream &operator<<(std::ostream &out, const RangeTable<BLOCK_SIZE, MemorySetting> &table);
template <unsigned BLOCK_SIZE, osrm::storage::Ownership Ownership>
std::ostream &operator<<(std::ostream &out, const RangeTable<BLOCK_SIZE, Ownership> &table);
template <unsigned BLOCK_SIZE, osrm::storage::MemorySetting MemorySetting>
std::istream &operator>>(std::istream &in, RangeTable<BLOCK_SIZE, MemorySetting> &table);
template <unsigned BLOCK_SIZE, osrm::storage::Ownership Ownership>
std::istream &operator>>(std::istream &in, RangeTable<BLOCK_SIZE, Ownership> &table);
/**
* Stores adjacent ranges in a compressed format.
@@ -38,12 +38,12 @@ std::istream &operator>>(std::istream &in, RangeTable<BLOCK_SIZE, MemorySetting>
* But each block consists of an absolute value and BLOCK_SIZE differential values.
* So the effective block size is sizeof(unsigned) + BLOCK_SIZE.
*/
template <unsigned BLOCK_SIZE, osrm::storage::MemorySetting MemorySetting> class RangeTable
template <unsigned BLOCK_SIZE, osrm::storage::Ownership Ownership> class RangeTable
{
public:
using BlockT = std::array<unsigned char, BLOCK_SIZE>;
using BlockContainerT = typename ShM<BlockT, MemorySetting>::vector;
using OffsetContainerT = typename ShM<unsigned, MemorySetting>::vector;
using BlockContainerT = typename ShM<BlockT, Ownership>::vector;
using OffsetContainerT = typename ShM<unsigned, Ownership>::vector;
using RangeT = range<unsigned>;
friend std::ostream &operator<<<>(std::ostream &out, const RangeTable &table);
@@ -215,8 +215,8 @@ template <unsigned BLOCK_SIZE, osrm::storage::MemorySetting MemorySetting> class
unsigned sum_lengths;
};
template <unsigned BLOCK_SIZE, osrm::storage::MemorySetting MemorySetting>
unsigned RangeTable<BLOCK_SIZE, MemorySetting>::PrefixSumAtIndex(int index,
template <unsigned BLOCK_SIZE, osrm::storage::Ownership Ownership>
unsigned RangeTable<BLOCK_SIZE, Ownership>::PrefixSumAtIndex(int index,
const BlockT &block) const
{
// this loop looks inefficent, but a modern compiler
@@ -230,8 +230,8 @@ unsigned RangeTable<BLOCK_SIZE, MemorySetting>::PrefixSumAtIndex(int index,
return sum;
}
template <unsigned BLOCK_SIZE, osrm::storage::MemorySetting MemorySetting>
std::ostream &operator<<(std::ostream &out, const RangeTable<BLOCK_SIZE, MemorySetting> &table)
template <unsigned BLOCK_SIZE, osrm::storage::Ownership Ownership>
std::ostream &operator<<(std::ostream &out, const RangeTable<BLOCK_SIZE, Ownership> &table)
{
// write number of block
const unsigned number_of_blocks = table.diff_blocks.size();
@@ -246,8 +246,8 @@ std::ostream &operator<<(std::ostream &out, const RangeTable<BLOCK_SIZE, MemoryS
return out;
}
template <unsigned BLOCK_SIZE, osrm::storage::MemorySetting MemorySetting>
std::istream &operator>>(std::istream &in, RangeTable<BLOCK_SIZE, MemorySetting> &table)
template <unsigned BLOCK_SIZE, osrm::storage::Ownership Ownership>
std::istream &operator>>(std::istream &in, RangeTable<BLOCK_SIZE, Ownership> &table)
{
// read number of block
unsigned number_of_blocks;
@@ -175,10 +175,10 @@ void swap(vector_view<DataT> &lhs, vector_view<DataT> &rhs) noexcept
std::swap(lhs.m_size, rhs.m_size);
}
template <typename DataT, osrm::storage::MemorySetting MemorySetting> struct ShM
template <typename DataT, osrm::storage::Ownership Ownership> struct ShM
{
using vector =
typename std::conditional<MemorySetting == osrm::storage::MemorySetting::SharedMemory,
typename std::conditional<Ownership == osrm::storage::Ownership::View,
vector_view<DataT>,
std::vector<DataT>>::type;
};
+5 -5
View File
@@ -100,7 +100,7 @@ EntryT edgeToEntry(const OtherEdge &from, std::false_type)
} // namespace static_graph_details
template <typename EdgeDataT,
osrm::storage::MemorySetting MemorySetting = osrm::storage::MemorySetting::InternalMemory>
osrm::storage::Ownership Ownership = osrm::storage::Ownership::Container>
class StaticGraph
{
public:
@@ -126,8 +126,8 @@ class StaticGraph
InitializeFromSortedEdgeRange(nodes, edges.begin(), edges.end());
}
StaticGraph(typename util::ShM<NodeArrayEntry, MemorySetting>::vector node_array_,
typename util::ShM<EdgeArrayEntry, MemorySetting>::vector edge_array_)
StaticGraph(typename util::ShM<NodeArrayEntry, Ownership>::vector node_array_,
typename util::ShM<EdgeArrayEntry, Ownership>::vector edge_array_)
: node_array(std::move(node_array_)), edge_array(std::move(edge_array_))
{
BOOST_ASSERT(!node_array.empty());
@@ -262,8 +262,8 @@ class StaticGraph
NodeIterator number_of_nodes;
EdgeIterator number_of_edges;
typename ShM<NodeArrayEntry, MemorySetting>::vector node_array;
typename ShM<EdgeArrayEntry, MemorySetting>::vector edge_array;
typename ShM<NodeArrayEntry, Ownership>::vector node_array;
typename ShM<EdgeArrayEntry, Ownership>::vector edge_array;
};
} // namespace util
+3 -3
View File
@@ -54,7 +54,7 @@ namespace util
// are computed, this means the internal distance metric doesn not represent meters!
template <class EdgeDataT,
class CoordinateListT = std::vector<Coordinate>,
osrm::storage::MemorySetting MemorySetting = osrm::storage::MemorySetting::InternalMemory,
osrm::storage::Ownership Ownership = osrm::storage::Ownership::Container,
std::uint32_t BRANCHING_FACTOR = 128,
std::uint32_t LEAF_PAGE_SIZE = 4096>
class StaticRTree
@@ -154,12 +154,12 @@ class StaticRTree
Coordinate fixed_projected_coordinate;
};
typename ShM<TreeNode, MemorySetting>::vector m_search_tree;
typename ShM<TreeNode, Ownership>::vector m_search_tree;
const CoordinateListT &m_coordinate_list;
boost::iostreams::mapped_file_source m_leaves_region;
// read-only view of leaves
typename ShM<const LeafNode, osrm::storage::MemorySetting::SharedMemory>::vector m_leaves;
typename ShM<const LeafNode, osrm::storage::Ownership::View>::vector m_leaves;
public:
StaticRTree(const StaticRTree &) = delete;