Generate enums in sorted order

Summary:
This PR forces the order of the generated enums in alphabetically order. This is needed to have a predictable order of the enums across different python versions. Which reduces the pain for merging multiple enum additions.
Closes https://github.com/facebook/yoga/pull/370

Reviewed By: gkassabli

Differential Revision: D4501140

Pulled By: emilsjolander

fbshipit-source-id: 66c0ed9e4ea7a5990578b53b0a7e400c13dd53a9
This commit is contained in:
Lukas Wöhrl
2017-02-03 04:21:50 -08:00
committed by Facebook Github Bot
parent d62ca8c518
commit 511a129a7e
3 changed files with 134 additions and 113 deletions

View File

@@ -125,7 +125,7 @@ with open(root + '/yoga/YGEnums.h', 'w') as f:
f.write('#pragma once\n\n') f.write('#pragma once\n\n')
f.write('#include "YGMacros.h"\n\n') f.write('#include "YGMacros.h"\n\n')
f.write('YG_EXTERN_C_BEGIN\n\n') f.write('YG_EXTERN_C_BEGIN\n\n')
for name, values in ENUMS.items(): for name, values in sorted(ENUMS.items()):
f.write('#define YG%sCount %s\n' % (name, len(values))) f.write('#define YG%sCount %s\n' % (name, len(values)))
f.write('typedef YG_ENUM_BEGIN(YG%s) {\n' % name) f.write('typedef YG_ENUM_BEGIN(YG%s) {\n' % name)
for value in values: for value in values:
@@ -138,7 +138,7 @@ with open(root + '/yoga/YGEnums.h', 'w') as f:
f.write('YG_EXTERN_C_END\n') f.write('YG_EXTERN_C_END\n')
# write out java files # write out java files
for name, values in ENUMS.items(): for name, values in sorted(ENUMS.items()):
with open(root + '/java/com/facebook/yoga/Yoga%s.java' % name, 'w') as f: with open(root + '/java/com/facebook/yoga/Yoga%s.java' % name, 'w') as f:
f.write(LICENSE) f.write(LICENSE)
f.write('package com.facebook.yoga;\n\n') f.write('package com.facebook.yoga;\n\n')
@@ -181,7 +181,7 @@ for name, values in ENUMS.items():
f.write('}\n') f.write('}\n')
# write out csharp files # write out csharp files
for name, values in ENUMS.items(): for name, values in sorted(ENUMS.items()):
with open(root + '/csharp/Facebook.Yoga/Yoga%s.cs' % name, 'w') as f: with open(root + '/csharp/Facebook.Yoga/Yoga%s.cs' % name, 'w') as f:
f.write(LICENSE) f.write(LICENSE)
f.write('namespace Facebook.Yoga\n{\n') f.write('namespace Facebook.Yoga\n{\n')
@@ -198,7 +198,7 @@ for name, values in ENUMS.items():
with open(root + '/javascript/sources/YGEnums.js', 'w') as f: with open(root + '/javascript/sources/YGEnums.js', 'w') as f:
f.write(LICENSE) f.write(LICENSE)
f.write('module.exports = {\n\n') f.write('module.exports = {\n\n')
for name, values in ENUMS.items(): for name, values in sorted(ENUMS.items()):
f.write(' %s_COUNT: %s,\n' % (to_java_upper(name), len(values))) f.write(' %s_COUNT: %s,\n' % (to_java_upper(name), len(values)))
base = 0 base = 0
for value in values: for value in values:

View File

@@ -9,21 +9,22 @@
module.exports = { module.exports = {
FLEX_DIRECTION_COUNT: 4, ALIGN_COUNT: 6,
FLEX_DIRECTION_COLUMN: 0, ALIGN_AUTO: 0,
FLEX_DIRECTION_COLUMN_REVERSE: 1, ALIGN_FLEX_START: 1,
FLEX_DIRECTION_ROW: 2, ALIGN_CENTER: 2,
FLEX_DIRECTION_ROW_REVERSE: 3, ALIGN_FLEX_END: 3,
ALIGN_STRETCH: 4,
ALIGN_BASELINE: 5,
MEASURE_MODE_COUNT: 3, DIMENSION_COUNT: 2,
MEASURE_MODE_UNDEFINED: 0, DIMENSION_WIDTH: 0,
MEASURE_MODE_EXACTLY: 1, DIMENSION_HEIGHT: 1,
MEASURE_MODE_AT_MOST: 2,
PRINT_OPTIONS_COUNT: 3, DIRECTION_COUNT: 3,
PRINT_OPTIONS_LAYOUT: 1, DIRECTION_INHERIT: 0,
PRINT_OPTIONS_STYLE: 2, DIRECTION_LTR: 1,
PRINT_OPTIONS_CHILDREN: 4, DIRECTION_RTL: 2,
EDGE_COUNT: 9, EDGE_COUNT: 9,
EDGE_LEFT: 0, EDGE_LEFT: 0,
@@ -36,13 +37,15 @@ module.exports = {
EDGE_VERTICAL: 7, EDGE_VERTICAL: 7,
EDGE_ALL: 8, EDGE_ALL: 8,
POSITION_TYPE_COUNT: 2, EXPERIMENTAL_FEATURE_COUNT: 2,
POSITION_TYPE_RELATIVE: 0, EXPERIMENTAL_FEATURE_ROUNDING: 0,
POSITION_TYPE_ABSOLUTE: 1, EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: 1,
DIMENSION_COUNT: 2, FLEX_DIRECTION_COUNT: 4,
DIMENSION_WIDTH: 0, FLEX_DIRECTION_COLUMN: 0,
DIMENSION_HEIGHT: 1, FLEX_DIRECTION_COLUMN_REVERSE: 1,
FLEX_DIRECTION_ROW: 2,
FLEX_DIRECTION_ROW_REVERSE: 3,
JUSTIFY_COUNT: 5, JUSTIFY_COUNT: 5,
JUSTIFY_FLEX_START: 0, JUSTIFY_FLEX_START: 0,
@@ -51,11 +54,6 @@ module.exports = {
JUSTIFY_SPACE_BETWEEN: 3, JUSTIFY_SPACE_BETWEEN: 3,
JUSTIFY_SPACE_AROUND: 4, JUSTIFY_SPACE_AROUND: 4,
DIRECTION_COUNT: 3,
DIRECTION_INHERIT: 0,
DIRECTION_LTR: 1,
DIRECTION_RTL: 2,
LOG_LEVEL_COUNT: 5, LOG_LEVEL_COUNT: 5,
LOG_LEVEL_ERROR: 0, LOG_LEVEL_ERROR: 0,
LOG_LEVEL_WARN: 1, LOG_LEVEL_WARN: 1,
@@ -63,30 +61,32 @@ module.exports = {
LOG_LEVEL_DEBUG: 3, LOG_LEVEL_DEBUG: 3,
LOG_LEVEL_VERBOSE: 4, LOG_LEVEL_VERBOSE: 4,
WRAP_COUNT: 2, MEASURE_MODE_COUNT: 3,
WRAP_NO_WRAP: 0, MEASURE_MODE_UNDEFINED: 0,
WRAP_WRAP: 1, MEASURE_MODE_EXACTLY: 1,
MEASURE_MODE_AT_MOST: 2,
OVERFLOW_COUNT: 3, OVERFLOW_COUNT: 3,
OVERFLOW_VISIBLE: 0, OVERFLOW_VISIBLE: 0,
OVERFLOW_HIDDEN: 1, OVERFLOW_HIDDEN: 1,
OVERFLOW_SCROLL: 2, OVERFLOW_SCROLL: 2,
EXPERIMENTAL_FEATURE_COUNT: 2, POSITION_TYPE_COUNT: 2,
EXPERIMENTAL_FEATURE_ROUNDING: 0, POSITION_TYPE_RELATIVE: 0,
EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: 1, POSITION_TYPE_ABSOLUTE: 1,
ALIGN_COUNT: 6, PRINT_OPTIONS_COUNT: 3,
ALIGN_AUTO: 0, PRINT_OPTIONS_LAYOUT: 1,
ALIGN_FLEX_START: 1, PRINT_OPTIONS_STYLE: 2,
ALIGN_CENTER: 2, PRINT_OPTIONS_CHILDREN: 4,
ALIGN_FLEX_END: 3,
ALIGN_STRETCH: 4,
ALIGN_BASELINE: 5,
UNIT_COUNT: 3, UNIT_COUNT: 3,
UNIT_UNDEFINED: 0, UNIT_UNDEFINED: 0,
UNIT_PIXEL: 1, UNIT_PIXEL: 1,
UNIT_PERCENT: 2, UNIT_PERCENT: 2,
WRAP_COUNT: 2,
WRAP_NO_WRAP: 0,
WRAP_WRAP: 1,
}; };

View File

@@ -13,91 +13,112 @@
YG_EXTERN_C_BEGIN YG_EXTERN_C_BEGIN
#define YGFlexDirectionCount 4 #define YGAlignCount 6
typedef YG_ENUM_BEGIN(YGFlexDirection) { typedef YG_ENUM_BEGIN(YGAlign) {
YGFlexDirectionColumn, YGFlexDirectionColumnReverse, YGFlexDirectionRow, YGAlignAuto,
YGFlexDirectionRowReverse, YGAlignFlexStart,
} YGAlignCenter,
YG_ENUM_END(YGFlexDirection); YGAlignFlexEnd,
YGAlignStretch,
#define YGMeasureModeCount 3 YGAlignBaseline,
typedef YG_ENUM_BEGIN(YGMeasureMode) { } YG_ENUM_END(YGAlign);
YGMeasureModeUndefined, YGMeasureModeExactly, YGMeasureModeAtMost,
}
YG_ENUM_END(YGMeasureMode);
#define YGPrintOptionsCount 3
typedef YG_ENUM_BEGIN(YGPrintOptions) {
YGPrintOptionsLayout = 1, YGPrintOptionsStyle = 2, YGPrintOptionsChildren = 4,
}
YG_ENUM_END(YGPrintOptions);
#define YGEdgeCount 9
typedef YG_ENUM_BEGIN(YGEdge) {
YGEdgeLeft, YGEdgeTop, YGEdgeRight, YGEdgeBottom, YGEdgeStart, YGEdgeEnd, YGEdgeHorizontal,
YGEdgeVertical, YGEdgeAll,
}
YG_ENUM_END(YGEdge);
#define YGPositionTypeCount 2
typedef YG_ENUM_BEGIN(YGPositionType) {
YGPositionTypeRelative, YGPositionTypeAbsolute,
}
YG_ENUM_END(YGPositionType);
#define YGDimensionCount 2 #define YGDimensionCount 2
typedef YG_ENUM_BEGIN(YGDimension) { typedef YG_ENUM_BEGIN(YGDimension) {
YGDimensionWidth, YGDimensionHeight, YGDimensionWidth,
} YGDimensionHeight,
YG_ENUM_END(YGDimension); } YG_ENUM_END(YGDimension);
#define YGJustifyCount 5
typedef YG_ENUM_BEGIN(YGJustify) {
YGJustifyFlexStart, YGJustifyCenter, YGJustifyFlexEnd, YGJustifySpaceBetween,
YGJustifySpaceAround,
}
YG_ENUM_END(YGJustify);
#define YGDirectionCount 3 #define YGDirectionCount 3
typedef YG_ENUM_BEGIN(YGDirection) { typedef YG_ENUM_BEGIN(YGDirection) {
YGDirectionInherit, YGDirectionLTR, YGDirectionRTL, YGDirectionInherit,
} YGDirectionLTR,
YG_ENUM_END(YGDirection); YGDirectionRTL,
} YG_ENUM_END(YGDirection);
#define YGLogLevelCount 5 #define YGEdgeCount 9
typedef YG_ENUM_BEGIN(YGLogLevel) { typedef YG_ENUM_BEGIN(YGEdge) {
YGLogLevelError, YGLogLevelWarn, YGLogLevelInfo, YGLogLevelDebug, YGLogLevelVerbose, YGEdgeLeft,
} YGEdgeTop,
YG_ENUM_END(YGLogLevel); YGEdgeRight,
YGEdgeBottom,
#define YGWrapCount 2 YGEdgeStart,
typedef YG_ENUM_BEGIN(YGWrap) { YGEdgeEnd,
YGWrapNoWrap, YGWrapWrap, YGEdgeHorizontal,
} YGEdgeVertical,
YG_ENUM_END(YGWrap); YGEdgeAll,
} YG_ENUM_END(YGEdge);
#define YGOverflowCount 3
typedef YG_ENUM_BEGIN(YGOverflow) {
YGOverflowVisible, YGOverflowHidden, YGOverflowScroll,
}
YG_ENUM_END(YGOverflow);
#define YGExperimentalFeatureCount 2 #define YGExperimentalFeatureCount 2
typedef YG_ENUM_BEGIN(YGExperimentalFeature) { typedef YG_ENUM_BEGIN(YGExperimentalFeature) {
YGExperimentalFeatureRounding, YGExperimentalFeatureWebFlexBasis, YGExperimentalFeatureRounding,
} YGExperimentalFeatureWebFlexBasis,
YG_ENUM_END(YGExperimentalFeature); } YG_ENUM_END(YGExperimentalFeature);
#define YGAlignCount 6 #define YGFlexDirectionCount 4
typedef YG_ENUM_BEGIN(YGAlign) { typedef YG_ENUM_BEGIN(YGFlexDirection) {
YGAlignAuto, YGAlignFlexStart, YGAlignCenter, YGAlignFlexEnd, YGAlignStretch, YGAlignBaseline, YGFlexDirectionColumn,
} YGFlexDirectionColumnReverse,
YG_ENUM_END(YGAlign); YGFlexDirectionRow,
YGFlexDirectionRowReverse,
} YG_ENUM_END(YGFlexDirection);
#define YGJustifyCount 5
typedef YG_ENUM_BEGIN(YGJustify) {
YGJustifyFlexStart,
YGJustifyCenter,
YGJustifyFlexEnd,
YGJustifySpaceBetween,
YGJustifySpaceAround,
} YG_ENUM_END(YGJustify);
#define YGLogLevelCount 5
typedef YG_ENUM_BEGIN(YGLogLevel) {
YGLogLevelError,
YGLogLevelWarn,
YGLogLevelInfo,
YGLogLevelDebug,
YGLogLevelVerbose,
} YG_ENUM_END(YGLogLevel);
#define YGMeasureModeCount 3
typedef YG_ENUM_BEGIN(YGMeasureMode) {
YGMeasureModeUndefined,
YGMeasureModeExactly,
YGMeasureModeAtMost,
} YG_ENUM_END(YGMeasureMode);
#define YGOverflowCount 3
typedef YG_ENUM_BEGIN(YGOverflow) {
YGOverflowVisible,
YGOverflowHidden,
YGOverflowScroll,
} YG_ENUM_END(YGOverflow);
#define YGPositionTypeCount 2
typedef YG_ENUM_BEGIN(YGPositionType) {
YGPositionTypeRelative,
YGPositionTypeAbsolute,
} YG_ENUM_END(YGPositionType);
#define YGPrintOptionsCount 3
typedef YG_ENUM_BEGIN(YGPrintOptions) {
YGPrintOptionsLayout = 1,
YGPrintOptionsStyle = 2,
YGPrintOptionsChildren = 4,
} YG_ENUM_END(YGPrintOptions);
#define YGUnitCount 3 #define YGUnitCount 3
typedef YG_ENUM_BEGIN(YGUnit) { typedef YG_ENUM_BEGIN(YGUnit) {
YGUnitUndefined, YGUnitPixel, YGUnitPercent, YGUnitUndefined,
} YGUnitPixel,
YG_ENUM_END(YGUnit); YGUnitPercent,
} YG_ENUM_END(YGUnit);
#define YGWrapCount 2
typedef YG_ENUM_BEGIN(YGWrap) {
YGWrapNoWrap,
YGWrapWrap,
} YG_ENUM_END(YGWrap);
YG_EXTERN_C_END YG_EXTERN_C_END