/* ###
 * IP: Apache License 2.0 with LLVM Exceptions
 */
/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 4.0.1
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package SWIG;

public class SBType {
  private transient long swigCPtr;
  protected transient boolean swigCMemOwn;

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

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

  @SuppressWarnings("deprecation")
  protected void finalize() {
    delete();
  }

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

  public SBType() {
    this(lldbJNI.new_SBType__SWIG_0(), true);
  }

  public SBType(SBType rhs) {
    this(lldbJNI.new_SBType__SWIG_1(SBType.getCPtr(rhs), rhs), true);
  }

  public boolean IsValid() {
    return lldbJNI.SBType_IsValid(swigCPtr, this);
  }

  public java.math.BigInteger GetByteSize() {
    return lldbJNI.SBType_GetByteSize(swigCPtr, this);
  }

  public boolean IsPointerType() {
    return lldbJNI.SBType_IsPointerType(swigCPtr, this);
  }

  public boolean IsReferenceType() {
    return lldbJNI.SBType_IsReferenceType(swigCPtr, this);
  }

  public boolean IsFunctionType() {
    return lldbJNI.SBType_IsFunctionType(swigCPtr, this);
  }

  public boolean IsPolymorphicClass() {
    return lldbJNI.SBType_IsPolymorphicClass(swigCPtr, this);
  }

  public boolean IsArrayType() {
    return lldbJNI.SBType_IsArrayType(swigCPtr, this);
  }

  public boolean IsVectorType() {
    return lldbJNI.SBType_IsVectorType(swigCPtr, this);
  }

  public boolean IsTypedefType() {
    return lldbJNI.SBType_IsTypedefType(swigCPtr, this);
  }

  public boolean IsAnonymousType() {
    return lldbJNI.SBType_IsAnonymousType(swigCPtr, this);
  }

  public boolean IsScopedEnumerationType() {
    return lldbJNI.SBType_IsScopedEnumerationType(swigCPtr, this);
  }

  public boolean IsAggregateType() {
    return lldbJNI.SBType_IsAggregateType(swigCPtr, this);
  }

  public SBType GetPointerType() {
    return new SBType(lldbJNI.SBType_GetPointerType(swigCPtr, this), true);
  }

  public SBType GetPointeeType() {
    return new SBType(lldbJNI.SBType_GetPointeeType(swigCPtr, this), true);
  }

  public SBType GetReferenceType() {
    return new SBType(lldbJNI.SBType_GetReferenceType(swigCPtr, this), true);
  }

  public SBType GetTypedefedType() {
    return new SBType(lldbJNI.SBType_GetTypedefedType(swigCPtr, this), true);
  }

  public SBType GetDereferencedType() {
    return new SBType(lldbJNI.SBType_GetDereferencedType(swigCPtr, this), true);
  }

  public SBType GetUnqualifiedType() {
    return new SBType(lldbJNI.SBType_GetUnqualifiedType(swigCPtr, this), true);
  }

  public SBType GetCanonicalType() {
    return new SBType(lldbJNI.SBType_GetCanonicalType(swigCPtr, this), true);
  }

  public SBType GetEnumerationIntegerType() {
    return new SBType(lldbJNI.SBType_GetEnumerationIntegerType(swigCPtr, this), true);
  }

  public SBType GetArrayElementType() {
    return new SBType(lldbJNI.SBType_GetArrayElementType(swigCPtr, this), true);
  }

  public SBType GetArrayType(java.math.BigInteger size) {
    return new SBType(lldbJNI.SBType_GetArrayType(swigCPtr, this, size), true);
  }

  public SBType GetVectorElementType() {
    return new SBType(lldbJNI.SBType_GetVectorElementType(swigCPtr, this), true);
  }

  public BasicType GetBasicType() {
    return BasicType.swigToEnum(lldbJNI.SBType_GetBasicType__SWIG_0(swigCPtr, this));
  }

  public SBType GetBasicType(BasicType type) {
    return new SBType(lldbJNI.SBType_GetBasicType__SWIG_1(swigCPtr, this, type.swigValue()), true);
  }

  public long GetNumberOfFields() {
    return lldbJNI.SBType_GetNumberOfFields(swigCPtr, this);
  }

  public long GetNumberOfDirectBaseClasses() {
    return lldbJNI.SBType_GetNumberOfDirectBaseClasses(swigCPtr, this);
  }

  public long GetNumberOfVirtualBaseClasses() {
    return lldbJNI.SBType_GetNumberOfVirtualBaseClasses(swigCPtr, this);
  }

  public SBTypeMember GetFieldAtIndex(long idx) {
    return new SBTypeMember(lldbJNI.SBType_GetFieldAtIndex(swigCPtr, this, idx), true);
  }

  public SBTypeMember GetDirectBaseClassAtIndex(long idx) {
    return new SBTypeMember(lldbJNI.SBType_GetDirectBaseClassAtIndex(swigCPtr, this, idx), true);
  }

  public SBTypeMember GetVirtualBaseClassAtIndex(long idx) {
    return new SBTypeMember(lldbJNI.SBType_GetVirtualBaseClassAtIndex(swigCPtr, this, idx), true);
  }

  public SBTypeEnumMemberList GetEnumMembers() {
    return new SBTypeEnumMemberList(lldbJNI.SBType_GetEnumMembers(swigCPtr, this), true);
  }

  public SBModule GetModule() {
    return new SBModule(lldbJNI.SBType_GetModule(swigCPtr, this), true);
  }

  public String GetName() {
    return lldbJNI.SBType_GetName(swigCPtr, this);
  }

  public String GetDisplayTypeName() {
    return lldbJNI.SBType_GetDisplayTypeName(swigCPtr, this);
  }

  public TypeClass GetTypeClass() {
    return TypeClass.swigToEnum(lldbJNI.SBType_GetTypeClass(swigCPtr, this));
  }

  public long GetNumberOfTemplateArguments() {
    return lldbJNI.SBType_GetNumberOfTemplateArguments(swigCPtr, this);
  }

  public SBType GetTemplateArgumentType(long idx) {
    return new SBType(lldbJNI.SBType_GetTemplateArgumentType(swigCPtr, this, idx), true);
  }

  public TemplateArgumentKind GetTemplateArgumentKind(long idx) {
    return TemplateArgumentKind.swigToEnum(lldbJNI.SBType_GetTemplateArgumentKind(swigCPtr, this, idx));
  }

  public SBType GetFunctionReturnType() {
    return new SBType(lldbJNI.SBType_GetFunctionReturnType(swigCPtr, this), true);
  }

  public SBTypeList GetFunctionArgumentTypes() {
    return new SBTypeList(lldbJNI.SBType_GetFunctionArgumentTypes(swigCPtr, this), true);
  }

  public long GetNumberOfMemberFunctions() {
    return lldbJNI.SBType_GetNumberOfMemberFunctions(swigCPtr, this);
  }

  public SBTypeMemberFunction GetMemberFunctionAtIndex(long idx) {
    return new SBTypeMemberFunction(lldbJNI.SBType_GetMemberFunctionAtIndex(swigCPtr, this, idx), true);
  }

  public boolean IsTypeComplete() {
    return lldbJNI.SBType_IsTypeComplete(swigCPtr, this);
  }

  public long GetTypeFlags() {
    return lldbJNI.SBType_GetTypeFlags(swigCPtr, this);
  }

  public String __repr__() {
    return lldbJNI.SBType___repr__(swigCPtr, this);
  }

}
