#ifndef  TYPE_SDAIELEMENTARY_FUNCTION_ENUMERATORS_VAR_H
#define  TYPE_SDAIELEMENTARY_FUNCTION_ENUMERATORS_VAR_H

// This file was generated by exp2cxx,
// 0.8.1.
// You probably don't want to edit it since your modifications
// will be lost if exp2cxx is used to regenerate it.

enum Elementary_function_enumerators {
        Elementary_function_enumerators__ef_and,
        Elementary_function_enumerators__ef_or,
        Elementary_function_enumerators__ef_not,
        Elementary_function_enumerators__ef_xor,
        Elementary_function_enumerators__ef_negate_i,
        Elementary_function_enumerators__ef_add_i,
        Elementary_function_enumerators__ef_subtract_i,
        Elementary_function_enumerators__ef_multiply_i,
        Elementary_function_enumerators__ef_divide_i,
        Elementary_function_enumerators__ef_mod_i,
        Elementary_function_enumerators__ef_exponentiate_i,
        Elementary_function_enumerators__ef_eq_i,
        Elementary_function_enumerators__ef_ne_i,
        Elementary_function_enumerators__ef_gt_i,
        Elementary_function_enumerators__ef_lt_i,
        Elementary_function_enumerators__ef_ge_i,
        Elementary_function_enumerators__ef_le_i,
        Elementary_function_enumerators__ef_abs_i,
        Elementary_function_enumerators__ef_max_i,
        Elementary_function_enumerators__ef_min_i,
        Elementary_function_enumerators__ef_if_i,
        Elementary_function_enumerators__ef_negate_r,
        Elementary_function_enumerators__ef_reciprocal_r,
        Elementary_function_enumerators__ef_add_r,
        Elementary_function_enumerators__ef_subtract_r,
        Elementary_function_enumerators__ef_multiply_r,
        Elementary_function_enumerators__ef_divide_r,
        Elementary_function_enumerators__ef_mod_r,
        Elementary_function_enumerators__ef_exponentiate_r,
        Elementary_function_enumerators__ef_exponentiate_ri,
        Elementary_function_enumerators__ef_eq_r,
        Elementary_function_enumerators__ef_ne_r,
        Elementary_function_enumerators__ef_gt_r,
        Elementary_function_enumerators__ef_lt_r,
        Elementary_function_enumerators__ef_ge_r,
        Elementary_function_enumerators__ef_le_r,
        Elementary_function_enumerators__ef_abs_r,
        Elementary_function_enumerators__ef_max_r,
        Elementary_function_enumerators__ef_min_r,
        Elementary_function_enumerators__ef_acos_r,
        Elementary_function_enumerators__ef_asin_r,
        Elementary_function_enumerators__ef_atan2_r,
        Elementary_function_enumerators__ef_cos_r,
        Elementary_function_enumerators__ef_exp_r,
        Elementary_function_enumerators__ef_ln_r,
        Elementary_function_enumerators__ef_log2_r,
        Elementary_function_enumerators__ef_log10_r,
        Elementary_function_enumerators__ef_sin_r,
        Elementary_function_enumerators__ef_sqrt_r,
        Elementary_function_enumerators__ef_tan_r,
        Elementary_function_enumerators__ef_if_r,
        Elementary_function_enumerators__ef_form_c,
        Elementary_function_enumerators__ef_rpart_c,
        Elementary_function_enumerators__ef_ipart_c,
        Elementary_function_enumerators__ef_negate_c,
        Elementary_function_enumerators__ef_reciprocal_c,
        Elementary_function_enumerators__ef_add_c,
        Elementary_function_enumerators__ef_subtract_c,
        Elementary_function_enumerators__ef_multiply_c,
        Elementary_function_enumerators__ef_divide_c,
        Elementary_function_enumerators__ef_exponentiate_c,
        Elementary_function_enumerators__ef_exponentiate_ci,
        Elementary_function_enumerators__ef_eq_c,
        Elementary_function_enumerators__ef_ne_c,
        Elementary_function_enumerators__ef_conjugate_c,
        Elementary_function_enumerators__ef_abs_c,
        Elementary_function_enumerators__ef_arg_c,
        Elementary_function_enumerators__ef_cos_c,
        Elementary_function_enumerators__ef_exp_c,
        Elementary_function_enumerators__ef_ln_c,
        Elementary_function_enumerators__ef_sin_c,
        Elementary_function_enumerators__ef_sqrt_c,
        Elementary_function_enumerators__ef_tan_c,
        Elementary_function_enumerators__ef_if_c,
        Elementary_function_enumerators__ef_subscript_s,
        Elementary_function_enumerators__ef_eq_s,
        Elementary_function_enumerators__ef_ne_s,
        Elementary_function_enumerators__ef_gt_s,
        Elementary_function_enumerators__ef_lt_s,
        Elementary_function_enumerators__ef_ge_s,
        Elementary_function_enumerators__ef_le_s,
        Elementary_function_enumerators__ef_subsequence_s,
        Elementary_function_enumerators__ef_concat_s,
        Elementary_function_enumerators__ef_size_s,
        Elementary_function_enumerators__ef_format,
        Elementary_function_enumerators__ef_value,
        Elementary_function_enumerators__ef_like,
        Elementary_function_enumerators__ef_if_s,
        Elementary_function_enumerators__ef_subscript_b,
        Elementary_function_enumerators__ef_eq_b,
        Elementary_function_enumerators__ef_ne_b,
        Elementary_function_enumerators__ef_gt_b,
        Elementary_function_enumerators__ef_lt_b,
        Elementary_function_enumerators__ef_ge_b,
        Elementary_function_enumerators__ef_le_b,
        Elementary_function_enumerators__ef_subsequence_b,
        Elementary_function_enumerators__ef_concat_b,
        Elementary_function_enumerators__ef_size_b,
        Elementary_function_enumerators__ef_if_b,
        Elementary_function_enumerators__ef_subscript_t,
        Elementary_function_enumerators__ef_eq_t,
        Elementary_function_enumerators__ef_ne_t,
        Elementary_function_enumerators__ef_concat_t,
        Elementary_function_enumerators__ef_size_t,
        Elementary_function_enumerators__ef_entuple,
        Elementary_function_enumerators__ef_detuple,
        Elementary_function_enumerators__ef_insert,
        Elementary_function_enumerators__ef_remove,
        Elementary_function_enumerators__ef_if_t,
        Elementary_function_enumerators__ef_sum_it,
        Elementary_function_enumerators__ef_product_it,
        Elementary_function_enumerators__ef_add_it,
        Elementary_function_enumerators__ef_subtract_it,
        Elementary_function_enumerators__ef_scalar_mult_it,
        Elementary_function_enumerators__ef_dot_prod_it,
        Elementary_function_enumerators__ef_sum_rt,
        Elementary_function_enumerators__ef_product_rt,
        Elementary_function_enumerators__ef_add_rt,
        Elementary_function_enumerators__ef_subtract_rt,
        Elementary_function_enumerators__ef_scalar_mult_rt,
        Elementary_function_enumerators__ef_dot_prod_rt,
        Elementary_function_enumerators__ef_norm_rt,
        Elementary_function_enumerators__ef_sum_ct,
        Elementary_function_enumerators__ef_product_ct,
        Elementary_function_enumerators__ef_add_ct,
        Elementary_function_enumerators__ef_subtract_ct,
        Elementary_function_enumerators__ef_scalar_mult_ct,
        Elementary_function_enumerators__ef_dot_prod_ct,
        Elementary_function_enumerators__ef_norm_ct,
        Elementary_function_enumerators__ef_if,
        Elementary_function_enumerators__ef_ensemble,
        Elementary_function_enumerators__ef_member_of,
        Elementary_function_enumerators_unset
};

class SC_SCHEMA_EXPORT SdaiElementary_function_enumerators_var  :  public SDAI_Enum  {
  protected:
        EnumTypeDescriptor *type;

  public:
        SdaiElementary_function_enumerators_var (const char * n =0, EnumTypeDescriptor *et =ap209_multidisciplinary_analysis_and_design_mim_lf::t_elementary_function_enumerators);
        SdaiElementary_function_enumerators_var (Elementary_function_enumerators e, EnumTypeDescriptor *et =ap209_multidisciplinary_analysis_and_design_mim_lf::t_elementary_function_enumerators)
                : type(et) {  set_value (e);  }
        SdaiElementary_function_enumerators_var (const SdaiElementary_function_enumerators_var &e) { set_value(e); }
        ~SdaiElementary_function_enumerators_var () { }
        SdaiElementary_function_enumerators_var& operator= (const SdaiElementary_function_enumerators_var& e)
                {  set_value (e);  return *this;  }
        operator Elementary_function_enumerators () const;

        inline virtual const char * Name () const
                {  return type->Name();  }
        inline virtual int no_elements () const  {  return 132;  }
        virtual const char * element_at (int n) const;
};

typedef       SdaiElementary_function_enumerators_var *   SdaiElementary_function_enumerators_var_ptr;

typedef const SdaiElementary_function_enumerators_var *   SdaiElementary_function_enumerators_var_ptr_c;
  SDAI_Enum * create_SdaiElementary_function_enumerators_var();

class SdaiElementary_function_enumerators_var_agg  :  public EnumAggregate  {
  protected:
    EnumTypeDescriptor *enum_type;

  public:
    SdaiElementary_function_enumerators_var_agg( EnumTypeDescriptor * =ap209_multidisciplinary_analysis_and_design_mim_lf::t_elementary_function_enumerators);
    virtual ~SdaiElementary_function_enumerators_var_agg();
    virtual SingleLinkNode * NewNode()
        { return new EnumNode (new SdaiElementary_function_enumerators_var( "", enum_type )); }
};

typedef       SdaiElementary_function_enumerators_var_agg *   SdaiElementary_function_enumerators_var_agg_ptr;

typedef const SdaiElementary_function_enumerators_var_agg *   SdaiElementary_function_enumerators_var_agg_ptr_c;
  STEPaggregate * create_SdaiElementary_function_enumerators_var_agg ();
void init_SdaiElementary_function_enumerators_var(Registry& reg);

#endif
