static void jni_YGNodeCalculateLayoutJNI()

in java/jni/YGJNIVanilla.cpp [357:395]


static void jni_YGNodeCalculateLayoutJNI(
    JNIEnv* env,
    jobject obj,
    jlong nativePointer,
    jfloat width,
    jfloat height,
    jlongArray nativePointers,
    jobjectArray javaNodes) {

  try {
    void* layoutContext = nullptr;
    auto map = PtrJNodeMapVanilla{};
    if (nativePointers) {
      map = PtrJNodeMapVanilla{nativePointers, javaNodes};
      layoutContext = ↦
    }

    const YGNodeRef root = _jlong2YGNodeRef(nativePointer);
    YGNodeCalculateLayoutWithContext(
        root,
        static_cast<float>(width),
        static_cast<float>(height),
        YGNodeStyleGetDirection(_jlong2YGNodeRef(nativePointer)),
        layoutContext);
    YGTransferLayoutOutputsRecursive(env, obj, root, layoutContext);
  } catch (const YogaJniException& jniException) {
    ScopedLocalRef<jthrowable> throwable = jniException.getThrowable();
    if (throwable.get()) {
      env->Throw(throwable.get());
    }
  } catch (const std::logic_error& ex) {
    env->ExceptionClear();
    jclass cl = env->FindClass("Ljava/lang/IllegalStateException;");
    static const jmethodID methodId = facebook::yoga::vanillajni::getMethodId(
        env, cl, "<init>", "(Ljava/lang/String;)V");
    auto throwable = env->NewObject(cl, methodId, env->NewStringUTF(ex.what()));
    env->Throw(static_cast<jthrowable>(throwable));
  }
}