- #ifndef ISL_AST_TYPE_H 
- #define ISL_AST_TYPE_H 
-   
- #include <isl/list.h> 
-   
- #if defined(__cplusplus) 
- extern "C" { 
- #endif 
-   
- struct __isl_export isl_ast_expr; 
- typedef struct isl_ast_expr isl_ast_expr; 
-   
- struct __isl_export isl_ast_node; 
- typedef struct isl_ast_node isl_ast_node; 
-   
- enum isl_ast_expr_op_type { 
-         isl_ast_expr_op_error = -1, 
-         isl_ast_expr_op_and, 
-         isl_ast_expr_op_and_then, 
-         isl_ast_expr_op_or, 
-         isl_ast_expr_op_or_else, 
-         isl_ast_expr_op_max, 
-         isl_ast_expr_op_min, 
-         isl_ast_expr_op_minus, 
-         isl_ast_expr_op_add, 
-         isl_ast_expr_op_sub, 
-         isl_ast_expr_op_mul, 
-         isl_ast_expr_op_div, 
-         isl_ast_expr_op_fdiv_q, /* Round towards -infty */ 
-         isl_ast_expr_op_pdiv_q, /* Dividend is non-negative */ 
-         isl_ast_expr_op_pdiv_r, /* Dividend is non-negative */ 
-         isl_ast_expr_op_zdiv_r, /* Result only compared against zero */ 
-         isl_ast_expr_op_cond, 
-         isl_ast_expr_op_select, 
-         isl_ast_expr_op_eq, 
-         isl_ast_expr_op_le, 
-         isl_ast_expr_op_lt, 
-         isl_ast_expr_op_ge, 
-         isl_ast_expr_op_gt, 
-         isl_ast_expr_op_call, 
-         isl_ast_expr_op_access, 
-         isl_ast_expr_op_member, 
-         isl_ast_expr_op_address_of 
- }; 
-   
- #define isl_ast_op_type         isl_ast_expr_op_type 
- #define isl_ast_op_error        isl_ast_expr_op_error 
- #define isl_ast_op_and          isl_ast_expr_op_and 
- #define isl_ast_op_and_then     isl_ast_expr_op_and_then 
- #define isl_ast_op_or           isl_ast_expr_op_or 
- #define isl_ast_op_or_else      isl_ast_expr_op_or_else 
- #define isl_ast_op_max          isl_ast_expr_op_max 
- #define isl_ast_op_min          isl_ast_expr_op_min 
- #define isl_ast_op_minus        isl_ast_expr_op_minus 
- #define isl_ast_op_add          isl_ast_expr_op_add 
- #define isl_ast_op_sub          isl_ast_expr_op_sub 
- #define isl_ast_op_mul          isl_ast_expr_op_mul 
- #define isl_ast_op_div          isl_ast_expr_op_div 
- #define isl_ast_op_fdiv_q       isl_ast_expr_op_fdiv_q 
- #define isl_ast_op_pdiv_q       isl_ast_expr_op_pdiv_q 
- #define isl_ast_op_pdiv_r       isl_ast_expr_op_pdiv_r 
- #define isl_ast_op_zdiv_r       isl_ast_expr_op_zdiv_r 
- #define isl_ast_op_cond         isl_ast_expr_op_cond 
- #define isl_ast_op_select       isl_ast_expr_op_select 
- #define isl_ast_op_eq           isl_ast_expr_op_eq 
- #define isl_ast_op_le           isl_ast_expr_op_le 
- #define isl_ast_op_lt           isl_ast_expr_op_lt 
- #define isl_ast_op_ge           isl_ast_expr_op_ge 
- #define isl_ast_op_gt           isl_ast_expr_op_gt 
- #define isl_ast_op_call         isl_ast_expr_op_call 
- #define isl_ast_op_access       isl_ast_expr_op_access 
- #define isl_ast_op_member       isl_ast_expr_op_member 
- #define isl_ast_op_address_of   isl_ast_expr_op_address_of 
-   
- enum isl_ast_expr_type { 
-         isl_ast_expr_error = -1, 
-         isl_ast_expr_op, 
-         isl_ast_expr_id, 
-         isl_ast_expr_int 
- }; 
-   
- enum isl_ast_node_type { 
-         isl_ast_node_error = -1, 
-         isl_ast_node_for = 1, 
-         isl_ast_node_if, 
-         isl_ast_node_block, 
-         isl_ast_node_mark, 
-         isl_ast_node_user 
- }; 
-   
- enum isl_ast_loop_type { 
-         isl_ast_loop_error = -1, 
-         isl_ast_loop_default = 0, 
-         isl_ast_loop_atomic, 
-         isl_ast_loop_unroll, 
-         isl_ast_loop_separate 
- }; 
-   
- struct isl_ast_print_options; 
- typedef struct isl_ast_print_options isl_ast_print_options; 
-   
- ISL_DECLARE_LIST_TYPE(ast_expr) 
- ISL_DECLARE_EXPORTED_LIST_TYPE(ast_node) 
-   
- #if defined(__cplusplus) 
- } 
- #endif 
-   
- #endif 
-