00001 /****************************************************************************** 00002 * model.h 00003 * This file contains constants, structures, etc useful for implementing the 00004 * finite state engine used to validate the xml. 00005 * 00006 ****************************************************************************/ 00007 00008 #ifndef MODEL_H_INCLUDED 00009 #define MODEL_H_INCLUDED 00010 00011 #define MAXOMITTED 32 00012 00013 #define CDATA_ELEMENT ((dtd_element *)1) 00014 00015 typedef struct _dtd_state 00016 { struct _state_transition *transitions; 00017 struct _state_expander *expander; 00018 } dtd_state; 00019 00020 dtd_state *new_dtd_state(void); 00021 dtd_state * make_dtd_transition(dtd_state *here, dtd_element *e); 00022 int same_state(dtd_state *final, dtd_state *here); 00023 int find_omitted_path(dtd_state *state, dtd_element *e, 00024 dtd_element **path); 00025 dtd_state * make_state_engine(dtd_element *e); 00026 void free_state_engine(dtd_state *state); 00027 void state_allows_for(dtd_state *state, 00028 dtd_element **allow, int *n); 00029 00030 #endif /*MODEL_H_INCLUDED*/