diff-tree 7fb7faf5eb5622492150ad79d835d8a3ccca3eff (from 800e2752bc439633b81760f2798dc053986c16f9)
Author: tshighla <trevor@dyn9414099.austin.ibm.com>
Date:   Wed Oct 11 18:26:09 2006 -0500

    add decision_tree.h

diff --git a/src/include/decision_tree.h b/src/include/decision_tree.h
new file mode 100644
index 0000000..67f8af3
--- /dev/null
+++ b/src/include/decision_tree.h
@@ -0,0 +1,43 @@
+struct param_node;
+
+struct val_node {
+        void *val;
+        struct val_node *prev;
+};
+
+struct transition_node {
+        /* If val == NULL, then this matches every time. If token_id
+         * == NULL_TOK, then trans_func must be defined. Else, if
+         * trans_func is defined and returns NULL_TOK, then token_id
+         * is used. */
+        char *val;
+        char *pretty_val;
+        struct param_node *next_token;
+        int (*trans_func)(struct param_node *, struct val_node **);
+};
+
+struct param_node {
+#define MOUNT_ERROR -3
+#define NULL_TOK -1
+#define DEFAULT_TOK -2
+        int token_id;
+        int num_mnt_opt_names;
+#define MAX_NUM_MNT_OPT_NAMES 8
+        char *mnt_opt_names[MAX_NUM_MNT_OPT_NAMES];
+        char *prompt;
+#define VAL_STR 0
+#define VAL_HEX 1
+        int val_type;
+        char *val;
+        char *default_val;
+        void (*display_opts)(struct param_node *);
+#define DISPLAY_TRANSITION_NODE_VALS    0x00000001
+#define MASK_OUTPUT                     0x00000002
+#define ALLOW_IMPLICIT_TRANSITION       0x00000004
+#define NO_VALUE                        0x00000008
+        uint32_t flags;
+        int num_transitions;
+#define MAX_NUM_TRANSITIONS 8
+        struct transition_node tl[MAX_NUM_TRANSITIONS];
+};
+
