mirror of
				https://github.com/DarkflameUniverse/DarkflameServer.git
				synced 2025-11-03 22:21:59 +00:00 
			
		
		
		
	* add enum stringification functionality from third party source
* squashed commit
* Macros: Add test and improve speed
Space macros out
utilize cache locality
ensure no lost functionality
* moved stringify code to dCommon
* Rename #defines in stringify enum tests
* Revert "moved stringify code to dCommon"
This reverts commit 33fa5f8d2f.
* improve macro functionality
change function handle
formatting and function definition tweaks
* typo fixes
* moved code to dCommon/dEnums and tests to dCommonTests/dEnumsTests
* initial magic_enums alternate implementation of enum stringification
* deleted unused tests
* reverted compile flag oopsy and fixed output types
* fixed testing suite
* test formatting improvement
* formatting again :(
* added gm string to "aborting gm!" message
* Push my suggestion for CI tests.
* updated magic enum test
* fix test variable type
* added gm test
* making sure magic_enum is on a release branch
* tidying up console outputs
* re-implemented enum array access for performance
* now it is bugged :(
* nvm, working
* helping out the snowflake compilers
* changed return type too
* optimization too
* formatting too I guess because why not
* being even more painfully specific
* Update WorldServer.cpp to match emo's feedback
* Update MagicEnumTests.cpp to use srand(time(NULL))
* Update eGameMessageType.h - formatting
* Trying to fix the crash but can't actually compile the code to check on my own rn
* Update WorldServer.cpp - third try at this
* Update MagicEnumTests.cpp - use better macro definitions
* Update MagicEnumTests.cpp - c string comparison fix
* addressing all but the cmake feedback
* fixed cmake to the best of my very limited ability
* added tests to verify magic enum arrays are pre-sorted
* updated
---------
Co-authored-by: David Markowitz <EmosewaMC@gmail.com>
Co-authored-by: Jettford <mrjettbradford@gmail.com>
		
	
		
			
				
	
	
		
			30 lines
		
	
	
		
			613 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			613 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef __STRINGIFIEDENUM_H__
 | 
						|
#define __STRINGIFIEDENUM_H__
 | 
						|
 | 
						|
#include <string>
 | 
						|
#include "magic_enum.hpp"
 | 
						|
 | 
						|
namespace StringifiedEnum {
 | 
						|
	template<typename T>
 | 
						|
	const std::string_view ToString(const T e) {
 | 
						|
		constexpr auto sv = &magic_enum::enum_entries<T>();
 | 
						|
		std::string_view output;
 | 
						|
 | 
						|
		const auto it = std::lower_bound(
 | 
						|
			sv->begin(), sv->end(), e,
 | 
						|
			[&](const std::pair<T, std::string_view>& lhs, const T rhs)
 | 
						|
			{ return lhs.first < rhs; }
 | 
						|
		);
 | 
						|
 | 
						|
		if (it != sv->end() && it->first == e) {
 | 
						|
			output = it->second;
 | 
						|
		}
 | 
						|
		else {
 | 
						|
			output = "UNKNOWN";
 | 
						|
		}
 | 
						|
		return output;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
#endif // !__STRINGIFIEDENUM_H__
 |