
import java_swift

/// generated by: genswift.java 'java/lang|java/util|java/sql|java/awt|javax/swing' ///

/// class com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet ///

public enum SwiftHelloTypes_Planet: Int, JNIObjectProtocol, JNIObjectInit {

    case MERCURY, VENUS, EARTH, MARS, JUPITER, SATURN, URANUS, NEPTUNE

    static let enumConstants = try! JavaClass.forName("com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet")
        .getEnumConstants()!.map { SwiftHelloTypes_PlanetForward( javaObject: $0.javaObject ) }

    public func underlier() -> SwiftHelloTypes_PlanetForward {
        return SwiftHelloTypes_Planet.enumConstants[self.rawValue]
    }

    public func localJavaObject(_ locals: UnsafeMutablePointer<[jobject]>) -> jobject? {
        return underlier().localJavaObject( locals )
    }

    public init( javaObject: jobject? ) {
        self = SwiftHelloTypes_Planet( rawValue: JavaEnum( javaObject: javaObject ).ordinal() )!
    }

    /// public static com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.valueOf(java.lang.String)

    private static var valueOf_MethodID_1: jmethodID?

    public static func valueOf( name: String? ) -> SwiftHelloTypes_Planet! {
        return SwiftHelloTypes_PlanetForward.valueOf( name: name )
    }
    public static func valueOf( _ _name: String? ) -> SwiftHelloTypes_Planet! {
        return valueOf( name: _name )
    }

    /// public static com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet[] com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.values()

    private static var values_MethodID_2: jmethodID?

    public static func values() -> [SwiftHelloTypes_Planet]! {
        return SwiftHelloTypes_PlanetForward.values( )
    }

    /// public double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.mass()

    private static var mass_MethodID_3: jmethodID?

    public func mass() -> Double {
        return underlier().mass( )
    }

    /// public double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.radius()

    private static var radius_MethodID_4: jmethodID?

    public func radius() -> Double {
        return underlier().radius( )
    }

    /// public double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.surfaceGravity()

    private static var surfaceGravity_MethodID_5: jmethodID?

    public func surfaceGravity() -> Double {
        return underlier().surfaceGravity( )
    }

    /// public double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.surfaceWeight(double)

    private static var surfaceWeight_MethodID_6: jmethodID?

    public func surfaceWeight( otherMass: Double ) -> Double {
        return underlier().surfaceWeight( otherMass: otherMass )
    }
    public func surfaceWeight( _ _otherMass: Double ) -> Double {
        return surfaceWeight( otherMass: _otherMass )
    }

}


open class SwiftHelloTypes_PlanetForward: JNIObjectForward {

    private static var SwiftHelloTypes_PlanetJNIClass: jclass?

    /// private static final com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet[] com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.$VALUES

    /// public static final com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.EARTH

    private static var EARTH_FieldID: jfieldID?

    open static var EARTH: SwiftHelloTypes_Planet! {
        get {
            let __value = JNIField.GetStaticObjectField( fieldName: "EARTH", fieldType: "Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", fieldCache: &EARTH_FieldID, className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass )
            defer { JNI.DeleteLocalRef( __value ) }
            return __value != nil ? SwiftHelloTypes_Planet( javaObject: __value ) : nil
        }
    }

    /// public static final double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.G

    private static var G_FieldID: jfieldID?

    open static var G: Double {
        get {
            let __value = JNIField.GetStaticDoubleField( fieldName: "G", fieldType: "D", fieldCache: &G_FieldID, className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass )
            return __value
        }
    }

    /// public static final com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.JUPITER

    private static var JUPITER_FieldID: jfieldID?

    open static var JUPITER: SwiftHelloTypes_Planet! {
        get {
            let __value = JNIField.GetStaticObjectField( fieldName: "JUPITER", fieldType: "Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", fieldCache: &JUPITER_FieldID, className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass )
            defer { JNI.DeleteLocalRef( __value ) }
            return __value != nil ? SwiftHelloTypes_Planet( javaObject: __value ) : nil
        }
    }

    /// public static final com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.MARS

    private static var MARS_FieldID: jfieldID?

    open static var MARS: SwiftHelloTypes_Planet! {
        get {
            let __value = JNIField.GetStaticObjectField( fieldName: "MARS", fieldType: "Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", fieldCache: &MARS_FieldID, className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass )
            defer { JNI.DeleteLocalRef( __value ) }
            return __value != nil ? SwiftHelloTypes_Planet( javaObject: __value ) : nil
        }
    }

    /// public static final com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.MERCURY

    private static var MERCURY_FieldID: jfieldID?

    open static var MERCURY: SwiftHelloTypes_Planet! {
        get {
            let __value = JNIField.GetStaticObjectField( fieldName: "MERCURY", fieldType: "Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", fieldCache: &MERCURY_FieldID, className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass )
            defer { JNI.DeleteLocalRef( __value ) }
            return __value != nil ? SwiftHelloTypes_Planet( javaObject: __value ) : nil
        }
    }

    /// public static final com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.NEPTUNE

    private static var NEPTUNE_FieldID: jfieldID?

    open static var NEPTUNE: SwiftHelloTypes_Planet! {
        get {
            let __value = JNIField.GetStaticObjectField( fieldName: "NEPTUNE", fieldType: "Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", fieldCache: &NEPTUNE_FieldID, className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass )
            defer { JNI.DeleteLocalRef( __value ) }
            return __value != nil ? SwiftHelloTypes_Planet( javaObject: __value ) : nil
        }
    }

    /// public static final com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.SATURN

    private static var SATURN_FieldID: jfieldID?

    open static var SATURN: SwiftHelloTypes_Planet! {
        get {
            let __value = JNIField.GetStaticObjectField( fieldName: "SATURN", fieldType: "Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", fieldCache: &SATURN_FieldID, className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass )
            defer { JNI.DeleteLocalRef( __value ) }
            return __value != nil ? SwiftHelloTypes_Planet( javaObject: __value ) : nil
        }
    }

    /// public static final com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.URANUS

    private static var URANUS_FieldID: jfieldID?

    open static var URANUS: SwiftHelloTypes_Planet! {
        get {
            let __value = JNIField.GetStaticObjectField( fieldName: "URANUS", fieldType: "Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", fieldCache: &URANUS_FieldID, className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass )
            defer { JNI.DeleteLocalRef( __value ) }
            return __value != nil ? SwiftHelloTypes_Planet( javaObject: __value ) : nil
        }
    }

    /// public static final com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.VENUS

    private static var VENUS_FieldID: jfieldID?

    open static var VENUS: SwiftHelloTypes_Planet! {
        get {
            let __value = JNIField.GetStaticObjectField( fieldName: "VENUS", fieldType: "Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", fieldCache: &VENUS_FieldID, className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass )
            defer { JNI.DeleteLocalRef( __value ) }
            return __value != nil ? SwiftHelloTypes_Planet( javaObject: __value ) : nil
        }
    }

    /// private final double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.mass

    /// private final double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.radius

    /// public static com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.valueOf(java.lang.String)

    private static var valueOf_MethodID_7: jmethodID?

    open class func valueOf( name: String? ) -> SwiftHelloTypes_Planet! {
        var __locals = [jobject]()
        var __args = [jvalue]( repeating: jvalue(), count: 1 )
        __args[0] = JNIType.toJava( value: name, locals: &__locals )
        let __return = JNIMethod.CallStaticObjectMethod( className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass, methodName: "valueOf", methodSig: "(Ljava/lang/String;)Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", methodCache: &valueOf_MethodID_7, args: &__args, locals: &__locals )
        defer { JNI.DeleteLocalRef( __return ) }
        return __return != nil ? SwiftHelloTypes_Planet( javaObject: __return ) : nil
    }

    open class func valueOf( _ _name: String? ) -> SwiftHelloTypes_Planet! {
        return valueOf( name: _name )
    }

    /// public static java.lang.Enum java.lang.Enum.valueOf(java.lang.Class,java.lang.String)

    private static var valueOf_MethodID_8: jmethodID?

    open class func valueOf( enumType: java_swift.JavaClass?, name: String? ) -> java_swift.JavaEnum! {
        var __locals = [jobject]()
        var __args = [jvalue]( repeating: jvalue(), count: 2 )
        __args[0] = JNIType.toJava( value: enumType, locals: &__locals )
        __args[1] = JNIType.toJava( value: name, locals: &__locals )
        let __return = JNIMethod.CallStaticObjectMethod( className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass, methodName: "valueOf", methodSig: "(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;", methodCache: &valueOf_MethodID_8, args: &__args, locals: &__locals )
        defer { JNI.DeleteLocalRef( __return ) }
        return __return != nil ? java_swift.JavaEnum( javaObject: __return ) : nil
    }

    open class func valueOf( _ _enumType: java_swift.JavaClass?, _ _name: String? ) -> java_swift.JavaEnum! {
        return valueOf( enumType: _enumType, name: _name )
    }

    /// public static com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet[] com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.values()

    private static var values_MethodID_9: jmethodID?

    open class func values() -> [SwiftHelloTypes_Planet]! {
        var __locals = [jobject]()
        var __args = [jvalue]( repeating: jvalue(), count: 1 )
        let __return = JNIMethod.CallStaticObjectMethod( className: "com/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet", classCache: &SwiftHelloTypes_PlanetJNIClass, methodName: "values", methodSig: "()[Lcom/johnholdsworth/swiftbindings/SwiftHelloTypes$Planet;", methodCache: &values_MethodID_9, args: &__args, locals: &__locals )
        return JNIType.toSwift( type: [SwiftHelloTypes_Planet].self, from: __return )
    }


    /// public final int java.lang.Enum.compareTo(java.lang.Enum)

    // Skipping method: false true false false false 

    /// public int java.lang.Enum.compareTo(java.lang.Object)

    // Skipping method: false true false false false 

    /// public final boolean java.lang.Enum.equals(java.lang.Object)

    // Skipping method: false true false false false 

    /// public final native java.lang.Class java.lang.Object.getClass()

    // Skipping method: false true false false false 

    /// public final java.lang.Class java.lang.Enum.getDeclaringClass()

    // Skipping method: false true false false false 

    /// public final int java.lang.Enum.hashCode()

    // Skipping method: false true false false false 

    /// public double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.mass()

    private static var mass_MethodID_10: jmethodID?

    open func mass() -> Double {
        var __locals = [jobject]()
        var __args = [jvalue]( repeating: jvalue(), count: 1 )
        let __return = JNIMethod.CallDoubleMethod( object: javaObject, methodName: "mass", methodSig: "()D", methodCache: &SwiftHelloTypes_PlanetForward.mass_MethodID_10, args: &__args, locals: &__locals )
        return __return
    }


    /// public final java.lang.String java.lang.Enum.name()

    // Skipping method: false true false false false 

    /// public final native void java.lang.Object.notify()

    // Skipping method: false true false false false 

    /// public final native void java.lang.Object.notifyAll()

    // Skipping method: false true false false false 

    /// public final int java.lang.Enum.ordinal()

    // Skipping method: false true false false false 

    /// public double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.radius()

    private static var radius_MethodID_11: jmethodID?

    open func radius() -> Double {
        var __locals = [jobject]()
        var __args = [jvalue]( repeating: jvalue(), count: 1 )
        let __return = JNIMethod.CallDoubleMethod( object: javaObject, methodName: "radius", methodSig: "()D", methodCache: &SwiftHelloTypes_PlanetForward.radius_MethodID_11, args: &__args, locals: &__locals )
        return __return
    }


    /// public double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.surfaceGravity()

    private static var surfaceGravity_MethodID_12: jmethodID?

    open func surfaceGravity() -> Double {
        var __locals = [jobject]()
        var __args = [jvalue]( repeating: jvalue(), count: 1 )
        let __return = JNIMethod.CallDoubleMethod( object: javaObject, methodName: "surfaceGravity", methodSig: "()D", methodCache: &SwiftHelloTypes_PlanetForward.surfaceGravity_MethodID_12, args: &__args, locals: &__locals )
        return __return
    }


    /// public double com.johnholdsworth.swiftbindings.SwiftHelloTypes$Planet.surfaceWeight(double)

    private static var surfaceWeight_MethodID_13: jmethodID?

    open func surfaceWeight( otherMass: Double ) -> Double {
        var __locals = [jobject]()
        var __args = [jvalue]( repeating: jvalue(), count: 1 )
        __args[0] = jvalue( d: otherMass )
        let __return = JNIMethod.CallDoubleMethod( object: javaObject, methodName: "surfaceWeight", methodSig: "(D)D", methodCache: &SwiftHelloTypes_PlanetForward.surfaceWeight_MethodID_13, args: &__args, locals: &__locals )
        return __return
    }

    open func surfaceWeight( _ _otherMass: Double ) -> Double {
        return surfaceWeight( otherMass: _otherMass )
    }

    /// public java.lang.String java.lang.Enum.toString()

    // Skipping method: false true false false false 

    /// public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException

    // Skipping method: false true false false false 

    /// public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException

    // Skipping method: false true false false false 

    /// public final void java.lang.Object.wait() throws java.lang.InterruptedException

    // Skipping method: false true false false false 

}

