1 2 #ifndef PAGC_STD_API_H 3 #define PAGC_STD_API_H 4 5 #define BUILD_API 6 7 typedef struct LEXICON_s { 8 ENTRY **hash_table; 9 ERR_PARAM *err_p; 10 } LEXICON; 11 12 typedef struct RULES_s { 13 int ready; 14 int rule_number; 15 int last_node; 16 RULE_PARAM *r_p; 17 ERR_PARAM *err_p; 18 NODE **Trie; 19 SYMB *rule_end ; 20 SYMB *r ; 21 } RULES; 22 23 typedef struct STANDARDIZER_s { 24 PAGC_GLOBAL *pagc_p; 25 STAND_PARAM *misc_stand; 26 ERR_PARAM *err_p; 27 } STANDARDIZER; 28 29 typedef struct STDADDR_s { // define as required 30 char *building; 31 char *house_num; 32 char *predir; 33 char *qual; 34 char *pretype; 35 char *name; 36 char *suftype; 37 char *sufdir; 38 char *ruralroute; 39 char *extra; 40 char *city; 41 char *state; 42 char *country; 43 char *postcode; 44 char *box; 45 char *unit; 46 } STDADDR; 47 48 LEXICON * lex_init(); 49 int lex_add_entry(LEXICON *lex, int seq, char *word, char 50 *stdword, SYMB token); 51 void lex_free(LEXICON *lex); 52 53 RULES *rules_init(); 54 int rules_add_rule(RULES *rules, int num, int *rule); 55 int rules_add_rule_from_str(RULES *rules, char *rule); 56 int rules_ready(RULES *rules); 57 void rules_free(RULES *rules); 58 59 STANDARDIZER *std_init(void); 60 int std_use_lex(STANDARDIZER *std, LEXICON *lex); 61 int std_use_gaz(STANDARDIZER *std, LEXICON *gaz); 62 int std_use_rules(STANDARDIZER *std, RULES *rules); 63 int std_ready_standardizer(STANDARDIZER *std); 64 void std_free(STANDARDIZER *std); 65 66 STDADDR *std_standardize_one(STANDARDIZER *std, char *address_one_line, int options); 67 68 STDADDR *std_standardize_mm(STANDARDIZER *std, char *micro, char *macro, int options); 69 70 STDADDR *std_standardize(STANDARDIZER *std, char *address, char *city, char *state, char *postcode, char *country, int options); 71 72 void stdaddr_free(STDADDR *stdaddr); 73 void print_stdaddr(STDADDR *stdaddr); 74 75 #endif 76