C++ style enums 1/N: Generator
Summary: This adds logic to the enum generator to generate C++ style scoped enums. This gives us a few nicities over C enums, even if both must exist: 1. We can add types and keep unsgined enums directly in bitfields 2. Style/readability 3. Avoiding implicit int conversion Differential Revision: D49267996 fbshipit-source-id: 0ba9a79e19616f55abdc15012fbfd26933c6d179
This commit is contained in:
committed by
Facebook GitHub Bot
parent
c60050d0cb
commit
1f4c524b0e
45
yoga/enums/NodeType.h
Normal file
45
yoga/enums/NodeType.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* 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
|
||||
// clang-format off
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <yoga/YGEnums.h>
|
||||
#include <yoga/enums/YogaEnums.h>
|
||||
|
||||
namespace facebook::yoga {
|
||||
|
||||
enum class NodeType : uint8_t {
|
||||
Default = YGNodeTypeDefault,
|
||||
Text = YGNodeTypeText,
|
||||
};
|
||||
|
||||
template <>
|
||||
constexpr inline int32_t ordinalCount<NodeType>() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
template <>
|
||||
constexpr inline int32_t bitCount<NodeType>() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
constexpr inline NodeType scopedEnum(YGNodeType unscoped) {
|
||||
return static_cast<NodeType>(unscoped);
|
||||
}
|
||||
|
||||
constexpr inline YGNodeType unscopedEnum(NodeType scoped) {
|
||||
return static_cast<YGNodeType>(scoped);
|
||||
}
|
||||
|
||||
inline const char* toString(NodeType e) {
|
||||
return YGNodeTypeToString(unscopedEnum(e));
|
||||
}
|
||||
|
||||
} // namespace facebook::yoga
|
Reference in New Issue
Block a user