Fixup Enum Generator

Summary:
https://github.com/facebook/yoga/pull/1116 adds a new enum. The enum generator is out of date with copyright header, and some codemods, but it also looks like there were manual changes, types added, etc since generation. I fixed up the script to incorporate generating the changes folks made manually, and also added an enum that was previously only added manually to the C ABI.

Changelog:
[General][Fixed] - Fixup Yoga Enum Generator

Reviewed By: yungsters

Differential Revision: D39922252

fbshipit-source-id: b678fa9a43a896873d8c434745bdaf3f16fd991f
This commit is contained in:
Nick Gerleman
2022-09-29 22:25:24 -07:00
committed by Facebook GitHub Bot
parent fd180de774
commit 5a18ccdbe2
41 changed files with 320 additions and 162 deletions

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaAlign

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaDimension

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaDirection

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaDisplay

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaEdge

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaExperimentalFeature

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaFlexDirection

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaJustify

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaLogLevel

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaMeasureMode

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaNodeType

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaOverflow

View File

@@ -1,14 +1,17 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaPositionType
{
Static,
Relative,
Absolute,
}

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
[System.Flags]

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaUnit

View File

@@ -1,10 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*/
// @generated by enums.py
namespace Facebook.Yoga
{
public enum YogaWrap

103
enums.py
View File

@@ -1,4 +1,4 @@
# Copyright (c) Facebook, Inc. and its affiliates.
# 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.
@@ -31,7 +31,7 @@ ENUMS = {
"SpaceBetween",
"SpaceAround",
],
"PositionType": ["Relative", "Absolute"],
"PositionType": ["Static", "Relative", "Absolute"],
"Display": ["Flex", "None"],
"Wrap": ["NoWrap", "Wrap", "WrapReverse"],
"MeasureMode": ["Undefined", "Exactly", "AtMost"],
@@ -56,14 +56,26 @@ ENUMS = {
"PrintOptions": [("Layout", 1), ("Style", 2), ("Children", 4)],
}
LICENSE = """/**
* Copyright (c) Facebook, Inc. and its affiliates.
# Generated Java enums used to emit @DoNotStrip, but D17519844 removed them
# manually from all but YogaLogLevel. TODO: Is it safe to remove from it as
# well?
DO_NOT_STRIP = ["LogLevel"]
def get_license(ext):
prologue = "/**" if ext == "js" else "/*"
return """{}
* 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.
*/
"""
// @generated by enums.py
""".format(
prologue
)
def to_java_upper(symbol):
@@ -92,32 +104,40 @@ root = os.path.dirname(os.path.abspath(__file__))
# write out C & Objective-C headers
with open(root + "/yoga/YGEnums.h", "w") as f:
f.write(LICENSE)
f.write("#pragma once\n\n")
f.write(get_license("cpp"))
f.write("#pragma once\n")
f.write("// clang-format: off\n\n")
f.write('#include "YGMacros.h"\n\n')
f.write("YG_EXTERN_C_BEGIN\n\n")
for name, values in sorted(ENUMS.items()):
f.write("#define YG%sCount %s\n" % (name, len(values)))
f.write("typedef YG_ENUM_BEGIN(YG%s) {\n" % name)
f.write('YG_EXTERN_C_BEGIN\n\n')
items = sorted(ENUMS.items())
for name, values in items:
if (isinstance(values[0], tuple)):
f.write("YG_ENUM_DECL(\n")
else:
f.write("YG_ENUM_SEQ_DECL(\n")
f.write(" YG%s,\n" % name)
for value in values:
if isinstance(value, tuple):
f.write(" YG%s%s = %d,\n" % (name, value[0], value[1]))
f.write(" YG%s%s = %d" % (name, value[0], value[1]))
else:
f.write(" YG%s%s,\n" % (name, value))
f.write("} YG_ENUM_END(YG%s);\n" % name)
f.write(
"WIN_EXPORT const char *YG%sToString(const YG%s value);\n" % (name, name)
)
f.write(" YG%s%s" % (name, value))
if value == values[-1]:
f.write(")\n")
else:
f.write(",\n")
f.write("\n")
f.write("YG_EXTERN_C_END\n")
# write out C body for printing
with open(root + "/yoga/YGEnums.cpp", "w") as f:
f.write(LICENSE)
f.write(get_license("cpp"))
f.write('#include "YGEnums.h"\n\n')
for name, values in sorted(ENUMS.items()):
f.write("const char *YG%sToString(const YG%s value){\n" % (name, name))
f.write(" switch(value){\n")
items = sorted(ENUMS.items())
for name, values in items:
f.write("const char* YG%sToString(const YG%s value) {\n" % (name, name))
f.write(" switch (value) {\n")
for value in values:
if isinstance(value, tuple):
f.write(" case YG%s%s:\n" % (name, value[0]))
@@ -127,13 +147,16 @@ with open(root + "/yoga/YGEnums.cpp", "w") as f:
f.write(' return "%s";\n' % to_log_lower(value))
f.write(" }\n")
f.write(' return "unknown";\n')
f.write("}\n\n")
f.write("}\n")
if name != items[-1][0]:
f.write("\n")
# write out java files
for name, values in sorted(ENUMS.items()):
with open(root + "/java/com/facebook/yoga/Yoga%s.java" % name, "w") as f:
f.write(LICENSE.replace("/**", "/*", 1))
f.write(get_license("java"))
f.write("package com.facebook.yoga;\n\n")
if name in DO_NOT_STRIP:
f.write("import com.facebook.proguard.annotations.DoNotStrip;\n\n")
f.write("@DoNotStrip\n")
f.write("public enum Yoga%s {\n" % name)
@@ -150,7 +173,7 @@ for name, values in sorted(ENUMS.items()):
else:
f.write("__EMPTY(-1);")
f.write("\n")
f.write(" private int mIntValue;\n")
f.write(" private final int mIntValue;\n")
f.write("\n")
f.write(" Yoga%s(int intValue) {\n" % name)
f.write(" mIntValue = intValue;\n")
@@ -160,6 +183,8 @@ for name, values in sorted(ENUMS.items()):
f.write(" return mIntValue;\n")
f.write(" }\n")
f.write("\n")
if name in DO_NOT_STRIP:
f.write(" @DoNotStrip\n")
f.write(" public static Yoga%s fromInt(int value) {\n" % name)
f.write(" switch (value) {\n")
for value in values:
@@ -182,7 +207,7 @@ for name, values in sorted(ENUMS.items()):
# write out csharp files
for name, values in sorted(ENUMS.items()):
with open(root + "/csharp/Facebook.Yoga/Yoga%s.cs" % name, "w") as f:
f.write(LICENSE)
f.write(get_license("cs"))
f.write("namespace Facebook.Yoga\n{\n")
if isinstance(next(iter(values or []), None), tuple):
f.write(" [System.Flags]\n")
@@ -197,9 +222,12 @@ for name, values in sorted(ENUMS.items()):
# write out javascript file
with open(root + "/javascript/sources/YGEnums.js", "w") as f:
f.write(LICENSE)
f.write("module.exports = {\n\n")
for name, values in sorted(ENUMS.items()):
f.write(get_license("js"))
f.write("// @flow\n")
f.write("// @format\n")
f.write("const CONSTANTS = {\n")
items = sorted(ENUMS.items())
for name, values in items:
f.write(" %s_COUNT: %s,\n" % (to_java_upper(name), len(values)))
base = 0
for value in values:
@@ -214,5 +242,24 @@ with open(root + "/javascript/sources/YGEnums.js", "w") as f:
" %s_%s: %d,\n" % (to_java_upper(name), to_java_upper(value), base)
)
base += 1
if name != items[-1][0]:
f.write("\n")
f.write("};\n")
for name, values in sorted(ENUMS.items()):
f.write("export type Yoga${} =\n".format(name))
for value in values:
unpackedValue = value[0] if isinstance(value, tuple) else value
f.write(
" | typeof CONSTANTS.{}_{}".format(
to_java_upper(name), to_java_upper(unpackedValue)
)
)
if values[-1] == value:
f.write(";\n")
else:
f.write("\n")
f.write("\n")
f.write("module.exports = CONSTANTS;\n")

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaAlign {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaDimension {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaDirection {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaDisplay {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaEdge {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaExperimentalFeature {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaFlexDirection {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaJustify {
@@ -32,8 +34,7 @@ public enum YogaJustify {
case 2: return FLEX_END;
case 3: return SPACE_BETWEEN;
case 4: return SPACE_AROUND;
case 5:
return SPACE_EVENLY;
case 5: return SPACE_EVENLY;
default: throw new IllegalArgumentException("Unknown enum value: " + value);
}
}

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
import com.facebook.proguard.annotations.DoNotStrip;

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaMeasureMode {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaNodeType {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaOverflow {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaPositionType {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaPrintOptions {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaUnit {

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
package com.facebook.yoga;
public enum YogaWrap {

View File

@@ -1,13 +1,14 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
*
* @flow
* @format
*/
// @generated by enums.py
// @flow
// @format
const CONSTANTS = {
ALIGN_COUNT: 8,
ALIGN_AUTO: 0,
@@ -82,9 +83,10 @@ const CONSTANTS = {
OVERFLOW_HIDDEN: 1,
OVERFLOW_SCROLL: 2,
POSITION_TYPE_COUNT: 2,
POSITION_TYPE_RELATIVE: 0,
POSITION_TYPE_ABSOLUTE: 1,
POSITION_TYPE_COUNT: 3,
POSITION_TYPE_STATIC: 0,
POSITION_TYPE_RELATIVE: 1,
POSITION_TYPE_ABSOLUTE: 2,
PRINT_OPTIONS_COUNT: 3,
PRINT_OPTIONS_LAYOUT: 1,
@@ -102,41 +104,28 @@ const CONSTANTS = {
WRAP_WRAP: 1,
WRAP_WRAP_REVERSE: 2,
};
export type Yoga$JustifyContent =
| typeof CONSTANTS.JUSTIFY_CENTER
| typeof CONSTANTS.JUSTIFY_FLEX_END
| typeof CONSTANTS.JUSTIFY_FLEX_START
| typeof CONSTANTS.JUSTIFY_SPACE_AROUND
| typeof CONSTANTS.JUSTIFY_SPACE_BETWEEN
| typeof CONSTANTS.JUSTIFY_SPACE_EVENLY;
export type Yoga$Align =
| typeof CONSTANTS.ALIGN_AUTO
| typeof CONSTANTS.ALIGN_BASELINE
| typeof CONSTANTS.ALIGN_FLEX_START
| typeof CONSTANTS.ALIGN_CENTER
| typeof CONSTANTS.ALIGN_FLEX_END
| typeof CONSTANTS.ALIGN_FLEX_START
| typeof CONSTANTS.ALIGN_SPACE_AROUND
| typeof CONSTANTS.ALIGN_STRETCH
| typeof CONSTANTS.ALIGN_BASELINE
| typeof CONSTANTS.ALIGN_SPACE_BETWEEN
| typeof CONSTANTS.ALIGN_STRETCH;
| typeof CONSTANTS.ALIGN_SPACE_AROUND;
export type Yoga$FlexDirection =
| typeof CONSTANTS.FLEX_DIRECTION_COLUMN
| typeof CONSTANTS.FLEX_DIRECTION_COLUMN_REVERSE
| typeof CONSTANTS.FLEX_DIRECTION_COUNT
| typeof CONSTANTS.FLEX_DIRECTION_ROW
| typeof CONSTANTS.FLEX_DIRECTION_ROW_REVERSE;
export type Yoga$Dimension =
| typeof CONSTANTS.DIMENSION_WIDTH
| typeof CONSTANTS.DIMENSION_HEIGHT;
export type Yoga$Direction =
| typeof CONSTANTS.DIRECTION_INHERIT
| typeof CONSTANTS.DIRECTION_LTR
| typeof CONSTANTS.DIRECTION_RTL;
export type Yoga$FlexWrap =
| typeof CONSTANTS.WRAP_NO_WRAP
| typeof CONSTANTS.WRAP_WRAP
| typeof CONSTANTS.WRAP_WRAP_REVERSE;
export type Yoga$Display =
| typeof CONSTANTS.DISPLAY_FLEX
| typeof CONSTANTS.DISPLAY_NONE;
export type Yoga$Edge =
| typeof CONSTANTS.EDGE_LEFT
@@ -149,25 +138,64 @@ export type Yoga$Edge =
| typeof CONSTANTS.EDGE_VERTICAL
| typeof CONSTANTS.EDGE_ALL;
export type Yoga$Display =
| typeof CONSTANTS.DISPLAY_FLEX
| typeof CONSTANTS.DISPLAY_NONE;
export type Yoga$ExperimentalFeature =
| typeof CONSTANTS.EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS;
export type Yoga$Unit =
| typeof CONSTANTS.UNIT_AUTO
| typeof CONSTANTS.UNIT_PERCENT
| typeof CONSTANTS.UNIT_POINT
| typeof CONSTANTS.UNIT_UNDEFINED;
export type Yoga$FlexDirection =
| typeof CONSTANTS.FLEX_DIRECTION_COLUMN
| typeof CONSTANTS.FLEX_DIRECTION_COLUMN_REVERSE
| typeof CONSTANTS.FLEX_DIRECTION_ROW
| typeof CONSTANTS.FLEX_DIRECTION_ROW_REVERSE;
export type Yoga$Justify =
| typeof CONSTANTS.JUSTIFY_FLEX_START
| typeof CONSTANTS.JUSTIFY_CENTER
| typeof CONSTANTS.JUSTIFY_FLEX_END
| typeof CONSTANTS.JUSTIFY_SPACE_BETWEEN
| typeof CONSTANTS.JUSTIFY_SPACE_AROUND
| typeof CONSTANTS.JUSTIFY_SPACE_EVENLY;
export type Yoga$LogLevel =
| typeof CONSTANTS.LOG_LEVEL_ERROR
| typeof CONSTANTS.LOG_LEVEL_WARN
| typeof CONSTANTS.LOG_LEVEL_INFO
| typeof CONSTANTS.LOG_LEVEL_DEBUG
| typeof CONSTANTS.LOG_LEVEL_VERBOSE
| typeof CONSTANTS.LOG_LEVEL_FATAL;
export type Yoga$MeasureMode =
| typeof CONSTANTS.MEASURE_MODE_UNDEFINED
| typeof CONSTANTS.MEASURE_MODE_EXACTLY
| typeof CONSTANTS.MEASURE_MODE_AT_MOST;
export type Yoga$NodeType =
| typeof CONSTANTS.NODE_TYPE_DEFAULT
| typeof CONSTANTS.NODE_TYPE_TEXT;
export type Yoga$Overflow =
| typeof CONSTANTS.OVERFLOW_VISIBLE
| typeof CONSTANTS.OVERFLOW_HIDDEN
| typeof CONSTANTS.OVERFLOW_SCROLL
| typeof CONSTANTS.OVERFLOW_VISIBLE;
| typeof CONSTANTS.OVERFLOW_SCROLL;
export type Yoga$PositionType =
| typeof CONSTANTS.POSITION_TYPE_ABSOLUTE
| typeof CONSTANTS.POSITION_TYPE_RELATIVE;
| typeof CONSTANTS.POSITION_TYPE_STATIC
| typeof CONSTANTS.POSITION_TYPE_RELATIVE
| typeof CONSTANTS.POSITION_TYPE_ABSOLUTE;
export type Yoga$ExperimentalFeature = typeof CONSTANTS.EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS;
export type Yoga$PrintOptions =
| typeof CONSTANTS.PRINT_OPTIONS_LAYOUT
| typeof CONSTANTS.PRINT_OPTIONS_STYLE
| typeof CONSTANTS.PRINT_OPTIONS_CHILDREN;
export type Yoga$Unit =
| typeof CONSTANTS.UNIT_UNDEFINED
| typeof CONSTANTS.UNIT_POINT
| typeof CONSTANTS.UNIT_PERCENT
| typeof CONSTANTS.UNIT_AUTO;
export type Yoga$Wrap =
| typeof CONSTANTS.WRAP_NO_WRAP
| typeof CONSTANTS.WRAP_WRAP
| typeof CONSTANTS.WRAP_WRAP_REVERSE;
module.exports = CONSTANTS;

View File

@@ -1,5 +1,5 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
@@ -38,11 +38,11 @@ if (!ran) {
module.exports = Yoga(ret.bind, ret.lib);
export type {
Yoga$JustifyContent,
Yoga$Justify,
Yoga$Align,
Yoga$FlexDirection,
Yoga$Direction,
Yoga$FlexWrap,
Yoga$Wrap,
Yoga$Edge,
Yoga$Display,
Yoga$Unit,

View File

@@ -1,5 +1,5 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
@@ -8,16 +8,17 @@
* @format
*/
const CONSTANTS = require('./YGEnums');
import type {
Yoga$Edge,
Yoga$FlexWrap,
Yoga$Wrap,
Yoga$Align,
Yoga$FlexDirection,
Yoga$Direction,
Yoga$PositionType,
Yoga$Overflow,
Yoga$JustifyContent,
Yoga$Justify,
Yoga$Display,
Yoga$ExperimentalFeature,
} from './YGEnums';
@@ -151,9 +152,9 @@ export type Yoga$Node = {
getFlexDirection(): Yoga$FlexDirection,
getFlexGrow(): number,
getFlexShrink(): number,
getFlexWrap(): Yoga$FlexWrap,
getFlexWrap(): Yoga$Wrap,
getHeight(): Value,
getJustifyContent(): Yoga$JustifyContent,
getJustifyContent(): Yoga$Justify,
getMargin(edge: Yoga$Edge): Value,
getMaxHeight(): Value,
getMaxWidth(): Value,
@@ -182,11 +183,11 @@ export type Yoga$Node = {
setFlexDirection(flexDirection: Yoga$FlexDirection): void,
setFlexGrow(flexGrow: number): void,
setFlexShrink(flexShrink: number): void,
setFlexWrap(flexWrap: Yoga$FlexWrap): void,
setFlexWrap(flexWrap: Yoga$Wrap): void,
setHeight(height: number | string): void,
setHeightAuto(): void,
setHeightPercent(height: number): void,
setJustifyContent(justifyContent: Yoga$JustifyContent): void,
setJustifyContent(justifyContent: Yoga$Justify): void,
setMargin(edge: Yoga$Edge, margin: number): void,
setMarginAuto(edge: Yoga$Edge): void,
setMarginPercent(edge: Yoga$Edge, margin: number): void,

View File

@@ -1,5 +1,5 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
@@ -13,11 +13,11 @@ const nbind = require('nbind');
const {bind, lib} = nbind.init(__dirname + '/../');
module.exports = Yoga(bind, lib);
export type {
Yoga$JustifyContent,
Yoga$Justify,
Yoga$Align,
Yoga$FlexDirection,
Yoga$Direction,
Yoga$FlexWrap,
Yoga$Wrap,
Yoga$Edge,
Yoga$Display,
Yoga$Unit,

View File

@@ -1,5 +1,5 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
* 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.
@@ -8,6 +8,7 @@
* @format
*/
import {Record, List} from 'immutable';
import type {RecordOf} from 'immutable';
import PositionRecord from './PositionRecord';
@@ -16,9 +17,9 @@ import yoga from 'yoga-layout/dist/entry-browser';
import type {
Yoga$Align,
Yoga$JustifyContent,
Yoga$Justify,
Yoga$FlexDirection,
Yoga$FlexWrap,
Yoga$Wrap,
Yoga$PositionType,
} from 'yoga-layout';
@@ -29,7 +30,7 @@ export type LayoutRecordT = RecordOf<{
minHeight?: ?number,
maxWidth?: ?number,
maxHeight?: ?number,
justifyContent?: Yoga$JustifyContent,
justifyContent?: Yoga$Justify,
padding: PositionRecordT,
border: PositionRecordT,
margin: PositionRecordT,
@@ -43,7 +44,7 @@ export type LayoutRecordT = RecordOf<{
flexGrow?: number,
flexShrink?: number,
padding?: number,
flexWrap?: Yoga$FlexWrap,
flexWrap?: Yoga$Wrap,
aspectRatio?: number,
children?: List<LayoutRecordT>,
minWidth?: number,

View File

@@ -5,6 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
#include "YGEnums.h"
const char* YGAlignToString(const YGAlign value) {

View File

@@ -5,53 +5,13 @@
* LICENSE file in the root directory of this source tree.
*/
// @generated by enums.py
#pragma once
// clang-format: off
#include "YGMacros.h"
#ifdef __cplusplus
namespace facebook {
namespace yoga {
namespace enums {
template <typename T>
constexpr int count(); // can't use `= delete` due to a defect in clang < 3.9
namespace detail {
template <int... xs>
constexpr int n() {
return sizeof...(xs);
}
} // namespace detail
} // namespace enums
} // namespace yoga
} // namespace facebook
#endif
#define YG_ENUM_DECL(NAME, ...) \
typedef YG_ENUM_BEGIN(NAME){__VA_ARGS__} YG_ENUM_END(NAME); \
WIN_EXPORT const char* NAME##ToString(NAME);
#ifdef __cplusplus
#define YG_ENUM_SEQ_DECL(NAME, ...) \
YG_ENUM_DECL(NAME, __VA_ARGS__) \
YG_EXTERN_C_END \
namespace facebook { \
namespace yoga { \
namespace enums { \
template <> \
constexpr int count<NAME>() { \
return detail::n<__VA_ARGS__>(); \
} \
} \
} \
} \
YG_EXTERN_C_BEGIN
#else
#define YG_ENUM_SEQ_DECL YG_ENUM_DECL
#endif
YG_EXTERN_C_BEGIN
YG_ENUM_SEQ_DECL(
@@ -63,9 +23,12 @@ YG_ENUM_SEQ_DECL(
YGAlignStretch,
YGAlignBaseline,
YGAlignSpaceBetween,
YGAlignSpaceAround);
YGAlignSpaceAround)
YG_ENUM_SEQ_DECL(YGDimension, YGDimensionWidth, YGDimensionHeight)
YG_ENUM_SEQ_DECL(
YGDimension,
YGDimensionWidth,
YGDimensionHeight)
YG_ENUM_SEQ_DECL(
YGDirection,
@@ -73,7 +36,10 @@ YG_ENUM_SEQ_DECL(
YGDirectionLTR,
YGDirectionRTL)
YG_ENUM_SEQ_DECL(YGDisplay, YGDisplayFlex, YGDisplayNone)
YG_ENUM_SEQ_DECL(
YGDisplay,
YGDisplayFlex,
YGDisplayNone)
YG_ENUM_SEQ_DECL(
YGEdge,
@@ -87,7 +53,9 @@ YG_ENUM_SEQ_DECL(
YGEdgeVertical,
YGEdgeAll)
YG_ENUM_SEQ_DECL(YGExperimentalFeature, YGExperimentalFeatureWebFlexBasis)
YG_ENUM_SEQ_DECL(
YGExperimentalFeature,
YGExperimentalFeatureWebFlexBasis)
YG_ENUM_SEQ_DECL(
YGFlexDirection,
@@ -120,7 +88,10 @@ YG_ENUM_SEQ_DECL(
YGMeasureModeExactly,
YGMeasureModeAtMost)
YG_ENUM_SEQ_DECL(YGNodeType, YGNodeTypeDefault, YGNodeTypeText)
YG_ENUM_SEQ_DECL(
YGNodeType,
YGNodeTypeDefault,
YGNodeTypeText)
YG_ENUM_SEQ_DECL(
YGOverflow,
@@ -147,9 +118,10 @@ YG_ENUM_SEQ_DECL(
YGUnitPercent,
YGUnitAuto)
YG_ENUM_SEQ_DECL(YGWrap, YGWrapNoWrap, YGWrapWrap, YGWrapWrapReverse)
YG_ENUM_SEQ_DECL(
YGWrap,
YGWrapNoWrap,
YGWrapWrap,
YGWrapWrapReverse)
YG_EXTERN_C_END
#undef YG_ENUM_DECL
#undef YG_ENUM_SEQ_DECL

View File

@@ -40,6 +40,49 @@
#define YG_ENUM_END(name) name
#endif
#ifdef __cplusplus
namespace facebook {
namespace yoga {
namespace enums {
template <typename T>
constexpr int count(); // can't use `= delete` due to a defect in clang < 3.9
namespace detail {
template <int... xs>
constexpr int n() {
return sizeof...(xs);
}
} // namespace detail
} // namespace enums
} // namespace yoga
} // namespace facebook
#endif
#define YG_ENUM_DECL(NAME, ...) \
typedef YG_ENUM_BEGIN(NAME){__VA_ARGS__} YG_ENUM_END(NAME); \
WIN_EXPORT const char* NAME##ToString(NAME);
#ifdef __cplusplus
#define YG_ENUM_SEQ_DECL(NAME, ...) \
YG_ENUM_DECL(NAME, __VA_ARGS__) \
YG_EXTERN_C_END \
namespace facebook { \
namespace yoga { \
namespace enums { \
template <> \
constexpr int count<NAME>() { \
return detail::n<__VA_ARGS__>(); \
} \
} \
} \
} \
YG_EXTERN_C_BEGIN
#else
#define YG_ENUM_SEQ_DECL YG_ENUM_DECL
#endif
#ifdef __GNUC__
#define YG_DEPRECATED __attribute__((deprecated))
#elif defined(_MSC_VER)