OSDN Git Service

First commitment for the BlackTank LPC1769.
[blacktank/blacktank.git] / vtparse.h
1 /**
2  * @file vtparse.h
3  * @brief VTParse
4  * @details
5  * An implementation of Paul Williams' DEC compatible state machine parser
6  * This code is in the public domain.
7  * @author Joshua Haberman <joshua@reverberate.org>
8  */
9
10 #include "vtparse_table.h"
11
12 #define MAX_INTERMEDIATE_CHARS 2
13 #define ACTION(state_change) (vtparse_action_t)(state_change & 0x0F)
14 #define STATE(state_change)  (vtparse_state_t)(state_change >> 4)
15
16 struct vtparse;
17
18 typedef void (*vtparse_callback_t)(struct vtparse*, vtparse_action_t, unsigned char);
19
20 typedef struct vtparse {
21     vtparse_state_t    state;
22     vtparse_callback_t cb;
23     unsigned char      intermediate_chars[MAX_INTERMEDIATE_CHARS+1];
24     char               ignore_flagged;
25     int                params[16];
26     int                num_params;
27     void*              user_data;
28 } vtparse_t;
29
30 void vtparse_init(vtparse_t *parser, vtparse_callback_t cb);
31 void vtparse(vtparse_t *parser, unsigned char *data, int len);
32