aboutsummaryrefslogtreecommitdiff
path: root/include/pdp_types.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/pdp_types.h')
-rw-r--r--include/pdp_types.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/include/pdp_types.h b/include/pdp_types.h
index 32ab03f..59fc0d2 100644
--- a/include/pdp_types.h
+++ b/include/pdp_types.h
@@ -19,6 +19,7 @@
*
*/
+/* some typedefs and utility classes */
#ifndef PDP_TYPES_H
#define PDP_TYPES_H
@@ -33,4 +34,62 @@ typedef unsigned short u16;
typedef unsigned long u32;
typedef unsigned long long u64;
+
+#ifndef __cplusplus
+typedef int bool;
+#define true 1;
+#define false 0;
+#endif
+
+
+typedef struct _pdp t_pdp;
+typedef void (*t_pdp_packet_method1)(t_pdp *); /* dst */
+typedef void (*t_pdp_packet_method2)(t_pdp *, t_pdp *); /* dst, src */
+
+
+/*
+ The pdp symbol type manages the pdp name space. It maps
+ gives a symbol to something in a certain name space:
+
+ * packet classes
+ * forth words
+ * processor instances
+ * type description lists (for accelerating type matching)
+
+ symbols have an infinite lifespan, so this is also true
+ for things attached to it.
+
+*/
+
+/* the pdp symbol type */
+typedef struct _pdp_symbol
+{
+ /* the symbol name */
+ char *s_name;
+
+ /* the items this symbol is associated to in different namespaces */
+ struct _pdp_forthword_spec *s_word_spec; // a forth word
+ struct _pdp_list *s_processor; // an atom processor object
+ struct _pdp_class *s_class; // packet class
+ struct _pdp_list *s_type; // a type description
+
+ struct _pdp_symbol *s_next;
+
+} t_pdp_symbol;
+
+static inline void _pdp_symbol_clear_namespaces(t_pdp_symbol *s)
+{
+ s->s_word_spec = 0;
+ s->s_processor = 0;
+ s->s_class = 0;
+ s->s_type = 0;
+}
+
+
+
+/* generic packet subheader */
+//typedef unsigned char t_raw[PDP_SUBHEADER_SIZE];
+typedef unsigned int t_raw;
+
+
#endif