diff --git a/java/jni/YGJNI.cpp b/java/jni/YGJNI.cpp index 88e325d2..595fe204 100644 --- a/java/jni/YGJNI.cpp +++ b/java/jni/YGJNI.cpp @@ -16,6 +16,7 @@ #include "YGJTypes.h" #include "YGJNIVanilla.h" +#include "YGJNI.h" using namespace facebook::jni; using namespace std; @@ -76,59 +77,9 @@ const short int LAYOUT_BORDER_START_INDEX = 14; namespace { -union YGNodeContext { - uintptr_t edgesSet = 0; - void* asVoidPtr; -}; - const int DOES_LEGACY_STRETCH_BEHAVIOUR = 8; const int HAS_NEW_LAYOUT = 16; -class YGNodeEdges { - uintptr_t edges_; - -public: - enum Edge { - MARGIN = 1, - PADDING = 2, - BORDER = 4, - }; - - YGNodeEdges(YGNodeRef node) { - auto context = YGNodeContext{}; - context.asVoidPtr = node->getContext(); - edges_ = context.edgesSet; - } - - void setOn(YGNodeRef node) { - auto context = YGNodeContext{}; - context.edgesSet = edges_; - node->setContext(context.asVoidPtr); - } - - bool has(Edge edge) { return (edges_ & edge) == edge; } - - YGNodeEdges& add(Edge edge) { - edges_ |= edge; - return *this; - } - - int get() { return edges_; } -}; - -struct YogaValue { - static constexpr jint NAN_BYTES = 0x7fc00000; - - static jlong asJavaLong(const YGValue& value) { - uint32_t valueBytes = 0; - memcpy(&valueBytes, &value.value, sizeof valueBytes); - return ((jlong) value.unit) << 32 | valueBytes; - } - constexpr static jlong undefinedAsJavaLong() { - return ((jlong) YGUnitUndefined) << 32 | NAN_BYTES; - } -}; - } // namespace static inline local_ref YGNodeJobject( diff --git a/java/jni/YGJNI.h b/java/jni/YGJNI.h new file mode 100644 index 00000000..f0c489c1 --- /dev/null +++ b/java/jni/YGJNI.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. + */ +namespace { + +union YGNodeContext { + uintptr_t edgesSet = 0; + void* asVoidPtr; +}; + +class YGNodeEdges { + uintptr_t edges_; + +public: + enum Edge { + MARGIN = 1, + PADDING = 2, + BORDER = 4, + }; + + YGNodeEdges(YGNodeRef node) { + auto context = YGNodeContext{}; + context.asVoidPtr = node->getContext(); + edges_ = context.edgesSet; + } + + void setOn(YGNodeRef node) { + auto context = YGNodeContext{}; + context.edgesSet = edges_; + node->setContext(context.asVoidPtr); + } + + bool has(Edge edge) { return (edges_ & edge) == edge; } + + YGNodeEdges& add(Edge edge) { + edges_ |= edge; + return *this; + } + + int get() { return edges_; } +}; + +struct YogaValue { + static constexpr jint NAN_BYTES = 0x7fc00000; + + static jlong asJavaLong(const YGValue& value) { + uint32_t valueBytes = 0; + memcpy(&valueBytes, &value.value, sizeof valueBytes); + return ((jlong) value.unit) << 32 | valueBytes; + } + constexpr static jlong undefinedAsJavaLong() { + return ((jlong) YGUnitUndefined) << 32 | NAN_BYTES; + } +}; +} // namespace