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