Compare commits

..

1 Commits

Author SHA1 Message Date
Mateo Guzmán
024d360e3c Migrate YogaConfigJNIBase to Kotlin 2025-08-24 10:54:52 +02:00
4 changed files with 66 additions and 67 deletions

View File

@@ -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;
}
}

View File

@@ -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
}

View File

@@ -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);
}
}
}

View File

@@ -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
}