/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 2.0.6
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package javagiac;

public class gen {
  private long swigCPtr;
  protected boolean swigCMemOwn;

  protected gen(long cPtr, boolean cMemoryOwn) {
    swigCMemOwn = cMemoryOwn;
    swigCPtr = cPtr;
  }

  protected static long getCPtr(gen obj) {
    return (obj == null) ? 0 : obj.swigCPtr;
  }

  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwn) {
        swigCMemOwn = false;
        giacJNI.delete_gen(swigCPtr);
      }
      swigCPtr = 0;
    }
  }

  public void setType(short value) {
    giacJNI.gen_type_set(swigCPtr, this, value);
  }

  public short getType() {
    return giacJNI.gen_type_get(swigCPtr, this);
  }

  public void setType_unused(short value) {
    giacJNI.gen_type_unused_set(swigCPtr, this, value);
  }

  public short getType_unused() {
    return giacJNI.gen_type_unused_get(swigCPtr, this);
  }

  public void setSubtype(byte value) {
    giacJNI.gen_subtype_set(swigCPtr, this, value);
  }

  public byte getSubtype() {
    return giacJNI.gen_subtype_get(swigCPtr, this);
  }

  public void setReserved(int value) {
    giacJNI.gen_reserved_set(swigCPtr, this, value);
  }

  public int getReserved() {
    return giacJNI.gen_reserved_get(swigCPtr, this);
  }

  public void setVal(int value) {
    giacJNI.gen_val_set(swigCPtr, this, value);
  }

  public int getVal() {
    return giacJNI.gen_val_get(swigCPtr, this);
  }

  public SWIGTYPE_p_int ref_count() {
    return new SWIGTYPE_p_int(giacJNI.gen_ref_count(swigCPtr, this), false);
  }

  public gen() {
    this(giacJNI.new_gen__SWIG_0(), true);
  }

  public gen(SWIGTYPE_p_void ptr, short subt) {
    this(giacJNI.new_gen__SWIG_1(SWIGTYPE_p_void.getCPtr(ptr), subt), true);
  }

  public gen(int i) {
    this(giacJNI.new_gen__SWIG_2(i), true);
  }

  public gen(long i) {
    this(giacJNI.new_gen__SWIG_3(i), true);
  }

  public gen(SWIGTYPE_p_longlong i) {
    this(giacJNI.new_gen__SWIG_4(SWIGTYPE_p_longlong.getCPtr(i)), true);
  }

  public gen(double d) {
    this(giacJNI.new_gen__SWIG_5(d), true);
  }

  public gen(SWIGTYPE_p_giac_float f) {
    this(giacJNI.new_gen__SWIG_6(SWIGTYPE_p_giac_float.getCPtr(f)), true);
  }

  public double DOUBLE_val() {
    return giacJNI.gen_DOUBLE_val(swigCPtr, this);
  }

  public SWIGTYPE_p_giac_float FLOAT_val() {
    return new SWIGTYPE_p_giac_float(giacJNI.gen_FLOAT_val(swigCPtr, this), true);
  }

  public gen(int a, int b) {
    this(giacJNI.new_gen__SWIG_7(a, b), true);
  }

  public gen(double a, double b) {
    this(giacJNI.new_gen__SWIG_8(a, b), true);
  }

  public gen(gen a, gen b) {
    this(giacJNI.new_gen__SWIG_9(gen.getCPtr(a), a, gen.getCPtr(b), b), true);
  }

  public gen(SWIGTYPE_p_std__complexT_double_t c) {
    this(giacJNI.new_gen__SWIG_10(SWIGTYPE_p_std__complexT_double_t.getCPtr(c)), true);
  }

  public gen(gen e) {
    this(giacJNI.new_gen__SWIG_11(gen.getCPtr(e), e), true);
  }

  public gen(SWIGTYPE_p_giac__identificateur s) {
    this(giacJNI.new_gen__SWIG_12(SWIGTYPE_p_giac__identificateur.getCPtr(s)), true);
  }

  public gen(SWIGTYPE_p_giac__ref_identificateur sptr) {
    this(giacJNI.new_gen__SWIG_13(SWIGTYPE_p_giac__ref_identificateur.getCPtr(sptr)), true);
  }

  public gen(SWIGTYPE_p_giac__vecteur v, short s) {
    this(giacJNI.new_gen__SWIG_14(SWIGTYPE_p_giac__vecteur.getCPtr(v), s), true);
  }

  public gen(SWIGTYPE_p_giac__vecteur v) {
    this(giacJNI.new_gen__SWIG_15(SWIGTYPE_p_giac__vecteur.getCPtr(v)), true);
  }

  public gen(SWIGTYPE_p_giac__ref_vecteur vptr, short s) {
    this(giacJNI.new_gen__SWIG_16(SWIGTYPE_p_giac__ref_vecteur.getCPtr(vptr), s), true);
  }

  public gen(SWIGTYPE_p_giac__ref_vecteur vptr) {
    this(giacJNI.new_gen__SWIG_17(SWIGTYPE_p_giac__ref_vecteur.getCPtr(vptr)), true);
  }

  public gen(SWIGTYPE_p_giac__symbolic s) {
    this(giacJNI.new_gen__SWIG_18(SWIGTYPE_p_giac__symbolic.getCPtr(s)), true);
  }

  public gen(SWIGTYPE_p_giac__ref_symbolic sptr) {
    this(giacJNI.new_gen__SWIG_19(SWIGTYPE_p_giac__ref_symbolic.getCPtr(sptr)), true);
  }

  public gen(SWIGTYPE_p_giac__gen_user g) {
    this(giacJNI.new_gen__SWIG_20(SWIGTYPE_p_giac__gen_user.getCPtr(g)), true);
  }

  public gen(SWIGTYPE_p_giac__real_object g) {
    this(giacJNI.new_gen__SWIG_21(SWIGTYPE_p_giac__real_object.getCPtr(g)), true);
  }

  public gen(SWIGTYPE_p_giac__Tref_tensorT_giac__gen_t pptr) {
    this(giacJNI.new_gen__SWIG_22(SWIGTYPE_p_giac__Tref_tensorT_giac__gen_t.getCPtr(pptr)), true);
  }

  public gen(SWIGTYPE_p_giac__polynome p) {
    this(giacJNI.new_gen__SWIG_23(SWIGTYPE_p_giac__polynome.getCPtr(p)), true);
  }

  public gen(SWIGTYPE_p_giac__fraction p) {
    this(giacJNI.new_gen__SWIG_24(SWIGTYPE_p_giac__fraction.getCPtr(p)), true);
  }

  public gen(String s, context contextptr) {
    this(giacJNI.new_gen__SWIG_25(s, context.getCPtr(contextptr), contextptr), true);
  }

  public gen(SWIGTYPE_p_giac__unary_function_ptr f, int nargs) {
    this(giacJNI.new_gen__SWIG_26(SWIGTYPE_p_giac__unary_function_ptr.getCPtr(f), nargs), true);
  }

  public gen(SWIGTYPE_p_giac__unary_function_ptr f) {
    this(giacJNI.new_gen__SWIG_27(SWIGTYPE_p_giac__unary_function_ptr.getCPtr(f)), true);
  }

  public gen(SWIGTYPE_p_giac__gen_map m) {
    this(giacJNI.new_gen__SWIG_28(SWIGTYPE_p_giac__gen_map.getCPtr(m)), true);
  }

  public gen(SWIGTYPE_p_giac__eqwdata arg0) {
    this(giacJNI.new_gen__SWIG_29(SWIGTYPE_p_giac__eqwdata.getCPtr(arg0)), true);
  }

  public gen(SWIGTYPE_p_giac__grob arg0) {
    this(giacJNI.new_gen__SWIG_30(SWIGTYPE_p_giac__grob.getCPtr(arg0)), true);
  }

  public gen(SWIGTYPE_p_giac__my_mpz arg0) {
    this(giacJNI.new_gen__SWIG_31(SWIGTYPE_p_giac__my_mpz.getCPtr(arg0)), true);
  }

  public SWIGTYPE_p_mpz_t ref_ZINTptr() {
    long cPtr = giacJNI.gen_ref_ZINTptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_mpz_t(cPtr, false);
  }

  public SWIGTYPE_p_giac__real_object ref_REALptr() {
    long cPtr = giacJNI.gen_ref_REALptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__real_object(cPtr, false);
  }

  public gen ref_CPLXptr() {
    long cPtr = giacJNI.gen_ref_CPLXptr(swigCPtr, this);
    return (cPtr == 0) ? null : new gen(cPtr, false);
  }

  public SWIGTYPE_p_giac__identificateur ref_IDNTptr() {
    long cPtr = giacJNI.gen_ref_IDNTptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__identificateur(cPtr, false);
  }

  public SWIGTYPE_p_giac__symbolic ref_SYMBptr() {
    long cPtr = giacJNI.gen_ref_SYMBptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__symbolic(cPtr, false);
  }

  public gen ref_MODptr() {
    long cPtr = giacJNI.gen_ref_MODptr(swigCPtr, this);
    return (cPtr == 0) ? null : new gen(cPtr, false);
  }

  public SWIGTYPE_p_giac__TfractionT_giac__gen_t ref_FRACptr() {
    long cPtr = giacJNI.gen_ref_FRACptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__TfractionT_giac__gen_t(cPtr, false);
  }

  public gen ref_EXTptr() {
    long cPtr = giacJNI.gen_ref_EXTptr(swigCPtr, this);
    return (cPtr == 0) ? null : new gen(cPtr, false);
  }

  public SWIGTYPE_p_giac__polynome ref_POLYptr() {
    long cPtr = giacJNI.gen_ref_POLYptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__polynome(cPtr, false);
  }

  public SWIGTYPE_p_giac__vecteur ref_VECTptr() {
    long cPtr = giacJNI.gen_ref_VECTptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__vecteur(cPtr, false);
  }

  public SWIGTYPE_p_giac__sparse_poly1 ref_SPOL1ptr() {
    long cPtr = giacJNI.gen_ref_SPOL1ptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__sparse_poly1(cPtr, false);
  }

  public SWIGTYPE_p_std__string ref_STRNGptr() {
    long cPtr = giacJNI.gen_ref_STRNGptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_std__string(cPtr, false);
  }

  public SWIGTYPE_p_giac__unary_function_ptr ref_FUNCptr() {
    long cPtr = giacJNI.gen_ref_FUNCptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__unary_function_ptr(cPtr, false);
  }

  public SWIGTYPE_p_giac__gen_user ref_USERptr() {
    long cPtr = giacJNI.gen_ref_USERptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__gen_user(cPtr, false);
  }

  public SWIGTYPE_p_giac__gen_map ref_MAPptr() {
    long cPtr = giacJNI.gen_ref_MAPptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__gen_map(cPtr, false);
  }

  public SWIGTYPE_p_giac__eqwdata ref_EQWptr() {
    long cPtr = giacJNI.gen_ref_EQWptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__eqwdata(cPtr, false);
  }

  public SWIGTYPE_p_giac__grob ref_GROBptr() {
    long cPtr = giacJNI.gen_ref_GROBptr(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_giac__grob(cPtr, false);
  }

  public SWIGTYPE_p_void ref_POINTER_val() {
    long cPtr = giacJNI.gen_ref_POINTER_val(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_void(cPtr, false);
  }

  public boolean in_eval(int level, gen evaled, context contextptr) {
    return giacJNI.gen_in_eval(swigCPtr, this, level, gen.getCPtr(evaled), evaled, context.getCPtr(contextptr), contextptr);
  }

  public gen eval(int level, context contextptr) {
    return new gen(giacJNI.gen_eval(swigCPtr, this, level, context.getCPtr(contextptr), contextptr), true);
  }

  public boolean in_evalf(int level, gen evaled, context contextptr) {
    return giacJNI.gen_in_evalf(swigCPtr, this, level, gen.getCPtr(evaled), evaled, context.getCPtr(contextptr), contextptr);
  }

  public gen evalf(int level, context contextptr) {
    return new gen(giacJNI.gen_evalf(swigCPtr, this, level, context.getCPtr(contextptr), contextptr), true);
  }

  public gen evalf_double(int level, context contextptr) {
    return new gen(giacJNI.gen_evalf_double(swigCPtr, this, level, context.getCPtr(contextptr), contextptr), true);
  }

  public gen evalf2double(int level, context contextptr) {
    return new gen(giacJNI.gen_evalf2double(swigCPtr, this, level, context.getCPtr(contextptr), contextptr), true);
  }

  public int to_int() {
    return giacJNI.gen_to_int(swigCPtr, this);
  }

  public boolean is_real(context contextptr) {
    return giacJNI.gen_is_real(swigCPtr, this, context.getCPtr(contextptr), contextptr);
  }

  public boolean is_cinteger() {
    return giacJNI.gen_is_cinteger(swigCPtr, this);
  }

  public boolean is_integer() {
    return giacJNI.gen_is_integer(swigCPtr, this);
  }

  public boolean is_constant() {
    return giacJNI.gen_is_constant(swigCPtr, this);
  }

  public String print(context contextptr) {
    return giacJNI.gen_print__SWIG_0(swigCPtr, this, context.getCPtr(contextptr), contextptr);
  }

  public String printcharptr() {
    return giacJNI.gen_printcharptr(swigCPtr, this);
  }

  public int sprint(SWIGTYPE_p_std__string sptr, context contextptr) {
    return giacJNI.gen_sprint(swigCPtr, this, SWIGTYPE_p_std__string.getCPtr(sptr), context.getCPtr(contextptr), contextptr);
  }

  public String print_universal(context contextptr) {
    return giacJNI.gen_print_universal(swigCPtr, this, context.getCPtr(contextptr), contextptr);
  }

  public String print() {
    return giacJNI.gen_print__SWIG_1(swigCPtr, this);
  }

  public SWIGTYPE_p_wchar_t wprint(context contextptr) {
    long cPtr = giacJNI.gen_wprint(swigCPtr, this, context.getCPtr(contextptr), contextptr);
    return (cPtr == 0) ? null : new SWIGTYPE_p_wchar_t(cPtr, false);
  }

  public void modify(int i) {
    giacJNI.gen_modify(swigCPtr, this, i);
  }

  public void dbgprint() {
    giacJNI.gen_dbgprint(swigCPtr, this);
  }

  public void uncoerce() {
    giacJNI.gen_uncoerce(swigCPtr, this);
  }

  public gen conj(context contextptr) {
    return new gen(giacJNI.gen_conj(swigCPtr, this, context.getCPtr(contextptr), contextptr), true);
  }

  public gen re(context contextptr) {
    return new gen(giacJNI.gen_re(swigCPtr, this, context.getCPtr(contextptr), contextptr), true);
  }

  public gen im(context contextptr) {
    return new gen(giacJNI.gen_im(swigCPtr, this, context.getCPtr(contextptr), contextptr), true);
  }

  public gen inverse(context contextptr) {
    return new gen(giacJNI.gen_inverse(swigCPtr, this, context.getCPtr(contextptr), contextptr), true);
  }

  public gen squarenorm(context contextptr) {
    return new gen(giacJNI.gen_squarenorm(swigCPtr, this, context.getCPtr(contextptr), contextptr), true);
  }

  public int bindigits() {
    return giacJNI.gen_bindigits(swigCPtr, this);
  }

  public gen operator_at(int i, context contextptr) {
    return new gen(giacJNI.gen_operator_at__SWIG_0(swigCPtr, this, i, context.getCPtr(contextptr), contextptr), true);
  }

  public gen operator_at(gen i, context contextptr) {
    return new gen(giacJNI.gen_operator_at__SWIG_1(swigCPtr, this, gen.getCPtr(i), i, context.getCPtr(contextptr), contextptr), true);
  }

  public gen operator_of(gen i, context contextptr) {
    return new gen(giacJNI.gen_operator_of(swigCPtr, this, gen.getCPtr(i), i, context.getCPtr(contextptr), contextptr), true);
  }

  public boolean islesscomplexthan(gen other) {
    return giacJNI.gen_islesscomplexthan(swigCPtr, this, gen.getCPtr(other), other);
  }

  public boolean is_approx() {
    return giacJNI.gen_is_approx(swigCPtr, this);
  }

  public int symb_size() {
    return giacJNI.gen_symb_size(swigCPtr, this);
  }

  public gen change_subtype(int newsubtype) {
    return new gen(giacJNI.gen_change_subtype(swigCPtr, this, newsubtype), true);
  }

  public boolean is_symb_of_sommet(SWIGTYPE_p_giac__unary_function_ptr u) {
    return giacJNI.gen_is_symb_of_sommet(swigCPtr, this, SWIGTYPE_p_giac__unary_function_ptr.getCPtr(u));
  }

  public gen makegen(int i) {
    return new gen(giacJNI.gen_makegen(swigCPtr, this, i), true);
  }

}
