| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 
							- /*
 
-  *  Created by Phil on 4/4/2019.
 
-  *  Copyright 2019 Two Blue Cubes Ltd. All rights reserved.
 
-  *
 
-  *  Distributed under the Boost Software License, Version 1.0. (See accompanying
 
-  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-  */
 
- #ifndef TWOBLUECUBES_CATCH_INTERFACESENUMVALUESREGISTRY_H_INCLUDED
 
- #define TWOBLUECUBES_CATCH_INTERFACESENUMVALUESREGISTRY_H_INCLUDED
 
- #include "catch_stringref.h"
 
- #include <vector>
 
- namespace Catch {
 
-     namespace Detail {
 
-         struct EnumInfo {
 
-             StringRef m_name;
 
-             std::vector<std::pair<int, StringRef>> m_values;
 
-             ~EnumInfo();
 
-             StringRef lookup( int value ) const;
 
-         };
 
-     } // namespace Detail
 
-     struct IMutableEnumValuesRegistry {
 
-         virtual ~IMutableEnumValuesRegistry();
 
-         virtual Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::vector<int> const& values ) = 0;
 
-         template<typename E>
 
-         Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::initializer_list<E> values ) {
 
-             static_assert(sizeof(int) >= sizeof(E), "Cannot serialize enum to int");
 
-             std::vector<int> intValues;
 
-             intValues.reserve( values.size() );
 
-             for( auto enumValue : values )
 
-                 intValues.push_back( static_cast<int>( enumValue ) );
 
-             return registerEnum( enumName, allEnums, intValues );
 
-         }
 
-     };
 
- } // Catch
 
- #endif //TWOBLUECUBES_CATCH_INTERFACESENUMVALUESREGISTRY_H_INCLUDED
 
 
  |