subsurface/taxonomy.h
Dirk Hohndel 3478943f2f Fix memory handling for taxonomy data
The way we freed things and cleared out the variables potentially left
dangling data behind and could end up calling free on garbage data,
leading to random crashes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-07-13 07:09:55 -07:00

40 lines
875 B
C

#ifndef TAXONOMY_H
#define TAXONOMY_H
#ifdef __cplusplus
extern "C" {
#endif
enum taxonomy_category {
TC_NONE,
TC_OCEAN,
TC_COUNTRY,
TC_ADMIN_L1,
TC_ADMIN_L2,
TC_LOCALNAME,
TC_ADMIN_L3,
TC_NR_CATEGORIES
};
extern char *taxonomy_category_names[TC_NR_CATEGORIES];
extern char *taxonomy_api_names[TC_NR_CATEGORIES];
struct taxonomy {
int category; /* the category for this tag: ocean, country, admin_l1, admin_l2, localname, etc */
const char *value; /* the value returned, parsed, or manually entered for that category */
enum { GEOCODED, PARSED, MANUAL, COPIED } origin;
};
/* the data block contains 3 taxonomy structures - unused ones have a tag value of NONE */
struct taxonomy_data {
int nr;
struct taxonomy *category;
};
struct taxonomy *alloc_taxonomy();
void free_taxonomy(struct taxonomy_data *t);
#ifdef __cplusplus
}
#endif
#endif // TAXONOMY_H