1struct o_fsm_t; 2struct o_fsm_event_t; 3 4typedef void (*fn_t) (struct o_fsm_t *, 5 struct o_fsm_event_t const *); 6 7struct o_fsm_state_t { 8 fn_t dispatch; 9}; 10 11struct o_fsm_t { 12 fn_t dispatch; 13}; 14 15extern struct o_fsm_state_t o_fsm_tran(struct o_fsm_t *fsm, 16 struct o_fsm_state_t next_state); 17static void plist_parser_state_start(struct o_fsm_t *fsm, 18 struct o_fsm_event_t const *fsm_event); 19 20struct o_fsm_state_t o_fsm_state(fn_t dispatch_fcn) 21{ 22 return *(struct o_fsm_state_t *)&dispatch_fcn; 23} 24 25typedef struct _o_plist_parser_t { 26 struct o_fsm_t fsm; 27} o_plist_parser_t; 28 29static void plist_parser_state_start(struct o_fsm_t *fsm, 30 struct o_fsm_event_t const *fsm_event) 31{ 32} 33 34void o_plist_deserialize_xml(int fin) 35{ 36 o_plist_parser_t parser; 37 o_fsm_tran(&parser.fsm, o_fsm_state(plist_parser_state_start)); 38} 39