00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #define PARSE_STACK_INCREMENT 50
00029
00030
00031 #define STACK_TOP(htext) htext->stack[htext->stackptr]
00032 #define STACK_PREV(htext) htext->stack[htext->stackptr-1]
00033
00034 #define suppressing(htext) \
00035 ( (htext->stackptr < 0 && htext->suppress_is_default) \
00036 ||(htext->stackptr >= 0 && STACK_TOP(htext).suppress))
00037 #define parsing(htext) (!suppressing(htext))
00038
00039
00040 #define IS_SELECTED_TAG(element, request) \
00041 is_in_htable(element, \
00042 &(((REQUEST_CONTEXT *)HTRequest_context(request))->selected_tags_tbl))
00043 #define IS_SUPPRESSED_TAG(element, request) \
00044 is_in_htable(element, \
00045 &(((REQUEST_CONTEXT *)HTRequest_context(request))->suppressed_tags_tbl))
00046 #define IS_STRIPPED_TAG(element, request) \
00047 is_in_htable(element, \
00048 &(((REQUEST_CONTEXT *)HTRequest_context(request))->stripped_tags_tbl))
00049
00050 #define CHECK_STACK_OVERFLOW(userdata) \
00051 if (userdata->stackptr >= userdata->stacksize) { \
00052 userdata->stack = \
00053 realloc(userdata->stack, \
00054 (userdata->stacksize + PARSE_STACK_INCREMENT) \
00055 * sizeof(struct stack_node)); \
00056 userdata->stacksize += PARSE_STACK_INCREMENT; \
00057 }
00058
00059 #define SETUP_STACK(userdata) \
00060 userdata->stackptr = -1; \
00061 userdata->stack = \
00062 malloc(PARSE_STACK_INCREMENT * sizeof(struct stack_node)); \
00063 userdata->stacksize = PARSE_STACK_INCREMENT;