00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 struct executable_statement {
00030 int refcnt;
00031 struct executable_statement *next;
00032 enum statement_op {
00033 null_statement,
00034 if_statement,
00035 add_statement,
00036 eval_statement,
00037 break_statement,
00038 default_option_statement,
00039 supersede_option_statement,
00040 append_option_statement,
00041 prepend_option_statement,
00042 send_option_statement,
00043 statements_statement,
00044 on_statement,
00045 switch_statement,
00046 case_statement,
00047 default_statement,
00048 set_statement,
00049 unset_statement,
00050 let_statement,
00051 define_statement,
00052 log_statement,
00053 return_statement,
00054 execute_statement
00055 } op;
00056 union {
00057 struct {
00058 struct executable_statement *tc, *fc;
00059 struct expression *expr;
00060 } ie;
00061 struct expression *eval;
00062 struct expression *retval;
00063 struct class *add;
00064 struct option_cache *option;
00065 struct option_cache *supersede;
00066 struct option_cache *prepend;
00067 struct option_cache *append;
00068 struct executable_statement *statements;
00069 struct {
00070 int evtypes;
00071 # define ON_COMMIT 1
00072 # define ON_EXPIRY 2
00073 # define ON_RELEASE 4
00074 # define ON_TRANSMISSION 8
00075 struct executable_statement *statements;
00076 } on;
00077 struct {
00078 struct expression *expr;
00079 struct executable_statement *statements;
00080 } s_switch;
00081 struct expression *c_case;
00082 struct {
00083 char *name;
00084 struct expression *expr;
00085 struct executable_statement *statements;
00086 } set, let;
00087 char *unset;
00088 struct {
00089 enum {
00090 log_priority_fatal,
00091 log_priority_error,
00092 log_priority_debug,
00093 log_priority_info
00094 } priority;
00095 struct expression *expr;
00096 } log;
00097 struct {
00098 char *command;
00099 struct expression *arglist;
00100 int argc;
00101 } execute;
00102 } data;
00103 };
00104