From 024d360e3ca693b12bc8827e5afcc09ea5b6b2c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateo=20Guzm=C3=A1n?= Date: Sun, 24 Aug 2025 10:54:52 +0200 Subject: [PATCH] Migrate YogaConfigJNIBase to Kotlin --- java/com/facebook/yoga/YogaConfigJNIBase.java | 62 ------------------- java/com/facebook/yoga/YogaConfigJNIBase.kt | 61 ++++++++++++++++++ .../facebook/yoga/YogaConfigJNIFinalizer.java | 8 +-- java/com/facebook/yoga/YogaNodeJNIBase.java | 2 +- 4 files changed, 66 insertions(+), 67 deletions(-) delete mode 100644 java/com/facebook/yoga/YogaConfigJNIBase.java create mode 100644 java/com/facebook/yoga/YogaConfigJNIBase.kt diff --git a/java/com/facebook/yoga/YogaConfigJNIBase.java b/java/com/facebook/yoga/YogaConfigJNIBase.java deleted file mode 100644 index a131cca4..00000000 --- a/java/com/facebook/yoga/YogaConfigJNIBase.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.yoga; - -public abstract class YogaConfigJNIBase extends YogaConfig { - - long mNativePointer; - private YogaLogger mLogger; - - private YogaConfigJNIBase(long nativePointer) { - if (nativePointer == 0) { - throw new IllegalStateException("Failed to allocate native memory"); - } - mNativePointer = nativePointer; - } - - YogaConfigJNIBase() { - this(YogaNative.jni_YGConfigNewJNI()); - } - - YogaConfigJNIBase(boolean useVanillaJNI) { - this(YogaNative.jni_YGConfigNewJNI()); - } - - public void setExperimentalFeatureEnabled(YogaExperimentalFeature feature, boolean enabled) { - YogaNative.jni_YGConfigSetExperimentalFeatureEnabledJNI(mNativePointer, feature.intValue(), enabled); - } - - public void setUseWebDefaults(boolean useWebDefaults) { - YogaNative.jni_YGConfigSetUseWebDefaultsJNI(mNativePointer, useWebDefaults); - } - - public void setPointScaleFactor(float pixelsInPoint) { - YogaNative.jni_YGConfigSetPointScaleFactorJNI(mNativePointer, pixelsInPoint); - } - - public void setErrata(YogaErrata errata) { - YogaNative.jni_YGConfigSetErrataJNI(mNativePointer, errata.intValue()); - } - - public YogaErrata getErrata() { - return YogaErrata.fromInt(YogaNative.jni_YGConfigGetErrataJNI(mNativePointer)); - } - - public void setLogger(YogaLogger logger) { - mLogger = logger; - YogaNative.jni_YGConfigSetLoggerJNI(mNativePointer, logger); - } - - public YogaLogger getLogger() { - return mLogger; - } - - protected long getNativePointer() { - return mNativePointer; - } -} diff --git a/java/com/facebook/yoga/YogaConfigJNIBase.kt b/java/com/facebook/yoga/YogaConfigJNIBase.kt new file mode 100644 index 00000000..ecc92386 --- /dev/null +++ b/java/com/facebook/yoga/YogaConfigJNIBase.kt @@ -0,0 +1,61 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.yoga + +import com.facebook.yoga.YogaNative.jni_YGConfigGetErrataJNI +import com.facebook.yoga.YogaNative.jni_YGConfigNewJNI +import com.facebook.yoga.YogaNative.jni_YGConfigSetErrataJNI +import com.facebook.yoga.YogaNative.jni_YGConfigSetExperimentalFeatureEnabledJNI +import com.facebook.yoga.YogaNative.jni_YGConfigSetLoggerJNI +import com.facebook.yoga.YogaNative.jni_YGConfigSetPointScaleFactorJNI +import com.facebook.yoga.YogaNative.jni_YGConfigSetUseWebDefaultsJNI + +public abstract class YogaConfigJNIBase +private constructor(@JvmField protected var nativePointer: Long) : YogaConfig() { + private var _logger: YogaLogger? = null + + init { + check(nativePointer != 0L) { "Failed to allocate native memory" } + } + + internal constructor() : this(jni_YGConfigNewJNI()) + + internal constructor(useVanillaJNI: Boolean) : this(jni_YGConfigNewJNI()) + + public override fun setExperimentalFeatureEnabled( + feature: YogaExperimentalFeature, + enabled: Boolean + ) { + YogaNative.jni_YGConfigSetExperimentalFeatureEnabledJNI( + nativePointer, feature.intValue(), enabled) + } + + public override fun setUseWebDefaults(useWebDefaults: Boolean) { + YogaNative.jni_YGConfigSetUseWebDefaultsJNI(nativePointer, useWebDefaults) + } + + public override fun setPointScaleFactor(pixelsInPoint: Float) { + YogaNative.jni_YGConfigSetPointScaleFactorJNI(nativePointer, pixelsInPoint) + } + + public override fun setErrata(errata: YogaErrata) { + YogaNative.jni_YGConfigSetErrataJNI(nativePointer, errata.intValue()) + } + + public override fun getErrata(): YogaErrata = + YogaErrata.fromInt(YogaNative.jni_YGConfigGetErrataJNI(nativePointer)) + + public override fun setLogger(logger: YogaLogger) { + _logger = logger + YogaNative.jni_YGConfigSetLoggerJNI(nativePointer, logger) + } + + public override fun getLogger(): YogaLogger = checkNotNull(_logger) { "YogaLogger is not set" } + + public override fun getNativePointer(): Long = nativePointer +} diff --git a/java/com/facebook/yoga/YogaConfigJNIFinalizer.java b/java/com/facebook/yoga/YogaConfigJNIFinalizer.java index a9c3e5f3..a1fcf69c 100644 --- a/java/com/facebook/yoga/YogaConfigJNIFinalizer.java +++ b/java/com/facebook/yoga/YogaConfigJNIFinalizer.java @@ -22,10 +22,10 @@ public class YogaConfigJNIFinalizer extends YogaConfigJNIBase { } public void freeNatives() { - if (mNativePointer != 0) { - long nativePointer = mNativePointer; - mNativePointer = 0; - YogaNative.jni_YGConfigFreeJNI(nativePointer); + if (nativePointer != 0) { + long pointer = nativePointer; + nativePointer = 0; + YogaNative.jni_YGConfigFreeJNI(pointer); } } } diff --git a/java/com/facebook/yoga/YogaNodeJNIBase.java b/java/com/facebook/yoga/YogaNodeJNIBase.java index 38c2f93a..9fb0e519 100644 --- a/java/com/facebook/yoga/YogaNodeJNIBase.java +++ b/java/com/facebook/yoga/YogaNodeJNIBase.java @@ -57,7 +57,7 @@ public abstract class YogaNodeJNIBase extends YogaNode implements Cloneable { } YogaNodeJNIBase(YogaConfig config) { - this(YogaNative.jni_YGNodeNewWithConfigJNI(((YogaConfigJNIBase) config).mNativePointer)); + this(YogaNative.jni_YGNodeNewWithConfigJNI(((YogaConfigJNIBase) config).nativePointer)); mConfig = config; // makes sure the YogaConfig is not garbage collected }