More switches from maps to unordered_maps

This commit is contained in:
Erica Fischer
2024-01-24 12:41:01 -08:00
parent 4a2e668f4d
commit a30722caa5
13 changed files with 39 additions and 38 deletions
+4 -4
View File
@@ -1,12 +1,12 @@
#include <string> #include <string>
#include <map> #include <unordered_map>
#include "attribute.hpp" #include "attribute.hpp"
#include "errors.hpp" #include "errors.hpp"
#include "serial.hpp" #include "serial.hpp"
#include "jsonpull/jsonpull.h" #include "jsonpull/jsonpull.h"
#include "milo/dtoa_milo.h" #include "milo/dtoa_milo.h"
void set_attribute_accum(std::map<std::string, attribute_op> &attribute_accum, std::string name, std::string type) { void set_attribute_accum(std::unordered_map<std::string, attribute_op> &attribute_accum, std::string name, std::string type) {
attribute_op t; attribute_op t;
if (type == "sum") { if (type == "sum") {
@@ -31,7 +31,7 @@ void set_attribute_accum(std::map<std::string, attribute_op> &attribute_accum, s
attribute_accum.insert(std::pair<std::string, attribute_op>(name, t)); attribute_accum.insert(std::pair<std::string, attribute_op>(name, t));
} }
void set_attribute_accum(std::map<std::string, attribute_op> &attribute_accum, const char *arg, char **argv) { void set_attribute_accum(std::unordered_map<std::string, attribute_op> &attribute_accum, const char *arg, char **argv) {
if (*arg == '{') { if (*arg == '{') {
json_pull *jp = json_begin_string(arg); json_pull *jp = json_begin_string(arg);
json_object *o = json_read_tree(jp); json_object *o = json_read_tree(jp);
@@ -79,7 +79,7 @@ void set_attribute_accum(std::map<std::string, attribute_op> &attribute_accum, c
set_attribute_accum(attribute_accum, name, type); set_attribute_accum(attribute_accum, name, type);
} }
void preserve_attribute(attribute_op op, std::string &key, serial_val &val, std::vector<std::string> &full_keys, std::vector<serial_val> &full_values, std::map<std::string, accum_state> &attribute_accum_state) { void preserve_attribute(attribute_op op, std::string &key, serial_val &val, std::vector<std::string> &full_keys, std::vector<serial_val> &full_values, std::unordered_map<std::string, accum_state> &attribute_accum_state) {
for (size_t i = 0; i < full_keys.size(); i++) { for (size_t i = 0; i < full_keys.size(); i++) {
if (key == full_keys[i]) { if (key == full_keys[i]) {
switch (op) { switch (op) {
+4 -4
View File
@@ -2,7 +2,7 @@
#define ATTRIBUTE_HPP #define ATTRIBUTE_HPP
#include <vector> #include <vector>
#include <map> #include <unordered_map>
enum attribute_op { enum attribute_op {
op_sum, op_sum,
@@ -21,8 +21,8 @@ struct accum_state {
struct serial_val; struct serial_val;
void set_attribute_accum(std::map<std::string, attribute_op> &attribute_accum, std::string name, std::string type); void set_attribute_accum(std::unordered_map<std::string, attribute_op> &attribute_accum, std::string name, std::string type);
void set_attribute_accum(std::map<std::string, attribute_op> &attribute_accum, const char *arg, char **argv); void set_attribute_accum(std::unordered_map<std::string, attribute_op> &attribute_accum, const char *arg, char **argv);
void preserve_attribute(attribute_op op, std::string &key, serial_val &val, std::vector<std::string> &full_keys, std::vector<serial_val> &full_values, std::map<std::string, accum_state> &attribute_accum_state); void preserve_attribute(attribute_op op, std::string &key, serial_val &val, std::vector<std::string> &full_keys, std::vector<serial_val> &full_values, std::unordered_map<std::string, accum_state> &attribute_accum_state);
#endif #endif
+4 -4
View File
@@ -758,7 +758,7 @@ static std::vector<std::pair<double, double>> clip_poly1(std::vector<std::pair<d
std::string overzoom(std::string s, int oz, int ox, int oy, int nz, int nx, int ny, std::string overzoom(std::string s, int oz, int ox, int oy, int nz, int nx, int ny,
int detail, int buffer, std::set<std::string> const &keep, bool do_compress, int detail, int buffer, std::set<std::string> const &keep, bool do_compress,
std::vector<std::pair<unsigned, unsigned>> *next_overzoomed_tiles, std::vector<std::pair<unsigned, unsigned>> *next_overzoomed_tiles,
bool demultiply, json_object *filter, bool preserve_input_order, std::map<std::string, attribute_op> const &attribute_accum) { bool demultiply, json_object *filter, bool preserve_input_order, std::unordered_map<std::string, attribute_op> const &attribute_accum) {
mvt_tile tile; mvt_tile tile;
try { try {
@@ -785,7 +785,7 @@ struct tile_feature {
size_t seq = 0; size_t seq = 0;
}; };
static void feature_out(std::vector<tile_feature> const &features, mvt_layer &outlayer, std::set<std::string> const &keep, std::map<std::string, attribute_op> const &attribute_accum) { static void feature_out(std::vector<tile_feature> const &features, mvt_layer &outlayer, std::set<std::string> const &keep, std::unordered_map<std::string, attribute_op> const &attribute_accum) {
// Add geometry to output feature // Add geometry to output feature
mvt_feature outfeature; mvt_feature outfeature;
@@ -810,7 +810,7 @@ static void feature_out(std::vector<tile_feature> const &features, mvt_layer &ou
// attributes from the other features of the // attributes from the other features of the
// multiplier cluster accumulated onto them // multiplier cluster accumulated onto them
std::map<std::string, accum_state> attribute_accum_state; std::unordered_map<std::string, accum_state> attribute_accum_state;
std::vector<std::string> full_keys; std::vector<std::string> full_keys;
std::vector<serial_val> full_values; std::vector<serial_val> full_values;
@@ -873,7 +873,7 @@ static struct preservecmp {
std::string overzoom(mvt_tile tile, int oz, int ox, int oy, int nz, int nx, int ny, std::string overzoom(mvt_tile tile, int oz, int ox, int oy, int nz, int nx, int ny,
int detail, int buffer, std::set<std::string> const &keep, bool do_compress, int detail, int buffer, std::set<std::string> const &keep, bool do_compress,
std::vector<std::pair<unsigned, unsigned>> *next_overzoomed_tiles, std::vector<std::pair<unsigned, unsigned>> *next_overzoomed_tiles,
bool demultiply, json_object *filter, bool preserve_input_order, std::map<std::string, attribute_op> const &attribute_accum) { bool demultiply, json_object *filter, bool preserve_input_order, std::unordered_map<std::string, attribute_op> const &attribute_accum) {
mvt_tile outtile; mvt_tile outtile;
for (auto const &layer : tile.layers) { for (auto const &layer : tile.layers) {
+4 -4
View File
@@ -1,7 +1,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <map> #include <unordered_map>
#include "mvt.hpp" #include "mvt.hpp"
#include "evaluator.hpp" #include "evaluator.hpp"
#include "errors.hpp" #include "errors.hpp"
@@ -217,7 +217,7 @@ int compare(mvt_value one, json_object *two, bool &fail) {
// 0: false // 0: false
// 1: true // 1: true
// -1: incomparable (sql null), treated as false in final output // -1: incomparable (sql null), treated as false in final output
static int eval(std::map<std::string, mvt_value> const &feature, json_object *f, std::set<std::string> &exclude_attributes) { static int eval(std::unordered_map<std::string, mvt_value> const &feature, json_object *f, std::set<std::string> &exclude_attributes) {
if (f != NULL) { if (f != NULL) {
if (f->type == JSON_TRUE) { if (f->type == JSON_TRUE) {
return 1; return 1;
@@ -611,7 +611,7 @@ static int eval(std::map<std::string, mvt_value> const &feature, json_object *f,
exit(EXIT_FILTER); exit(EXIT_FILTER);
} }
bool evaluate(std::map<std::string, mvt_value> const &feature, std::string const &layer, json_object *filter, std::set<std::string> &exclude_attributes) { bool evaluate(std::unordered_map<std::string, mvt_value> const &feature, std::string const &layer, json_object *filter, std::set<std::string> &exclude_attributes) {
if (filter == NULL || filter->type != JSON_HASH) { if (filter == NULL || filter->type != JSON_HASH) {
fprintf(stderr, "Error: filter is not a hash: %s\n", json_stringify(filter)); fprintf(stderr, "Error: filter is not a hash: %s\n", json_stringify(filter));
exit(EXIT_JSON); exit(EXIT_JSON);
@@ -667,7 +667,7 @@ json_object *parse_filter(const char *s) {
bool evaluate(mvt_feature const &feat, mvt_layer const &layer, json_object *filter, std::set<std::string> &exclude_attributes, int z) { bool evaluate(mvt_feature const &feat, mvt_layer const &layer, json_object *filter, std::set<std::string> &exclude_attributes, int z) {
if (filter != NULL) { if (filter != NULL) {
std::map<std::string, mvt_value> attributes; std::unordered_map<std::string, mvt_value> attributes;
for (size_t t = 0; t + 1 < feat.tags.size(); t += 2) { for (size_t t = 0; t + 1 < feat.tags.size(); t += 2) {
std::string key = layer.keys[feat.tags[t]]; std::string key = layer.keys[feat.tags[t]];
+2 -2
View File
@@ -1,13 +1,13 @@
#ifndef EVALUATOR_HPP #ifndef EVALUATOR_HPP
#define EVALUATOR HPP #define EVALUATOR HPP
#include <map> #include <unordered_map>
#include <string> #include <string>
#include <set> #include <set>
#include "jsonpull/jsonpull.h" #include "jsonpull/jsonpull.h"
#include "mvt.hpp" #include "mvt.hpp"
bool evaluate(std::map<std::string, mvt_value> const &feature, std::string const &layer, json_object *filter, std::set<std::string> &exclude_attributes); bool evaluate(std::unordered_map<std::string, mvt_value> const &feature, std::string const &layer, json_object *filter, std::set<std::string> &exclude_attributes);
json_object *parse_filter(const char *s); json_object *parse_filter(const char *s);
json_object *read_filter(const char *fname); json_object *read_filter(const char *fname);
+2 -2
View File
@@ -104,12 +104,12 @@ std::string overzoom(mvt_tile tile, int oz, int ox, int oy, int nz, int nx, int
int detail, int buffer, std::set<std::string> const &keep, bool do_compress, int detail, int buffer, std::set<std::string> const &keep, bool do_compress,
std::vector<std::pair<unsigned, unsigned>> *next_overzoomed_tiles, std::vector<std::pair<unsigned, unsigned>> *next_overzoomed_tiles,
bool demultiply, json_object *filter, bool preserve_input_order, bool demultiply, json_object *filter, bool preserve_input_order,
std::map<std::string, attribute_op> const &attribute_accum); std::unordered_map<std::string, attribute_op> const &attribute_accum);
std::string overzoom(std::string s, int oz, int ox, int oy, int nz, int nx, int ny, std::string overzoom(std::string s, int oz, int ox, int oy, int nz, int nx, int ny,
int detail, int buffer, std::set<std::string> const &keep, bool do_compress, int detail, int buffer, std::set<std::string> const &keep, bool do_compress,
std::vector<std::pair<unsigned, unsigned>> *next_overzoomed_tiles, std::vector<std::pair<unsigned, unsigned>> *next_overzoomed_tiles,
bool demultiply, json_object *filter, bool preserve_input_order, bool demultiply, json_object *filter, bool preserve_input_order,
std::map<std::string, attribute_op> const &attribute_accum); std::unordered_map<std::string, attribute_op> const &attribute_accum);
#endif #endif
+7 -7
View File
@@ -448,7 +448,7 @@ void *run_sort(void *v) {
return NULL; return NULL;
} }
void do_read_parallel(char *map, long long len, long long initial_offset, const char *reading, std::vector<struct reader> *readers, std::atomic<long long> *progress_seq, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, int basezoom, int source, std::vector<std::map<std::string, layermap_entry> > *layermaps, int *initialized, unsigned *initial_x, unsigned *initial_y, int maxzoom, std::string layername, bool uses_gamma, std::map<std::string, int> const *attribute_types, int separator, double *dist_sum, size_t *dist_count, double *area_sum, bool want_dist, bool filters) { void do_read_parallel(char *map, long long len, long long initial_offset, const char *reading, std::vector<struct reader> *readers, std::atomic<long long> *progress_seq, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, int basezoom, int source, std::vector<std::map<std::string, layermap_entry> > *layermaps, int *initialized, unsigned *initial_x, unsigned *initial_y, int maxzoom, std::string layername, bool uses_gamma, std::unordered_map<std::string, int> const *attribute_types, int separator, double *dist_sum, size_t *dist_count, double *area_sum, bool want_dist, bool filters) {
long long segs[CPUS + 1]; long long segs[CPUS + 1];
segs[0] = 0; segs[0] = 0;
segs[CPUS] = len; segs[CPUS] = len;
@@ -649,7 +649,7 @@ struct read_parallel_arg {
unsigned *initial_y = NULL; unsigned *initial_y = NULL;
std::string layername = ""; std::string layername = "";
bool uses_gamma = false; bool uses_gamma = false;
std::map<std::string, int> const *attribute_types = NULL; std::unordered_map<std::string, int> const *attribute_types = NULL;
double *dist_sum = NULL; double *dist_sum = NULL;
size_t *dist_count = NULL; size_t *dist_count = NULL;
double *area_sum = NULL; double *area_sum = NULL;
@@ -693,7 +693,7 @@ void *run_read_parallel(void *v) {
return NULL; return NULL;
} }
void start_parsing(int fd, STREAM *fp, long long offset, long long len, std::atomic<int> *is_parsing, pthread_t *parallel_parser, bool &parser_created, const char *reading, std::vector<struct reader> *readers, std::atomic<long long> *progress_seq, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, int basezoom, int source, std::vector<std::map<std::string, layermap_entry> > &layermaps, int *initialized, unsigned *initial_x, unsigned *initial_y, int maxzoom, std::string layername, bool uses_gamma, std::map<std::string, int> const *attribute_types, int separator, double *dist_sum, size_t *dist_count, double *area_sum, bool want_dist, bool filters) { void start_parsing(int fd, STREAM *fp, long long offset, long long len, std::atomic<int> *is_parsing, pthread_t *parallel_parser, bool &parser_created, const char *reading, std::vector<struct reader> *readers, std::atomic<long long> *progress_seq, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, int basezoom, int source, std::vector<std::map<std::string, layermap_entry> > &layermaps, int *initialized, unsigned *initial_x, unsigned *initial_y, int maxzoom, std::string layername, bool uses_gamma, std::unordered_map<std::string, int> const *attribute_types, int separator, double *dist_sum, size_t *dist_count, double *area_sum, bool want_dist, bool filters) {
// This has to kick off an intermediate thread to start the parser threads, // This has to kick off an intermediate thread to start the parser threads,
// so the main thread can get back to reading the next input stage while // so the main thread can get back to reading the next input stage while
// the intermediate thread waits for the completion of the parser threads. // the intermediate thread waits for the completion of the parser threads.
@@ -1237,7 +1237,7 @@ int vertexcmp(const void *void1, const void *void2) {
return 0; return 0;
} }
std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, int maxzoom, int minzoom, int basezoom, double basezoom_marker_width, sqlite3 *outdb, const char *outdir, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, json_object *filter, double droprate, int buffer, const char *tmpdir, double gamma, int read_parallel, int forcetable, const char *attribution, bool uses_gamma, long long *file_bbox, long long *file_bbox1, long long *file_bbox2, const char *prefilter, const char *postfilter, const char *description, bool guess_maxzoom, bool guess_cluster_maxzoom, std::map<std::string, int> const *attribute_types, const char *pgm, std::map<std::string, attribute_op> const *attribute_accum, std::map<std::string, std::string> const &attribute_descriptions, std::string const &commandline, int minimum_maxzoom) { std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, int maxzoom, int minzoom, int basezoom, double basezoom_marker_width, sqlite3 *outdb, const char *outdir, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, json_object *filter, double droprate, int buffer, const char *tmpdir, double gamma, int read_parallel, int forcetable, const char *attribution, bool uses_gamma, long long *file_bbox, long long *file_bbox1, long long *file_bbox2, const char *prefilter, const char *postfilter, const char *description, bool guess_maxzoom, bool guess_cluster_maxzoom, std::unordered_map<std::string, int> const *attribute_types, const char *pgm, std::unordered_map<std::string, attribute_op> const *attribute_accum, std::map<std::string, std::string> const &attribute_descriptions, std::string const &commandline, int minimum_maxzoom) {
int ret = EXIT_SUCCESS; int ret = EXIT_SUCCESS;
std::vector<struct reader> readers; std::vector<struct reader> readers;
@@ -2845,7 +2845,7 @@ static bool has_name(struct option *long_options, int *pl) {
return false; return false;
} }
void set_attribute_type(std::map<std::string, int> &attribute_types, const char *arg) { void set_attribute_type(std::unordered_map<std::string, int> &attribute_types, const char *arg) {
const char *s = strchr(arg, ':'); const char *s = strchr(arg, ':');
if (s == NULL) { if (s == NULL) {
fprintf(stderr, "-T%s option must be in the form -Tname:type\n", arg); fprintf(stderr, "-T%s option must be in the form -Tname:type\n", arg);
@@ -3005,8 +3005,8 @@ int main(int argc, char **argv) {
bool guess_cluster_maxzoom = false; bool guess_cluster_maxzoom = false;
std::set<std::string> exclude, include; std::set<std::string> exclude, include;
std::map<std::string, int> attribute_types; std::unordered_map<std::string, int> attribute_types;
std::map<std::string, attribute_op> attribute_accum; std::unordered_map<std::string, attribute_op> attribute_accum;
std::map<std::string, std::string> attribute_descriptions; std::map<std::string, std::string> attribute_descriptions;
int exclude_all = 0; int exclude_all = 0;
int read_parallel = 0; int read_parallel = 0;
+1 -1
View File
@@ -17,7 +17,7 @@ int buffer = 5; // tippecanoe-style: mvt buffer == extent * buffer / 256;
bool demultiply = false; bool demultiply = false;
std::string filter; std::string filter;
bool preserve_input_order = false; bool preserve_input_order = false;
std::map<std::string, attribute_op> attribute_accum; std::unordered_map<std::string, attribute_op> attribute_accum;
std::set<std::string> keep; std::set<std::string> keep;
+1 -1
View File
@@ -878,7 +878,7 @@ int serialize_feature(struct serialization_state *sst, serial_feature &sf) {
return 1; return 1;
} }
void coerce_value(std::string const &key, int &vt, std::string &val, std::map<std::string, int> const *attribute_types) { void coerce_value(std::string const &key, int &vt, std::string &val, std::unordered_map<std::string, int> const *attribute_types) {
auto a = (*attribute_types).find(key); auto a = (*attribute_types).find(key);
if (a != attribute_types->end()) { if (a != attribute_types->end()) {
if (a->second == mvt_string) { if (a->second == mvt_string) {
+2 -2
View File
@@ -175,7 +175,7 @@ struct serialization_state {
std::map<std::string, layermap_entry> *layermap = NULL; std::map<std::string, layermap_entry> *layermap = NULL;
std::map<std::string, int> const *attribute_types = NULL; std::unordered_map<std::string, int> const *attribute_types = NULL;
std::set<std::string> *exclude = NULL; std::set<std::string> *exclude = NULL;
std::set<std::string> *include = NULL; std::set<std::string> *include = NULL;
int exclude_all = 0; int exclude_all = 0;
@@ -228,6 +228,6 @@ struct node {
int nodecmp(const void *void1, const void *void2); int nodecmp(const void *void1, const void *void2);
int serialize_feature(struct serialization_state *sst, serial_feature &sf); int serialize_feature(struct serialization_state *sst, serial_feature &sf);
void coerce_value(std::string const &key, int &vt, std::string &val, std::map<std::string, int> const *attribute_types); void coerce_value(std::string const &key, int &vt, std::string &val, std::unordered_map<std::string, int> const *attribute_types);
#endif #endif
+1 -1
View File
@@ -699,7 +699,7 @@ struct tileset_reader {
} }
if (source.layers.size() != 0) { if (source.layers.size() != 0) {
std::string ret = overzoom(source, parent_tile.z, parent_tile.x, parent_tile.y, tile.z, tile.x, tile.y, -1, buffer, std::set<std::string>(), false, &next_overzoomed_tiles, false, NULL, false, std::map<std::string, attribute_op>()); std::string ret = overzoom(source, parent_tile.z, parent_tile.x, parent_tile.y, tile.z, tile.x, tile.y, -1, buffer, std::set<std::string>(), false, &next_overzoomed_tiles, false, NULL, false, std::unordered_map<std::string, attribute_op>());
return ret; return ret;
} }
+6 -5
View File
@@ -8,6 +8,7 @@
#include <stack> #include <stack>
#include <vector> #include <vector>
#include <map> #include <map>
#include <unordered_map>
#include <set> #include <set>
#include <algorithm> #include <algorithm>
#include <stdio.h> #include <stdio.h>
@@ -537,7 +538,7 @@ struct partial {
long long extent = 0; long long extent = 0;
long long clustered = 0; long long clustered = 0;
std::set<std::string> need_tilestats; std::set<std::string> need_tilestats;
std::map<std::string, accum_state> attribute_accum_state; std::unordered_map<std::string, accum_state> attribute_accum_state;
}; };
struct partial_arg { struct partial_arg {
@@ -1404,7 +1405,7 @@ struct write_tile_args {
size_t feature_count_out = 0; size_t feature_count_out = 0;
const char *prefilter = NULL; const char *prefilter = NULL;
const char *postfilter = NULL; const char *postfilter = NULL;
std::map<std::string, attribute_op> const *attribute_accum = NULL; std::unordered_map<std::string, attribute_op> const *attribute_accum = NULL;
bool still_dropping = false; bool still_dropping = false;
int wrote_zoom = 0; int wrote_zoom = 0;
size_t tiling_seg = 0; size_t tiling_seg = 0;
@@ -1593,7 +1594,7 @@ serial_feature next_feature(decompressor *geoms, std::atomic<long long> *geompos
} }
if (filter != NULL) { if (filter != NULL) {
std::map<std::string, mvt_value> attributes; std::unordered_map<std::string, mvt_value> attributes;
std::string layername = (*layer_unmaps)[sf.segment][sf.layer]; std::string layername = (*layer_unmaps)[sf.segment][sf.layer];
std::set<std::string> exclude_attributes; std::set<std::string> exclude_attributes;
@@ -1846,7 +1847,7 @@ void promote_attribute(std::string const &key, partial &p, char *stringpool, lon
} }
} }
void preserve_attributes(std::map<std::string, attribute_op> const *attribute_accum, serial_feature &sf, char *stringpool, long long *pool_off, partial &p) { void preserve_attributes(std::unordered_map<std::string, attribute_op> const *attribute_accum, serial_feature &sf, char *stringpool, long long *pool_off, partial &p) {
for (size_t i = 0; i < sf.keys.size(); i++) { for (size_t i = 0; i < sf.keys.size(); i++) {
std::string key = stringpool + pool_off[sf.segment] + sf.keys[i] + 1; std::string key = stringpool + pool_off[sf.segment] + sf.keys[i] + 1;
@@ -3117,7 +3118,7 @@ void *run_thread(void *vargs) {
return NULL; return NULL;
} }
int traverse_zooms(int *geomfd, off_t *geom_size, char *stringpool, std::atomic<unsigned> *midx, std::atomic<unsigned> *midy, int &maxzoom, int minzoom, sqlite3 *outdb, const char *outdir, int buffer, const char *fname, const char *tmpdir, double gamma, int full_detail, int low_detail, int min_detail, long long *pool_off, unsigned *initial_x, unsigned *initial_y, double simplification, double maxzoom_simplification, std::vector<std::map<std::string, layermap_entry>> &layermaps, const char *prefilter, const char *postfilter, std::map<std::string, attribute_op> const *attribute_accum, struct json_object *filter, std::vector<strategy> &strategies, int iz, struct node *shared_nodes_map, size_t nodepos) { int traverse_zooms(int *geomfd, off_t *geom_size, char *stringpool, std::atomic<unsigned> *midx, std::atomic<unsigned> *midy, int &maxzoom, int minzoom, sqlite3 *outdb, const char *outdir, int buffer, const char *fname, const char *tmpdir, double gamma, int full_detail, int low_detail, int min_detail, long long *pool_off, unsigned *initial_x, unsigned *initial_y, double simplification, double maxzoom_simplification, std::vector<std::map<std::string, layermap_entry>> &layermaps, const char *prefilter, const char *postfilter, std::unordered_map<std::string, attribute_op> const *attribute_accum, struct json_object *filter, std::vector<strategy> &strategies, int iz, struct node *shared_nodes_map, size_t nodepos) {
last_progress = 0; last_progress = 0;
// The existing layermaps are one table per input thread. // The existing layermaps are one table per input thread.
+1 -1
View File
@@ -55,7 +55,7 @@ struct strategy {
// long long write_tile(char **geom, char *stringpool, unsigned *file_bbox, int z, unsigned x, unsigned y, int detail, int min_detail, int basezoom, sqlite3 *outdb, const char *outdir, double droprate, int buffer, const char *fname, FILE **geomfile, int file_minzoom, int file_maxzoom, double todo, char *geomstart, long long along, double gamma, int nlayers, std::atomic<strategy> *strategy); // long long write_tile(char **geom, char *stringpool, unsigned *file_bbox, int z, unsigned x, unsigned y, int detail, int min_detail, int basezoom, sqlite3 *outdb, const char *outdir, double droprate, int buffer, const char *fname, FILE **geomfile, int file_minzoom, int file_maxzoom, double todo, char *geomstart, long long along, double gamma, int nlayers, std::atomic<strategy> *strategy);
int traverse_zooms(int *geomfd, off_t *geom_size, char *stringpool, std::atomic<unsigned> *midx, std::atomic<unsigned> *midy, int &maxzoom, int minzoom, sqlite3 *outdb, const char *outdir, int buffer, const char *fname, const char *tmpdir, double gamma, int full_detail, int low_detail, int min_detail, long long *pool_off, unsigned *initial_x, unsigned *initial_y, double simplification, double maxzoom_simplification, std::vector<std::map<std::string, layermap_entry> > &layermap, const char *prefilter, const char *postfilter, std::map<std::string, attribute_op> const *attribute_accum, struct json_object *filter, std::vector<strategy> &strategies, int iz, struct node *shared_nodes_map, size_t nodepos); int traverse_zooms(int *geomfd, off_t *geom_size, char *stringpool, std::atomic<unsigned> *midx, std::atomic<unsigned> *midy, int &maxzoom, int minzoom, sqlite3 *outdb, const char *outdir, int buffer, const char *fname, const char *tmpdir, double gamma, int full_detail, int low_detail, int min_detail, long long *pool_off, unsigned *initial_x, unsigned *initial_y, double simplification, double maxzoom_simplification, std::vector<std::map<std::string, layermap_entry> > &layermap, const char *prefilter, const char *postfilter, std::unordered_map<std::string, attribute_op> const *attribute_accum, struct json_object *filter, std::vector<strategy> &strategies, int iz, struct node *shared_nodes_map, size_t nodepos);
int manage_gap(unsigned long long index, unsigned long long *previndex, double scale, double gamma, double *gap); int manage_gap(unsigned long long index, unsigned long long *previndex, double scale, double gamma, double *gap);