This is a example, how to use all the generated temp and hibernate data by just making the same instances (like in ReadPbfData.cpp). It is a example for each() and apply() too.
#include <cstdio>
#include <utility>
#include <chrono>
#include <inttypes.h>
#include <vector>
using namespace std;
#define FILE_ITEMS ( 7*1024)
#define FILE_MULTI 6
#define RAM_MULTI 9
#define BBITS 5
#define BMASK ((BBITS+4)* FILE_ITEMS)
uint8_t _used;
double _lon;
double _lat;
};
uint8_t _type;
char _name[256];
};
uint8_t _type;
double _lon;
double _lat;
char _name[256];
};
std::chrono::time_point<std::chrono::system_clock>
start;
int main(
int argc,
char** argv) {
if (argc == 2) query = stol(argv[1]);
start = std::chrono::high_resolution_clock::now();
std::pair<NodeData, vector<Key> > * val =
nodes->
get(query);
if (val == nullptr) {
printf("The '%lu' does not exist.\n", query);
} else {
dat->first._used = 255;
});
printf("Name of '%lu': %d\n", query, nn.first._used);
}
printf("each %d gets '%lu' %s\n", val.first._type, key, val.first._name);
k2 = key;
return val.first._name[1] == 'o';
});
if (here) printf("found: '%lu' %s\n", k2, p.first._name);
if (val.first._name[0] == 'A') {
printf("'%lu' with type %d has name %s\n", key, val.first._type, val.first._name);
for (auto k : val.second) {
printf(" ref '%lu'\n", k);
}
}
return false;
});
if (val.first._used > 2) {
printf("%lu\n", nkey);
ways->each(w, [nkey](Key eKey, SwappyItemsWAYS::Data & eVal) {
for(Key r : eVal.second) {
if (r == nkey) {
printf(" in way %s\n", eVal.first._name);
return true;
}
SwappyItemsNODES::Data nn;
bool rHalfExist = nodes->apply(nn, r/2, [](SwappyItemsNODES::Data * dat) {
dat->first._lon = 99999;
});
if(rHalfExist) {
printf("'%lu' nn %lf\n", r, nn.first._lon);
}
}
return false;
});
}
return false;
});
auto now = std::chrono::high_resolution_clock::now();
mseconds = std::chrono::duration<double, std::milli>(now-
start).count();
return 0;
}
uint64_t Key
Definition: SearchOnHibernateData.cpp:17
SwappyItemsPLACES * places
Definition: SearchOnHibernateData.cpp:42
int main(int argc, char **argv)
Definition: SearchOnHibernateData.cpp:54
double mseconds
Definition: SearchOnHibernateData.cpp:47
SwappyItemsNODES * nodes
Definition: SearchOnHibernateData.cpp:41
SwappyItems< Key, WayData, FILE_ITEMS, FILE_MULTI, RAM_MULTI, BBITS, BMASK > SwappyItemsWAYS
Definition: SearchOnHibernateData.cpp:37
SwappyItems< Key, NodeData, FILE_ITEMS, FILE_MULTI, RAM_MULTI, BBITS, BMASK > SwappyItemsNODES
Definition: SearchOnHibernateData.cpp:38
SwappyItems< Key, PlaceData, FILE_ITEMS, FILE_MULTI, RAM_MULTI, BBITS, BMASK > SwappyItemsPLACES
Definition: SearchOnHibernateData.cpp:39
std::chrono::time_point< std::chrono::system_clock > start
Definition: SearchOnHibernateData.cpp:46
SwappyItemsWAYS * ways
Definition: SearchOnHibernateData.cpp:40
Definition: SwappyItems.hpp:49
std::pair< TVALUE, std::vector< TKEY > > Data
Definition: SwappyItems.hpp:52
bool apply(Data &back, const TKEY &key, std::function< void(Data *)> foo)
Definition: SwappyItems.hpp:879
Data * get(const TKEY &key)
Definition: SwappyItems.hpp:188
bool each(Data &back, std::function< bool(TKEY, Data &)> foo)
Definition: SwappyItems.hpp:790
uint64_t Key
Definition: osm2graph.cpp:48
Definition: osm2graph.cpp:53
Definition: ReadPbfData.cpp:44
Definition: osm2graph.cpp:60