| 
									
										
										
										
											2017-04-27 20:24:53 +02:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0
 | 
					
						
							| 
									
										
										
										
											2015-07-01 12:25:47 -07:00
										 |  |  | #ifndef TAXONOMY_H
 | 
					
						
							|  |  |  | #define TAXONOMY_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum taxonomy_category { | 
					
						
							| 
									
										
										
										
											2015-07-02 10:21:35 -07:00
										 |  |  | 	TC_NONE, | 
					
						
							|  |  |  | 	TC_OCEAN, | 
					
						
							|  |  |  | 	TC_COUNTRY, | 
					
						
							|  |  |  | 	TC_ADMIN_L1, | 
					
						
							|  |  |  | 	TC_ADMIN_L2, | 
					
						
							|  |  |  | 	TC_LOCALNAME, | 
					
						
							| 
									
										
										
										
											2015-07-10 09:51:50 -07:00
										 |  |  | 	TC_ADMIN_L3, | 
					
						
							| 
									
										
										
										
											2015-07-02 10:21:35 -07:00
										 |  |  | 	TC_NR_CATEGORIES | 
					
						
							| 
									
										
										
										
											2015-07-01 12:25:47 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-02 22:54:24 -07:00
										 |  |  | enum taxonomy_origin { | 
					
						
							|  |  |  | 	GEOCODED, | 
					
						
							|  |  |  | 	GEOPARSED, | 
					
						
							|  |  |  | 	GEOMANUAL, | 
					
						
							|  |  |  | 	GEOCOPIED | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 10:21:35 -07:00
										 |  |  | extern char *taxonomy_category_names[TC_NR_CATEGORIES]; | 
					
						
							|  |  |  | extern char *taxonomy_api_names[TC_NR_CATEGORIES]; | 
					
						
							| 
									
										
										
										
											2015-07-01 12:25:47 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 */ | 
					
						
							| 
									
										
										
										
											2017-10-02 22:54:24 -07:00
										 |  |  | 	enum taxonomy_origin origin; | 
					
						
							| 
									
										
										
										
											2015-07-01 12:25:47 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* 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(); | 
					
						
							| 
									
										
										
										
											2015-07-13 07:09:55 -07:00
										 |  |  | void free_taxonomy(struct taxonomy_data *t); | 
					
						
							| 
									
										
										
										
											2015-07-13 15:18:52 -07:00
										 |  |  | int taxonomy_index_for_category(struct taxonomy_data *t, enum taxonomy_category cat); | 
					
						
							| 
									
										
										
										
											2017-10-02 22:54:24 -07:00
										 |  |  | const char *taxonomy_get_country(struct taxonomy_data *t); | 
					
						
							|  |  |  | void taxonomy_set_country(struct taxonomy_data *t, const char *country, enum taxonomy_origin origin); | 
					
						
							| 
									
										
										
										
											2015-07-01 12:25:47 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #endif // TAXONOMY_H
 |