Permalink
Fetching contributors…
Cannot retrieve contributors at this time
99 lines (81 sloc) 1.72 KB
base_file_name
blocksize
const size_of_Index
.index_to_buf(Index)
operator<(Index)
const size_of_Head
operator<(Head)
.head_to_buf(Head)
.index_of(Head)
.index_of_buf()
.id_of(Head)
.id_of_buf()
const size_of_Data
.data_to_buf(Data)
(Annahme: Interne Datenstruktur ist (Head, vector< Data >))
struct Indexed_Ordered_Id_To_Many< Index, Head, Data > {
.blocksize()
.data_file()
.index_file()
.id_idx_file()
{
base_file_name
}
.size_of_buf()
{
const size_of_Head
const size_of_Data
}
void flush_data(elem_begin(), elem_end())
.block_index< Index >()
.index_of()
.size_of()
.to_buf()
.compare()
.index_of_buf()
.index_to_buf()
void delete_insert(elem_begin(), elem_end())
.block_index()
.elem_begin()
.elem_end()
.index_of()
.keep_this_elem()
.compare()
.size_of()
.size_of_part()
.to_buf()
Ansatz mit to_delete, to_insert
- Drei Durchläufe über die Datei, ggf. Nutzung des Caches
void make_block_index()
.block_index()
.size_of_Index()
.index_of_buf()
.index_to_buf()
void make_id_index()
.first_new_block()
.id_of_buf()
void update_id_index(elem_begin(), elem_end())
.first_new_block()
.block_of_elem_begin()
.elem_begin()
.elem_end()
.id_of()
Container& select_by_id< Container >(ids_begin(), ids_end())
.ids_begin()
.ids_end()
.process()
Container& select_with_idx< Container >(idxs_begin(), idxs_end())
pair< Container, Container >& select_with_idx_dbl_range< Container >(idxs_inside_begin(), idxs_inside_end(), idxs_border_begin(), idxs_border_end())
.idxs_begin()
.idxs_end()
.block_notify()
.process()
select_all
.process()
count_with_idx
.count_idx()
---
zu den Wegen:
- füge die Wege einschließlich Knoten in eine Map< Way_ > ein
- erzeuge daraus die Node-Anfrage
- leite aus dem Ergebnis die richtigen Indexe für die Ways ab