#ifndef RULE_EXPRESSION_NAMES_H_
#define RULE_EXPRESSION_NAMES_H_
#include "rule_expression.h"
#include "rule_operators.h"
namespace rule {
using namespace rule::internal;
typedef fa_ptr_type Ap_;
typedef fi_literal_ptr_type Ip_;
typedef expression_rule_term_ptr_type Xp_;
// ======================================================================================================
// EXPRESSIONS USED IN FILTERS AND IN EXPRESSION (WITHIN FILTERS AND CONSEQUENT TERMS)
// ======================================================================================================
typedef expression_unary_rule_term< u_not , Ip_> F_not_i;
typedef expression_unary_rule_term< u_not , Ap_> F_not_a;
typedef expression_unary_rule_term< u_not , Xp_> F_not_x;
typedef expression_rule_term<Ip_, f_lt , Ip_> F_lt_ii;
typedef expression_rule_term<Ip_, f_lt , Ap_> F_lt_ia;
typedef expression_rule_term<Ip_, f_lt , Xp_> F_lt_ix;
typedef expression_rule_term<Ap_, f_lt , Ip_> F_lt_ai;
typedef expression_rule_term<Ap_, f_lt , Ap_> F_lt_aa;
typedef expression_rule_term<Ap_, f_lt , Xp_> F_lt_ax;
typedef expression_rule_term<Xp_, f_lt , Ip_> F_lt_xi;
typedef expression_rule_term<Xp_, f_lt , Ap_> F_lt_xa;
typedef expression_rule_term<Xp_, f_lt , Xp_> F_lt_xx;
typedef expression_rule_term<Ip_, f_le , Ip_> F_le_ii;
typedef expression_rule_term<Ip_, f_le , Ap_> F_le_ia;
typedef expression_rule_term<Ip_, f_le , Xp_> F_le_ix;
typedef expression_rule_term<Ap_, f_le , Ip_> F_le_ai;
typedef expression_rule_term<Ap_, f_le , Ap_> F_le_aa;
typedef expression_rule_term<Ap_, f_le , Xp_> F_le_ax;
typedef expression_rule_term<Xp_, f_le , Ip_> F_le_xi;
typedef expression_rule_term<Xp_, f_le , Ap_> F_le_xa;
typedef expression_rule_term<Xp_, f_le , Xp_> F_le_xx;
typedef expression_rule_term<Ip_, f_gt , Ip_> F_gt_ii;
typedef expression_rule_term<Ip_, f_gt , Ap_> F_gt_ia;
typedef expression_rule_term<Ip_, f_gt , Xp_> F_gt_ix;
typedef expression_rule_term<Ap_, f_gt , Ip_> F_gt_ai;
typedef expression_rule_term<Ap_, f_gt , Ap_> F_gt_aa;
typedef expression_rule_term<Ap_, f_gt , Xp_> F_gt_ax;
typedef expression_rule_term<Xp_, f_gt , Ip_> F_gt_xi;
typedef expression_rule_term<Xp_, f_gt , Ap_> F_gt_xa;
typedef expression_rule_term<Xp_, f_gt , Xp_> F_gt_xx;
typedef expression_rule_term<Ip_, f_ge , Ip_> F_ge_ii;
typedef expression_rule_term<Ip_, f_ge , Ap_> F_ge_ia;
typedef expression_rule_term<Ip_, f_ge , Xp_> F_ge_ix;
typedef expression_rule_term<Ap_, f_ge , Ip_> F_ge_ai;
typedef expression_rule_term<Ap_, f_ge , Ap_> F_ge_aa;
typedef expression_rule_term<Ap_, f_ge , Xp_> F_ge_ax;
typedef expression_rule_term<Xp_, f_ge , Ip_> F_ge_xi;
typedef expression_rule_term<Xp_, f_ge , Ap_> F_ge_xa;
typedef expression_rule_term<Xp_, f_ge , Xp_> F_ge_xx;
typedef expression_rule_term<Ip_, f_eq , Ip_> F_eq_ii;
typedef expression_rule_term<Ip_, f_eq , Ap_> F_eq_ia;
typedef expression_rule_term<Ip_, f_eq , Xp_> F_eq_ix;
typedef expression_rule_term<Ap_, f_eq , Ip_> F_eq_ai;
typedef expression_rule_term<Ap_, f_eq , Ap_> F_eq_aa;
typedef expression_rule_term<Ap_, f_eq , Xp_> F_eq_ax;
typedef expression_rule_term<Xp_, f_eq , Ip_> F_eq_xi;
typedef expression_rule_term<Xp_, f_eq , Ap_> F_eq_xa;
typedef expression_rule_term<Xp_, f_eq , Xp_> F_eq_xx;
typedef expression_rule_term<Ip_, f_ne , Ip_> F_ne_ii;
typedef expression_rule_term<Ip_, f_ne , Ap_> F_ne_ia;
typedef expression_rule_term<Ip_, f_ne , Xp_> F_ne_ix;
typedef expression_rule_term<Ap_, f_ne , Ip_> F_ne_ai;
typedef expression_rule_term<Ap_, f_ne , Ap_> F_ne_aa;
typedef expression_rule_term<Ap_, f_ne , Xp_> F_ne_ax;
typedef expression_rule_term<Xp_, f_ne , Ip_> F_ne_xi;
typedef expression_rule_term<Xp_, f_ne , Ap_> F_ne_xa;
typedef expression_rule_term<Xp_, f_ne , Xp_> F_ne_xx;
typedef expression_rule_term<Ip_, f_and , Ip_> F_and_ii;
typedef expression_rule_term<Ip_, f_and , Ap_> F_and_ia;
typedef expression_rule_term<Ip_, f_and , Xp_> F_and_ix;
typedef expression_rule_term<Ap_, f_and , Ip_> F_and_ai;
typedef expression_rule_term<Ap_, f_and , Ap_> F_and_aa;
typedef expression_rule_term<Ap_, f_and , Xp_> F_and_ax;
typedef expression_rule_term<Xp_, f_and , Ip_> F_and_xi;
typedef expression_rule_term<Xp_, f_and , Ap_> F_and_xa;
typedef expression_rule_term<Xp_, f_and , Xp_> F_and_xx;
typedef expression_rule_term<Ip_, f_or , Ip_> F_or_ii;
typedef expression_rule_term<Ip_, f_or , Ap_> F_or_ia;
typedef expression_rule_term<Ip_, f_or , Xp_> F_or_ix;
typedef expression_rule_term<Ap_, f_or , Ip_> F_or_ai;
typedef expression_rule_term<Ap_, f_or , Ap_> F_or_aa;
typedef expression_rule_term<Ap_, f_or , Xp_> F_or_ax;
typedef expression_rule_term<Xp_, f_or , Ip_> F_or_xi;
typedef expression_rule_term<Xp_, f_or , Ap_> F_or_xa;
typedef expression_rule_term<Xp_, f_or , Xp_> F_or_xx;
typedef expression_rule_term<Ip_, f_xor , Ip_> F_xor_ii;
typedef expression_rule_term<Ip_, f_xor , Ap_> F_xor_ia;
typedef expression_rule_term<Ip_, f_xor , Xp_> F_xor_ix;
typedef expression_rule_term<Ap_, f_xor , Ip_> F_xor_ai;
typedef expression_rule_term<Ap_, f_xor , Ap_> F_xor_aa;
typedef expression_rule_term<Ap_, f_xor , Xp_> F_xor_ax;
typedef expression_rule_term<Xp_, f_xor , Ip_> F_xor_xi;
typedef expression_rule_term<Xp_, f_xor , Ap_> F_xor_xa;
typedef expression_rule_term<Xp_, f_xor , Xp_> F_xor_xx;
typedef expression_rule_term<Ip_, f_str_eq_case , Ip_> F_str_eq_case_ii;
typedef expression_rule_term<Ip_, f_str_eq_case , Ap_> F_str_eq_case_ia;
typedef expression_rule_term<Ip_, f_str_eq_case , Xp_> F_str_eq_case_ix;
typedef expression_rule_term<Ap_, f_str_eq_case , Ip_> F_str_eq_case_ai;
typedef expression_rule_term<Ap_, f_str_eq_case , Ap_> F_str_eq_case_aa;
typedef expression_rule_term<Ap_, f_str_eq_case , Xp_> F_str_eq_case_ax;
typedef expression_rule_term<Xp_, f_str_eq_case , Ip_> F_str_eq_case_xi;
typedef expression_rule_term<Xp_, f_str_eq_case , Ap_> F_str_eq_case_xa;
typedef expression_rule_term<Xp_, f_str_eq_case , Xp_> F_str_eq_case_xx;
typedef expression_rule_term<Ip_, f_str_eq_no_case , Ip_> F_str_eq_no_case_ii;
typedef expression_rule_term<Ip_, f_str_eq_no_case , Ap_> F_str_eq_no_case_ia;
typedef expression_rule_term<Ip_, f_str_eq_no_case , Xp_> F_str_eq_no_case_ix;
typedef expression_rule_term<Ap_, f_str_eq_no_case , Ip_> F_str_eq_no_case_ai;
typedef expression_rule_term<Ap_, f_str_eq_no_case , Ap_> F_str_eq_no_case_aa;
typedef expression_rule_term<Ap_, f_str_eq_no_case , Xp_> F_str_eq_no_case_ax;
typedef expression_rule_term<Xp_, f_str_eq_no_case , Ip_> F_str_eq_no_case_xi;
typedef expression_rule_term<Xp_, f_str_eq_no_case , Ap_> F_str_eq_no_case_xa;
typedef expression_rule_term<Xp_, f_str_eq_no_case , Xp_> F_str_eq_no_case_xx;
typedef expression_rule_term<Ip_, f_str_starts_with , Ip_> F_str_starts_with_ii;
typedef expression_rule_term<Ip_, f_str_starts_with , Ap_> F_str_starts_with_ia;
typedef expression_rule_term<Ip_, f_str_starts_with , Xp_> F_str_starts_with_ix;
typedef expression_rule_term<Ap_, f_str_starts_with , Ip_> F_str_starts_with_ai;
typedef expression_rule_term<Ap_, f_str_starts_with , Ap_> F_str_starts_with_aa;
typedef expression_rule_term<Ap_, f_str_starts_with , Xp_> F_str_starts_with_ax;
typedef expression_rule_term<Xp_, f_str_starts_with , Ip_> F_str_starts_with_xi;
typedef expression_rule_term<Xp_, f_str_starts_with , Ap_> F_str_starts_with_xa;
typedef expression_rule_term<Xp_, f_str_starts_with , Xp_> F_str_starts_with_xx;
typedef expression_rule_term<Ip_, f_str_ends_with , Ip_> F_str_ends_with_ii;
typedef expression_rule_term<Ip_, f_str_ends_with , Ap_> F_str_ends_with_ia;
typedef expression_rule_term<Ip_, f_str_ends_with , Xp_> F_str_ends_with_ix;
typedef expression_rule_term<Ap_, f_str_ends_with , Ip_> F_str_ends_with_ai;
typedef expression_rule_term<Ap_, f_str_ends_with , Ap_> F_str_ends_with_aa;
typedef expression_rule_term<Ap_, f_str_ends_with , Xp_> F_str_ends_with_ax;
typedef expression_rule_term<Xp_, f_str_ends_with , Ip_> F_str_ends_with_xi;
typedef expression_rule_term<Xp_, f_str_ends_with , Ap_> F_str_ends_with_xa;
typedef expression_rule_term<Xp_, f_str_ends_with , Xp_> F_str_ends_with_xx;
typedef expression_rule_term<Ip_, f_str_contains , Ip_> F_str_contains_ii;
typedef expression_rule_term<Ip_, f_str_contains , Ap_> F_str_contains_ia;
typedef expression_rule_term<Ip_, f_str_contains , Xp_> F_str_contains_ix;
typedef expression_rule_term<Ap_, f_str_contains , Ip_> F_str_contains_ai;
typedef expression_rule_term<Ap_, f_str_contains , Ap_> F_str_contains_aa;
typedef expression_rule_term<Ap_, f_str_contains , Xp_> F_str_contains_ax;
typedef expression_rule_term<Xp_, f_str_contains , Ip_> F_str_contains_xi;
typedef expression_rule_term<Xp_, f_str_contains , Ap_> F_str_contains_xa;
typedef expression_rule_term<Xp_, f_str_contains , Xp_> F_str_contains_xx;
typedef expression_rule_term<Ip_, f_is_type , Ip_> F_is_type_ii;
typedef expression_rule_term<Ip_, f_is_type , Ap_> F_is_type_ia;
typedef expression_rule_term<Ip_, f_is_type , Xp_> F_is_type_ix;
typedef expression_rule_term<Ap_, f_is_type , Ip_> F_is_type_ai;
typedef expression_rule_term<Ap_, f_is_type , Ap_> F_is_type_aa;
typedef expression_rule_term<Ap_, f_is_type , Xp_> F_is_type_ax;
typedef expression_rule_term<Xp_, f_is_type , Ip_> F_is_type_xi;
typedef expression_rule_term<Xp_, f_is_type , Ap_> F_is_type_xa;
typedef expression_rule_term<Xp_, f_is_type , Xp_> F_is_type_xx;
// ======================================================================================================
// EXPRESSIONS USED IN EXPRESSION ONLY
// ======================================================================================================
typedef expression_unary_rule_term< u_floor , Ip_> F_floor_i;
typedef expression_unary_rule_term< u_floor , Ap_> F_floor_a;
typedef expression_unary_rule_term< u_floor , Xp_> F_floor_x;
typedef expression_unary_rule_term< u_ceil , Ip_> F_ceil_i;
typedef expression_unary_rule_term< u_ceil , Ap_> F_ceil_a;
typedef expression_unary_rule_term< u_ceil , Xp_> F_ceil_x;
typedef expression_unary_rule_term< u_abs , Ip_> F_abs_i;
typedef expression_unary_rule_term< u_abs , Ap_> F_abs_a;
typedef expression_unary_rule_term< u_abs , Xp_> F_abs_x;
typedef expression_rule_term<Ip_, f_bit_and , Ip_> F_bit_and_ii;
typedef expression_rule_term<Ip_, f_bit_and , Ap_> F_bit_and_ia;
typedef expression_rule_term<Ip_, f_bit_and , Xp_> F_bit_and_ix;
typedef expression_rule_term<Ap_, f_bit_and , Ip_> F_bit_and_ai;
typedef expression_rule_term<Ap_, f_bit_and , Ap_> F_bit_and_aa;
typedef expression_rule_term<Ap_, f_bit_and , Xp_> F_bit_and_ax;
typedef expression_rule_term<Xp_, f_bit_and , Ip_> F_bit_and_xi;
typedef expression_rule_term<Xp_, f_bit_and , Ap_> F_bit_and_xa;
typedef expression_rule_term<Xp_, f_bit_and , Xp_> F_bit_and_xx;
typedef expression_rule_term<Ip_, f_bit_or , Ip_> F_bit_or_ii;
typedef expression_rule_term<Ip_, f_bit_or , Ap_> F_bit_or_ia;
typedef expression_rule_term<Ip_, f_bit_or , Xp_> F_bit_or_ix;
typedef expression_rule_term<Ap_, f_bit_or , Ip_> F_bit_or_ai;
typedef expression_rule_term<Ap_, f_bit_or , Ap_> F_bit_or_aa;
typedef expression_rule_term<Ap_, f_bit_or , Xp_> F_bit_or_ax;
typedef expression_rule_term<Xp_, f_bit_or , Ip_> F_bit_or_xi;
typedef expression_rule_term<Xp_, f_bit_or , Ap_> F_bit_or_xa;
typedef expression_rule_term<Xp_, f_bit_or , Xp_> F_bit_or_xx;
typedef expression_rule_term<Ip_, f_add , Ip_> F_add_ii;
typedef expression_rule_term<Ip_, f_add , Ap_> F_add_ia;
typedef expression_rule_term<Ip_, f_add , Xp_> F_add_ix;
typedef expression_rule_term<Ap_, f_add , Ip_> F_add_ai;
typedef expression_rule_term<Ap_, f_add , Ap_> F_add_aa;
typedef expression_rule_term<Ap_, f_add , Xp_> F_add_ax;
typedef expression_rule_term<Xp_, f_add , Ip_> F_add_xi;
typedef expression_rule_term<Xp_, f_add , Ap_> F_add_xa;
typedef expression_rule_term<Xp_, f_add , Xp_> F_add_xx;
typedef expression_rule_term<Ip_, f_sub , Ip_> F_sub_ii;
typedef expression_rule_term<Ip_, f_sub , Ap_> F_sub_ia;
typedef expression_rule_term<Ip_, f_sub , Xp_> F_sub_ix;
typedef expression_rule_term<Ap_, f_sub , Ip_> F_sub_ai;
typedef expression_rule_term<Ap_, f_sub , Ap_> F_sub_aa;
typedef expression_rule_term<Ap_, f_sub , Xp_> F_sub_ax;
typedef expression_rule_term<Xp_, f_sub , Ip_> F_sub_xi;
typedef expression_rule_term<Xp_, f_sub , Ap_> F_sub_xa;
typedef expression_rule_term<Xp_, f_sub , Xp_> F_sub_xx;
typedef expression_rule_term<Ip_, f_mul , Ip_> F_mul_ii;
typedef expression_rule_term<Ip_, f_mul , Ap_> F_mul_ia;
typedef expression_rule_term<Ip_, f_mul , Xp_> F_mul_ix;
typedef expression_rule_term<Ap_, f_mul , Ip_> F_mul_ai;
typedef expression_rule_term<Ap_, f_mul , Ap_> F_mul_aa;
typedef expression_rule_term<Ap_, f_mul , Xp_> F_mul_ax;
typedef expression_rule_term<Xp_, f_mul , Ip_> F_mul_xi;
typedef expression_rule_term<Xp_, f_mul , Ap_> F_mul_xa;
typedef expression_rule_term<Xp_, f_mul , Xp_> F_mul_xx;
typedef expression_rule_term<Ip_, f_div , Ip_> F_div_ii;
typedef expression_rule_term<Ip_, f_div , Ap_> F_div_ia;
typedef expression_rule_term<Ip_, f_div , Xp_> F_div_ix;
typedef expression_rule_term<Ap_, f_div , Ip_> F_div_ai;
typedef expression_rule_term<Ap_, f_div , Ap_> F_div_aa;
typedef expression_rule_term<Ap_, f_div , Xp_> F_div_ax;
typedef expression_rule_term<Xp_, f_div , Ip_> F_div_xi;
typedef expression_rule_term<Xp_, f_div , Ap_> F_div_xa;
typedef expression_rule_term<Xp_, f_div , Xp_> F_div_xx;
typedef expression_rule_term<Ip_, f_pow , Ip_> F_pow_ii;
typedef expression_rule_term<Ip_, f_pow , Ap_> F_pow_ia;
typedef expression_rule_term<Ip_, f_pow , Xp_> F_pow_ix;
typedef expression_rule_term<Ap_, f_pow , Ip_> F_pow_ai;
typedef expression_rule_term<Ap_, f_pow , Ap_> F_pow_aa;
typedef expression_rule_term<Ap_, f_pow , Xp_> F_pow_ax;
typedef expression_rule_term<Xp_, f_pow , Ip_> F_pow_xi;
typedef expression_rule_term<Xp_, f_pow , Ap_> F_pow_xa;
typedef expression_rule_term<Xp_, f_pow , Xp_> F_pow_xx;
typedef expression_rule_term<Ip_, f_mod , Ip_> F_mod_ii;
typedef expression_rule_term<Ip_, f_mod , Ap_> F_mod_ia;
typedef expression_rule_term<Ip_, f_mod , Xp_> F_mod_ix;
typedef expression_rule_term<Ap_, f_mod , Ip_> F_mod_ai;
typedef expression_rule_term<Ap_, f_mod , Ap_> F_mod_aa;
typedef expression_rule_term<Ap_, f_mod , Xp_> F_mod_ax;
typedef expression_rule_term<Xp_, f_mod , Ip_> F_mod_xi;
typedef expression_rule_term<Xp_, f_mod , Ap_> F_mod_xa;
typedef expression_rule_term<Xp_, f_mod , Xp_> F_mod_xx;
typedef expression_unary_rule_term<u_str_to_upper , Ip_> F_str_to_upper_i;
typedef expression_unary_rule_term<u_str_to_upper , Ap_> F_str_to_upper_a;
typedef expression_unary_rule_term<u_str_to_upper , Xp_> F_str_to_upper_x;
typedef expression_unary_rule_term<u_str_to_lower , Ip_> F_str_to_lower_i;
typedef expression_unary_rule_term<u_str_to_lower , Ap_> F_str_to_lower_a;
typedef expression_unary_rule_term<u_str_to_lower , Xp_> F_str_to_lower_x;
typedef expression_unary_rule_term<u_str_len , Ip_> F_str_len_i;
typedef expression_unary_rule_term<u_str_len , Ap_> F_str_len_a;
typedef expression_unary_rule_term<u_str_len , Xp_> F_str_len_x;
// example of custom functors. . .
typedef expression_unary_rule_term<u_get_age , Ip_> F_get_age_i;
typedef expression_unary_rule_term<u_get_age , Ap_> F_get_age_a;
typedef expression_unary_rule_term<u_get_age , Xp_> F_get_age_x;
typedef expression_rule_term<Ip_, f_get_age_as_of , Ip_> F_get_age_as_of_ii;
typedef expression_rule_term<Ip_, f_get_age_as_of , Ap_> F_get_age_as_of_ia;
typedef expression_rule_term<Ip_, f_get_age_as_of , Xp_> F_get_age_as_of_ix;
typedef expression_rule_term<Ap_, f_get_age_as_of , Ip_> F_get_age_as_of_ai;
typedef expression_rule_term<Ap_, f_get_age_as_of , Ap_> F_get_age_as_of_aa;
typedef expression_rule_term<Ap_, f_get_age_as_of , Xp_> F_get_age_as_of_ax;
typedef expression_rule_term<Xp_, f_get_age_as_of , Ip_> F_get_age_as_of_xi;
typedef expression_rule_term<Xp_, f_get_age_as_of , Ap_> F_get_age_as_of_xa;
typedef expression_rule_term<Xp_, f_get_age_as_of , Xp_> F_get_age_as_of_xx;
}; /* rule namespace */
#endif /*RULE_EXPRESSION_NAMES_H_*/