00001
00025 #ifndef _PDTREE_H_
00026 #define _PDTREE_H_
00027
00028 #include "../../str.h"
00029
00030 typedef struct _pdt_node
00031 {
00032 str domain;
00033 struct _pdt_node *child;
00034 } pdt_node_t;
00035
00036 #define PDT_MAX_DEPTH 32
00037
00038 #define PDT_NODE_SIZE pdt_char_list.len
00039
00040 typedef struct _pdt_tree
00041 {
00042 str sdomain;
00043 pdt_node_t *head;
00044
00045 struct _pdt_tree *next;
00046 } pdt_tree_t;
00047
00048
00049
00050 int add_to_tree(pdt_tree_t *pt, str *code, str *domain);
00051 int pdt_add_to_tree(pdt_tree_t **dpt, str* sdomain, str *code, str *domain);
00052
00053 pdt_tree_t* pdt_get_tree(pdt_tree_t *pl, str *sdomain);
00054
00055 str* get_domain(pdt_tree_t *pt, str *code, int *plen);
00056 str* pdt_get_domain(pdt_tree_t *pt, str* sdomain, str *code, int *plen);
00057
00058 pdt_tree_t* pdt_init_tree(str* sdomain);
00059 void pdt_free_tree(pdt_tree_t *pt);
00060 int pdt_print_tree(pdt_tree_t *pt);
00061
00062 int pdt_check_pd(pdt_tree_t *pt, str* sdomain, str *sp, str *sd);
00063
00064
00065 #define strpos(s,c) (strchr(s,c)-s)
00066
00067 int pdt_init_db(void);
00068 int pdt_load_db(void);
00069 str *pdt_get_char_list(void);
00070
00071 pdt_tree_t **pdt_get_ptree(void);
00072
00073 #ifndef PDT_NO_MI
00074 int pdt_init_mi(char *mod);
00075 #endif
00076
00077 #endif
00078