1  struct o_fsm_t;
       2  struct o_fsm_event_t;
       3  
       4  typedef void (*fn_t) (struct o_fsm_t *,
       5  		      struct o_fsm_event_t const *);
       6  
       7  struct o_fsm_state_t {
       8      fn_t dispatch;
       9  };
      10  
      11  struct o_fsm_t {
      12      fn_t dispatch;
      13  };
      14  
      15  extern struct o_fsm_state_t o_fsm_tran(struct o_fsm_t *fsm,
      16  				       struct o_fsm_state_t next_state);
      17  static void plist_parser_state_start(struct o_fsm_t *fsm,
      18  				     struct o_fsm_event_t const *fsm_event);
      19  
      20  struct o_fsm_state_t o_fsm_state(fn_t dispatch_fcn)
      21  {
      22    return *(struct o_fsm_state_t *)&dispatch_fcn;
      23  }
      24  
      25  typedef struct _o_plist_parser_t {
      26      struct o_fsm_t fsm;
      27  } o_plist_parser_t;
      28  
      29  static void plist_parser_state_start(struct o_fsm_t *fsm,
      30  				     struct o_fsm_event_t const *fsm_event)
      31  {
      32  }
      33  
      34  void 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  }