| 1451 | } // namespace Detail |
| 1452 | |
| 1453 | struct IMutableEnumValuesRegistry { |
| 1454 | virtual ~IMutableEnumValuesRegistry(); |
| 1455 | |
| 1456 | virtual Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::vector<int> const& values ) = 0; |
| 1457 | |
| 1458 | template<typename E> |
| 1459 | Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::initializer_list<E> values ) { |
| 1460 | static_assert(sizeof(int) >= sizeof(E), "Cannot serialize enum to int"); |
| 1461 | std::vector<int> intValues; |
| 1462 | intValues.reserve( values.size() ); |
| 1463 | for( auto enumValue : values ) |
| 1464 | intValues.push_back( static_cast<int>( enumValue ) ); |
| 1465 | return registerEnum( enumName, allEnums, intValues ); |
| 1466 | } |
| 1467 | }; |
| 1468 | |
| 1469 | } // Catch |
| 1470 | |