#ifndef __TAGPLIST_H
#define __TAGPLIST_H
typedef struct tagplist_struct tagplist;
typedef struct tagplist_struct *tagplist_p;
struct tagplist_struct
{
/* name of the opening tag */
char *open_name;
/* name of the closing tag */
char *close_name;
/* pointer to the function which handles this pair */
void (*function) (context_p, int, char**);
/* pointer to the next tag pair */
tagplist_p next;
/* if this tag pair has a pre-built named context set, this will be 1 */
char named_context;
};
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
tagplist_p tagplist_init();
void tagplist_destroy(tagplist_p tag_pair_list);
int tagplist_alias(tagplist_p *tag_pair_list, char *old_open_name,
char *old_close_name, char *new_open_name,
char *new_close_name);
void tagplist_remove(tagplist_p *tag_pair_list, char *open_name);
int tagplist_register(tagplist_p *tag_pair_list, char named_context,
char *open_name, char *close_name,
void (*function) (context_p, int, char**));
int tagplist_is_opentag(tagplist_p tag_pair_list, char *open_name);
int tagplist_is_closetag(tagplist_p tag_pair_list, char *open_name,
char *close_name);
context_p tagplist_exec(tagplist_p tag_pair_list, char *open_name,
context_p ctx, int argc, char **argv);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __TAGPLIST_H */