blob: 98fa98bf80840e8fa63e96b34db113a13017314e [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import '../accessors.dart';
import '../jni.dart';
import '../jobject.dart';
import '../jreference.dart';
import '../third_party/generated_bindings.dart';
import '../types.dart';
import 'jboolean.dart';
import 'jbyte.dart';
import 'jcharacter.dart';
import 'jdouble.dart';
import 'jfloat.dart';
import 'jinteger.dart';
import 'jlong.dart';
import 'jshort.dart';
final class JNumberType extends JObjType<JNumber> {
const JNumberType();
@override
String get signature => r"Ljava/lang/Number;";
@override
JNumber fromRef(JObjectPtr ref) => JNumber.fromRef(ref);
@override
JObjType get superType => const JObjectType();
@override
final superCount = 1;
@override
int get hashCode => (JNumberType).hashCode;
@override
bool operator ==(Object other) {
return other.runtimeType == JNumberType && other is JNumberType;
}
}
class JNumber extends JObject {
@override
// ignore: overridden_fields
late final JObjType<JNumber> $type = type;
JNumber.fromRef(
JObjectPtr ref,
) : super.fromRef(ref);
static final _class = Jni.findJClass(r"java/lang/Number");
/// The type which includes information such as the signature of this class.
static const type = JNumberType();
static final _ctorId =
Jni.accessors.getMethodIDOf(_class.reference.pointer, r"<init>", r"()V");
JNumber()
: super.fromRef(Jni.accessors
.newObjectWithArgs(_class.reference.pointer, _ctorId, []).object);
static final _intValueId = Jni.accessors
.getMethodIDOf(_class.reference.pointer, r"intValue", r"()I");
int intValue({bool releaseOriginal = false}) {
reference.ensureNotNull();
final ret = Jni.accessors.callMethodWithArgs(
reference.pointer, _intValueId, JniCallType.intType, []).integer;
if (releaseOriginal) {
release();
}
return ret;
}
static final _longValueId = Jni.accessors
.getMethodIDOf(_class.reference.pointer, r"longValue", r"()J");
int longValue({bool releaseOriginal = false}) {
reference.ensureNotNull();
final ret = Jni.accessors.callMethodWithArgs(
reference.pointer, _longValueId, JniCallType.longType, []).long;
if (releaseOriginal) {
release();
}
return ret;
}
static final _floatValueId = Jni.accessors
.getMethodIDOf(_class.reference.pointer, r"floatValue", r"()F");
double floatValue({bool releaseOriginal = false}) {
reference.ensureNotNull();
final ret = Jni.accessors.callMethodWithArgs(
reference.pointer, _floatValueId, JniCallType.floatType, []).float;
if (releaseOriginal) {
release();
}
return ret;
}
static final _doubleValueId = Jni.accessors
.getMethodIDOf(_class.reference.pointer, r"doubleValue", r"()D");
double doubleValue({bool releaseOriginal = false}) {
reference.ensureNotNull();
final ret = Jni.accessors.callMethodWithArgs(reference.pointer,
_doubleValueId, JniCallType.doubleType, []).doubleFloat;
if (releaseOriginal) {
release();
}
return ret;
}
static final _byteValueId = Jni.accessors
.getMethodIDOf(_class.reference.pointer, r"byteValue", r"()B");
int byteValue({bool releaseOriginal = false}) {
reference.ensureNotNull();
final ret = Jni.accessors.callMethodWithArgs(
reference.pointer, _byteValueId, JniCallType.byteType, []).byte;
if (releaseOriginal) {
release();
}
return ret;
}
static final _shortValueId = Jni.accessors
.getMethodIDOf(_class.reference.pointer, r"shortValue", r"()S");
int shortValue({bool releaseOriginal = false}) {
reference.ensureNotNull();
final ret = Jni.accessors.callMethodWithArgs(
reference.pointer, _shortValueId, JniCallType.shortType, []).short;
if (releaseOriginal) {
release();
}
return ret;
}
}
extension IntToJava on int {
JByte toJByte() => JByte(this);
JShort toJShort() => JShort(this);
JInteger toJInteger() => JInteger(this);
JLong toJLong() => JLong(this);
JCharacter toJCharacter() => JCharacter(this);
}
extension DoubleToJava on double {
JFloat toJFloat() => JFloat(this);
JDouble toJDouble() => JDouble(this);
}
extension BoolToJava on bool {
JBoolean toJBoolean() => JBoolean(this);
}