summaryrefslogtreecommitdiff
path: root/vtparse/src/vtparse.h
diff options
context:
space:
mode:
Diffstat (limited to 'vtparse/src/vtparse.h')
-rw-r--r--vtparse/src/vtparse.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/vtparse/src/vtparse.h b/vtparse/src/vtparse.h
new file mode 100644
index 0000000..1d176ad
--- /dev/null
+++ b/vtparse/src/vtparse.h
@@ -0,0 +1,31 @@
+/*
+ * VTParse - an implementation of Paul Williams' DEC compatible state machine parser
+ *
+ * Author: Joshua Haberman <joshua@reverberate.org>
+ *
+ * This code is in the public domain.
+ */
+
+#include "vtparse_table.h"
+
+#define MAX_INTERMEDIATE_CHARS 2
+#define ACTION(state_change) (state_change & 0x0F)
+#define STATE(state_change) (state_change >> 4)
+
+struct vtparse;
+
+typedef void (*vtparse_callback_t)(struct vtparse*, vtparse_action_t, unsigned char);
+
+typedef struct vtparse {
+ vtparse_state_t state;
+ vtparse_callback_t cb;
+ unsigned char intermediate_chars[MAX_INTERMEDIATE_CHARS+1];
+ char ignore_flagged;
+ int params[16];
+ int num_params;
+ void* user_data;
+} vtparse_t;
+
+void vtparse_init(vtparse_t *parser, vtparse_callback_t cb);
+void vtparse(vtparse_t *parser, unsigned char *data, int len);
+