Customizable C++17 Runtime Reflection Library

Overview

Refureku

Latest Release Build Status Codacy Badge

Check the Wiki for more documentation and use examples!

Refureku is a powerful C++17 RTTI free runtime reflection library based on Kodgen. It allows to retrieve information on namespaces, structs/classes, fields, methods, non-member variables, non-member functions, enums and enum values at runtime.

Index

Features

  • Easy to integrate in a software like a game engine
  • Reflect namespaces, structs, classes, methods, fields, variables, functions, enums and enum values
  • Support structs/classes with or without inheritance (multiple inheritance supported)
  • Can get an entity by name, with additional filtering parameters
  • Function/Method call with any arguments and any return type (public, protected, private, virtual, override)
  • Variable/Field get/set any data of any type (public, protected, private)
  • Know at runtime if an instance of a reflected struct/class is the base or a subclass of another reflected struct/class
  • Powerful property system allowing to attach metadata on any entity and generate custom code
  • Reflection metadata is regenerated only when a file has changed
  • Can instantiate any objects just from an archetype (which is obtainable by name or id), with arbitrary parameters
  • Know at compile-time if a struct/class is reflected or not (can be combined with if constexpr expression)

Getting started

Pre-built binaries for Windows x64 are available here. If you want to use those, you can skip to step 3 (this is true for the Library Integration part as well as the Parser/Generator Integration part.

Refureku integration examples are available here.

Requirements:

  • CMake 3.15.0+ (if you build the library from source).
  • A compatible compiler: MSVC Platform Toolset v141+ / GCC8.0.0+ / Clang 7.0.0+.

Library integration

  1. Pull the repository

  2. Compile the library and the generator following these steps:

    • At the root of the Refureku folder, open a terminal
      • cmake -B Build/Release -DCMAKE_BUILD_TYPE=Release -G "<Generator>"

        Most common generators include:

        • Visual Studio 15 2017 -> cmake -B Build/Release -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 15 2017" -A x64 Note: If you use Visual Studio generator, you must explicitely specify the target architecture using -A x64
        • Unix Makefiles
        • Ninja -> cmake -B Build/Release -DCMAKE_BUILD_TYPE=Release -G "Ninja"
        • Type cmake -G for more information
      • cmake --build Build/Release --config Release --target RefurekuGenerator Refureku
    • If you're compiling your project in debug mode, you will also probably need the debug version too:
      • cmake -B Build/Debug -DCMAKE_BUILD_TYPE=Debug -G "<Generator>"
      • cmake --build Build/Debug --config Debug --target Refureku
    • You will find the generator binaries in Build/Release/Bin/ and the library in Build/[Debug|Release]/Lib/

      Note: On multiple configuration generators such as Visual Studio or XCode, an additional Debug/Release folder is generated.

  3. Add necessary header directories to your project settings:

    • From binaries: /Include/
    • From source: /Refureku/Library/Include/
  4. Add library directories to your projet settings:

    • From binaries: /Lib/
    • From source: /Build/[Debug|Release]/Lib/

    Make sure /Build/Debug/Lib/ is only set in debug mode, and /Build/Release/Lib/ only in release mode

  5. Link against:

    • From binaries: RefurekuDebug.lib in debug mode, RefurekuRelease.lib in release mode
    • From source: Refureku.lib
  6. Update RefurekuSettings.toml located in /Build/Release/Bin/, or /Bin/ if you downloaded the binaries. You must at least specify:

    • [FileGenerationSettings] outputDirectory = '''Path/To/Output/Directory'''

      The output directory is the directory where metadata files will be generated. If the directory doesn't exist, the generator will try to create it.

    • [FileGenerationSettings] toParseDirectories = [ '''Path/To/Dir/To/Parse1''', ... ]

      List of the directories containing header files to parse. These directories are recursively inspected.

    • [FileParsingSettings] projectIncludeDirectories = [ '''Path/To/Refureku/Library/Include''', '''Path/To/Your/Project/Include/Dir1''', ... ]

      Paths to your project's additional include directories. They are absolutely necessary to make sure the parser can find all included files. As you added Refureku include directory at step 3, you must add it to the list.

    • [FileParsingSettings] compilerExeName = "clang++"

      Fill this with the compiler you are using to compile your application. "msvc", "clang++" and "g++" are the only supported compilers. For clang++ and g++, you can specify a version (as long as the command is properly running in a terminal).

    • If the specified outputDirectory is in a parsed directory, you should ignore it (you don't want to waste time parsing generated metadata do you?) [FileGenerationSettings] ignoredDirectories = [ '''Path/To/Output/Directory''' ]

    Note: All paths must be written between ''' ''', and be either absolute or relative to your workspace directory.

  7. Make the RefurekuGenerator run just before your project's compilation:

    • With CMake:
    # Run generator before compiling our own program
    add_custom_target(RunGenerator
    			WORKING_DIRECTORY Your/Working/Directory
    			COMMAND Path/To/The/RefurekuGenerator)
    add_dependencies(YourExecutable RunGenerator)
    • With Visual Studio:

      In Project properties > Build Events > Pre-Build Event, add the command Path\To\Executable\RefurekuGenerator.exe

  8. Make sure you compile your project in C++17 or later.

  9. Compile your project: you should see build logs from the RefurekuGenerator with a list of parsed files, or error logs if something went wrong. If you encounter errors, see the Possible issues section. If it doesn't help, don't hesitate to open a new issue.

Parser/Generator integration

  1. Pull the repository

  2. Compile the generator library following these steps:

    • At the root of the Refureku folder, open a terminal
      • cmake -B Build/Release -DCMAKE_BUILD_TYPE=Release -G "<Generator>"

        Most common generators include:

        • Visual Studio 15 2017 -> cmake -B Build/Release -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 15 2017" -A x64 >Note: If you use Visual Studio generator, you must explicitely specify the target architecture using -A x64
        • Unix Makefiles
        • Ninja -> cmake -B Build/Release -DCMAKE_BUILD_TYPE=Release -G "Ninja"
        • Type cmake -G for more information
      • cmake --build Build/Release --config Release --target RefurekuGeneratorLib
    • If you're compiling your project in debug mode, you will also probably need the debug version too:
      • cmake -B Build/Debug -DCMAKE_BUILD_TYPE=Debug -G "<Generator>"
      • cmake --build Build/Debug --config Debug --target RefurekuGeneratorLib
    • You will find the built libraries in Build/[Debug|Release]/Lib/

      Note: On multiple configuration generators such as Visual Studio or XCode, an additional Debug/Release folder is generated.

  3. Add necessary header directories to your project settings:

    • From binaries: /Include/
    • From source:
      • /Refureku/Generator/Submodules/Kodgen/Include/
      • /Refureku/Generator/Submodules/Kodgen/ThirdParty/Include/
      • /Refureku/Generator/Include/
  4. Add library directories to your projet settings:

    • From binaries:
      • /Lib/
    • From source:
      • /Refureku/Generator/Submodules/Kodgen/ThirdParty/x64/Static/
      • /Build/[Debug|Release]/Lib/

    Make sure /Build/Debug/Lib/ is only set in debug mode, and /Build/Release/Lib/ only in release mode

  5. Link against:

    • From binaries:
      • clang.lib
      • KodgenDebug.lib in debug only, KodgenRelease.lib in release only
      • RefurekuGeneratorLibDebug.lib in debug only, RefurekuGeneratorLibRelease.lib in release only
    • From source:
      • clang.lib
      • Kodgen.lib
      • RefurekuGeneratorLib.lib
  6. Setup your project C++ compilation version to C++17 or later.

  7. Compile!

  8. Before running your program, make sure that the libclang dynamic library is located next to your executable. You should find it at /Refureku/Generator/Submodules/Kodgen/ThirdParty/x64/Shared/, or /Bin/ from the binaries.

You should be able to run the following snippet:

#include <Kodgen/Misc/DefaultLogger.h>
#include <RefurekuGenerator/Parsing/FileParser.h>
#include <RefurekuGenerator/Parsing/FileParserFactory.h>
#include <RefurekuGenerator/CodeGen/FileGenerator.h>
#include <RefurekuGenerator/CodeGen/FileGenerationUnit.h>

int main()
{
    rfk::FileParserFactory<rfk::FileParser> fileParserFactory;
    rfk::FileGenerator                      fileGenerator;
    rfk::FileGenerationUnit                 fileGenerationUnit;

    //Set logger
    kodgen::DefaultLogger logger;

    fileParserFactory.logger	= &logger;
    fileGenerator.logger	= &logger;

    //You will need to setup parsing settings and generation settings here.
    //Either load settings from a settings file, or set them by calling the appropriate methods.
    fileGenerator.generateFiles(fileParserFactory, fileGenerationUnit);

    return 0;
}

Possible issues

Issue 1

If you compile your program in debug mode, your compiler might complain about library / debug level mismatchs. In that case, make sure to compile the Refureku library both in Debug and Release, and link against the debug version of the library when compiling your program in debug mode.

Cross-platform compatibility

This library has been tested and is stable on the following configurations:

  • Windows Server version 1809 | MSVC 19.16.27041.0
  • Linux 18.04 | Clang 7.0.0, Clang 8.0.0, Clang 9.0.0, Clang 10.0.1
  • Linux 18.04 | GCC 8.4.0, GCC 9.3.0, GCC 10.1.0

Planned features

Known issues

  • Can't reflect a variable / field / function / method using incomplete (forward declared) types

License

MIT License

Copyright (c) 2020 Julien SOYSOUVANH

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • No fields found in struct

    No fields found in struct

    The generator runs with no errors but the resulting rfk.h does not contain any references to the field my struct has, only the base struct name. What am i missing?

    Ex rfk::Struct const & s = CircleComponent::staticGetArchetype(); s.fields.size() is zero. s.memorySize however is 4 as i expect.

    I am on linux building refureku as a subproject in cmake from source with gcc 10.2.0. RefurekuSettings is set using cmakes configure_file. I had to update the included libclang to my local libclang.so.11.1 as i have newer system libraries than what the older one was built against. I had to comment out the Library tests as it just keeps trying to use my projects RefurekuSettings.toml which obviously does not work for the tests. I can't even find the RefurekuSettings.toml for the tests so i was unable to fix that.

    ...
    #include "refureku/SimpleComponents.rfk.h"
    ...
    struct RFKStruct() CircleComponent {
    		float radius = 1; // in m
    		CircleComponent_GENERATED
    };
    ...
    File_GENERATED
    

    Complete file if you want.

    #pragma once
    
    /**
    *	Source file: /home/exuvo/code/Aurora-C/src/starsystems/components/SimpleComponents.hpp
    */
    
    #include "EntityMacros.h"
    
    #include <Refureku/Misc/DisableWarningMacros.h>
    #include <Refureku/TypeInfo/Namespaces/Namespace.h>
    #include <Refureku/TypeInfo/Namespaces/NamespaceFragment.h>
    #include <Refureku/TypeInfo/Namespaces/NamespaceFragmentRegisterer.h>
    #include <Refureku/TypeInfo/Archetypes/Class.h>
    #include <Refureku/TypeInfo/Archetypes/Enum.h>
    #include <Refureku/TypeInfo/Archetypes/ArchetypeRegisterer.h>
    #include <Refureku/TypeInfo/Entity/DefaultEntityRegisterer.h>
    
    
    #define __RFK8251021941809742048u_GenerateFieldsMetadata	\
    	registerChild<CircleComponent>(&type);	\
    
    #define __RFK8251021941809742048u_GenerateFieldHelperMethods	\
    private:	\
    	template <typename ParentType, typename ChildType>	\
    	static constexpr void recurseRegisterChild([[maybe_unused]] rfk::Struct* childArchetype)	\
    	{	\
    		if constexpr (rfk::isReflectedClass<ParentType>)	\
    		{	\
    			ParentType::template registerChild<ChildType>(childArchetype);	\
    		}	\
    	}	\
    public:	\
    	template <typename ChildType>	\
    	static void registerChild(rfk::Struct* childArchetype) noexcept	\
    	{	\
    		rfk::Struct const& thisArchetype = staticGetArchetype();	\
    		if (childArchetype != &thisArchetype)	\
    		{	\
    			const_cast<rfk::Struct&>(thisArchetype).children.insert(childArchetype);	\
    		}	\
    	}
    
    #define __RFK8251021941809742048u_GenerateMethodsMetadata	\
    
    #define __RFK8251021941809742048u_GenerateArchetypeProperties	\
    	
    
    #define __RFK8251021941809742048u_GenerateDefaultInstantiatorSetup	\
    	type.setDefaultInstantiator(&rfk::defaultInstantiator<CircleComponent>);
    
    #define __RFK8251021941809742048u_GetTypeDeclaration	\
    	__RFK8251021941809742048u_GenerateFieldHelperMethods	\
    	public:	\
    		inline static rfk::Struct const& staticGetArchetype() noexcept;	\
    	
    
    #ifdef KODGEN_PARSING
    #define __RFK8251021941809742048u_GetTypeDefinition
    #else
    #define __RFK8251021941809742048u_GetTypeDefinition	\
    		inline rfk::Struct const& CircleComponent::staticGetArchetype() noexcept	\
    		{	\
    			static bool			initialized = false;	\
    			static rfk::Struct	type("CircleComponent", 8251021941809742048u, sizeof(CircleComponent));	\
    			\
    			if (!initialized)	\
    			{	\
    				initialized = true;	\
    			\
    				__RFK8251021941809742048u_GenerateArchetypeProperties	\
    					\
    					\
    				__RFK8251021941809742048u_GenerateFieldsMetadata	\
    				__RFK8251021941809742048u_GenerateDefaultInstantiatorSetup	\
    				__RFK8251021941809742048u_GenerateMethodsMetadata	\
    			}	\
    			\
    			return type;	\
    		}
    
    #endif
    #define __RFK8251021941809742048u_RegisterArchetype	\
    	private:	\
    		static inline rfk::ArchetypeRegisterer __rfkArchetypeRegisterer = &staticGetArchetype();
    
    
    #ifdef KODGEN_PARSING
    #define CircleComponent_GENERATED
    #else
    #define CircleComponent_GENERATED	\
    	friend rfk::Struct;	\
    	friend rfk::hasField___rfkArchetypeRegisterer<CircleComponent, rfk::ArchetypeRegisterer>;	\
    	__RFK8251021941809742048u_GetTypeDeclaration	\
    	__RFK8251021941809742048u_RegisterArchetype	\
    		\
    	private:
    
    #endif
    
    #ifdef __RFKNativeProperties_GENERATED
    	#undef __RFKNativeProperties_GENERATED
    #endif
    
    #define __RFKNativeProperties_GENERATED	\
    	
    
    #ifdef File_GENERATED
    	#undef File_GENERATED
    #endif
    #define File_GENERATED	\
    	__RFK8251021941809742048u_GetTypeDefinition	\
    	__RFKNativeProperties_GENERATED	\
    
    
    
    
    opened by exuvo 8
  • Get field type name and comment

    Get field type name and comment

    Hello! First of all I wanted to thank you for making this really helpful library!

    After I integrated Refureku into my project I've started using fieldType.match(rfk::getType<T>()) to deduce field types. I remember from the docs that comparing non-reflected types might not be correct and so I got into a situation where

    rfk::getType<std::string>() == rfk::getType<std::vector<bool>>
    

    I started thinking on how to get out of this situation and only come up with an idea to introduce a new property that will hint that the field is a vector not a string, but you could easily forget to mark your field with this property so I wanted to take this part under the hood. Can you help me out in this situation? Any ideas how to differentiate these types without changing field and its properties?

    Because I have some experience with Unreal Engine, I remember that UE has a function to get C++ type name from a field (so for std::vector<bool> someVector field it should be a string that is equal to std::vector<bool>). I know nothing about how reflection systems work but because we can get field's name maybe we can also get C++ type from the field? This would solve my problem as I would have a way to differentiate types. Also, I know for sure that UE has a function to get C++ comment from a field (I use this functionality in one of the projects I'm working on), for example:

    /** Key to jump. */
    UPROPERTY()
    FKey Jump;
    

    will return "Key to jump." as a comment using reflection. If you can add this (field type name and comment) to Refureku this would be super cool!

    opened by Flone-dnb 5
  • Why no field.get(pointer to instance) ?

    Why no field.get(pointer to instance) ?

    I am wondering why there are no public overloads of rfk::Field f.get(void*) (assume the field type is value) only references which require the actual class type to be known at compile time. It works just fine if i hackily cast my pointer to a dummy struct as you get the field value via getMemoryOffset anyway.

    I know i can template my printField function but that will give me so many different template specifications and call sites one for each nested struct i support and i would need to manually write two lines per struct for the nested f.get(reference) to compile. Ie i need to test the type with rfk::getType and then get a struct reference with that type and the recurse my printFields function.

    I tested a simpler approach which uses f.getConstPtr(instance) for the structs and then casts that pointer to a dummy struct reference

    struct dummy { int ignored };
    // In foreachField visitor:
    const struct dummy& instance = *static_cast<const struct dummy*>(userData->pointer);
    

    which works just fine and avoids me having to write a specific line for each kind of struct i may have (ie no need up update the printFields function if i add a new struct).

    Is it really just the std::enable_if_t<is_value_v>> check you use the type for?

    Would it be possible to expose Field::getInternal(void const* instance) and Field::getConstPtrInternal(void const* instance) publicly with some warnings about unsafe usage?

    enhancement question 
    opened by exuvo 5
  • Can't run on Ubuntu 20.04

    Can't run on Ubuntu 20.04

    When running cmake with the example CMakeLists, I get the following error: Bin/RefurekuGenerator: error while loading shared libraries: libclang.so.12: cannot open shared object file: No such file or directory

    cmake file:

    cmake_minimum_required(VERSION 3.21)
    project(RefurekuTest)
    
    set(CMAKE_CXX_STANDARD 17)
    
    
    add_executable(RefurekuTest main.cpp)
    target_compile_features(RefurekuTest PUBLIC cxx_std_17)
    
    
    target_include_directories(RefurekuTest PUBLIC ${PROJECT_SOURCE_DIR}/Include)
    target_link_directories(RefurekuTest PRIVATE ${PROJECT_SOURCE_DIR}/Bin)
    target_link_libraries(RefurekuTest PRIVATE Refureku)
    
    add_custom_target(RunRefurekuGenerator
            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}  #PROJECT_SOURCE_DIR is the path to the directory containing the Cmake with the project command
            COMMAND ${PROJECT_SOURCE_DIR}/Bin/RefurekuGenerator ${PROJECT_SOURCE_DIR}/RefurekuSettings.toml)
    
    add_dependencies(RefurekuTest RunRefurekuGenerator)
    
    question 
    opened by Deimantas69 4
  • Custom property fails to compile:

    Custom property fails to compile: "Can not create instance of abstract class"

    I've been trying to create a custom property as shown here.

    Here is the code that I'm using for the test (pretty much a copy from the wiki):

    #pragma once
    
    #include <string>
    #include <Refureku/Properties/PropertySettings.h>
    #include <generated/tooltip.rfkh.h>
    
    class CLASS(rfk::PropertySettings(rfk::EEntityKind::Field, false, true))
        Tooltip : public rfk::Property
    {
        std::string _message;
    
        public:
            Tooltip(char const* message) noexcept:
                _message(message)
            {}
    
        std::string const& getMessage() const { return _message; }
    
        Tooltip_GENERATED
    };
    
    struct STRUCT() TestStruct
    {
        FIELD(Tooltip("Hello!"))
        int x = 0;
    
        TestStruct_GENERATED
    };
    
    File_tooltip_GENERATED
    

    MSVC throws me a C2259 "cannot instantiate abstract class", because const rfk::Struct &rfk::Object::getArchetype(void) noexcept const is not overridden in the Tooltip class.

    Here is the generated header for that file. As you can see, getArchetype is not defined within Tooltip_GENERATED, as it would be for other reflected classes.

    #pragma once
    
    #include "EntityMacros.h"
    
    #include <Refureku/TypeInfo/Entity/EEntityKind.h>
    #include <string>
    #include <Refureku/Misc/CodeGenerationHelpers.h>
    #include <Refureku/Misc/DisableWarningMacros.h>
    #include <Refureku/TypeInfo/Functions/Method.h>
    #include <Refureku/TypeInfo/Functions/StaticMethod.h>
    #include <Refureku/TypeInfo/Variables/Field.h>
    #include <Refureku/TypeInfo/Variables/StaticField.h>
    #include <Refureku/TypeInfo/Archetypes/Enum.h>
    #include <Refureku/TypeInfo/Archetypes/EnumValue.h>
    #include <Refureku/TypeInfo/Variables/Variable.h>
    #include <Refureku/TypeInfo/Functions/Function.h>
    #include <Refureku/TypeInfo/Archetypes/Template/ClassTemplate.h>
    #include <Refureku/TypeInfo/Archetypes/Template/ClassTemplateInstantiation.h>
    #include <Refureku/TypeInfo/Archetypes/Template/ClassTemplateInstantiationRegisterer.h>
    #include <Refureku/TypeInfo/Archetypes/Template/TypeTemplateArgument.h>
    #include <Refureku/TypeInfo/Archetypes/Template/NonTypeTemplateArgument.h>
    #include <Refureku/TypeInfo/Archetypes/Template/TemplateTemplateArgument.h>
    
    
    #define Tooltip_GENERATED	\
    public: static constexpr rfk::EEntityKind targetEntityKind = rfk::EEntityKind::Field;\
     virtual rfk::EEntityKind getTargetEntityKind() const noexcept override;\
    static constexpr bool allowMultiple = false;\
     virtual bool getAllowMultiple() const noexcept override;\
    static constexpr bool shouldInherit = true;\
     virtual bool getShouldInherit() const noexcept override;\
    RFK_UNPACK_IF_NOT_PARSING(friend rfk::internal::CodeGenerationHelpers;\
    friend implements_template1__rfk_registerChildClass<Tooltip, void, void(rfk::Struct&)>; \
    \
    private: template <typename ChildClass> static void _rfk_registerChildClass(rfk::Struct& childClass) noexcept {\
    rfk::Struct const& thisClass = staticGetArchetype();\
    if constexpr (!std::is_same_v<ChildClass, Tooltip>) const_cast<rfk::Struct&>(thisClass).addSubclass(childClass);\
    }\
    \
    \
    public:  static rfk::Class const& staticGetArchetype() noexcept;\
    \
    )\
    
    
    #define TestStruct_GENERATED	\
    RFK_UNPACK_IF_NOT_PARSING(friend rfk::internal::CodeGenerationHelpers;\
    friend implements_template1__rfk_registerChildClass<TestStruct, void, void(rfk::Struct&)>; \
    \
    private: template <typename ChildClass> static void _rfk_registerChildClass(rfk::Struct& childClass) noexcept {\
    rfk::Struct const& thisClass = staticGetArchetype();\
    if constexpr (!std::is_same_v<ChildClass, TestStruct>) const_cast<rfk::Struct&>(thisClass).addSubclass(childClass);\
    [[maybe_unused]] rfk::Field* field = nullptr; [[maybe_unused]] rfk::StaticField* staticField = nullptr;\
    )\
    __RFK_DISABLE_WARNING_PUSH \
    __RFK_DISABLE_WARNING_OFFSETOF \
    RFK_UNPACK_IF_NOT_PARSING(field = childClass.addField("x", std::hash<std::string>()(std::string("c:@S@TestStruct@FI@x") + rfk::internal::getTypename<ChildClass>()), rfk::getType<int>(), static_cast<rfk::EFieldFlags>(1), offsetof(ChildClass, x), &thisClass);\
    field->setPropertiesCapacity(1);\
    static_assert((Tooltip::targetEntityKind & rfk::EEntityKind::Field) != rfk::EEntityKind::Undefined, "[Refureku] Tooltip can't be applied to a rfk::EEntityKind::Field");static Tooltip property_13627786537051393215u_0{"Hello!"};field->addProperty(property_13627786537051393215u_0);\
    )\
    __RFK_DISABLE_WARNING_POP \
    RFK_UNPACK_IF_NOT_PARSING(}\
    \
    \
    public:  static rfk::Struct const& staticGetArchetype() noexcept;\
    \
    )\
    
    
    #define File_tooltip_GENERATED	\
    template <>  rfk::Archetype const* rfk::getArchetype<TestStruct>() noexcept;\
    template <>  rfk::Archetype const* rfk::getArchetype<Tooltip>() noexcept;\
    

    I may be missing something here, but I cannot find any relevant differences between my code and the examples...

    opened by ataulien-thqnordic 3
  • Looking for an elegant way to include all generated files.

    Looking for an elegant way to include all generated files.

    Hi once again.

    I'm implementing a serializer/deserializer for custom user types. My idea is to have a base class Serializable (reflected class that derives from rfk::Object) and allow users to create new classes that inherit from this Serializable class to enable serialization/deserialization. The problem I stumbled upon is that if I don't include a specific generated implementation file (rfks.h) the database will not know this class' ID. Because my serialize/deserialize functions are located in the base class Serializable when reading a class ID from the file to deserialize it I need to have information about the specific class that this class ID represents.

    So I'm asking if maybe you also had this problem and know an elegant way to include all generated information in the base class so that it will know about all class IDs (and can work with all reflected types).

    The only solution I come up with is to dynamically create (using a pre build script) a Reflection.h and Reflection.cpp files that include all generated files and use (include) them (Reflection.h and Reflection.cpp) everywhere in the code instead of including actually generated files. But this is not really a good solution because once you make a change in just one class that uses reflection all other classes that use reflection are also being recompiled (which takes quite some time). All of my other attempts to solve this lead to [LNK1169] one or more multiply defined symbols found.

    opened by Flone-dnb 2
  • Error building v2.1.2

    Error building v2.1.2

    Building v2.1.2:

    [2/79] Building CXX object lib/Refureku/Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o
    FAILED: lib/Refureku/Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o 
    /usr/bin/c++  -I/home/exuvo/code/Aurora-C/lib/Refureku/Refureku/Generator/Include -I/home/exuvo/code/Aurora-C/lib/Refureku/Refureku/Generator/ThirdParty/Kodgen/Kodgen/Include -I/home/exuvo/code/Aurora-C/lib/Refureku/Refureku/Generator/ThirdParty/Kodgen/Kodgen/ThirdParty/Include -g -fdiagnostics-color=always -Wall -Wextra -Wpedantic -MD -MT lib/Refureku/Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o -MF lib/Refureku/Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o.d -o lib/Refureku/Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o -c /home/exuvo/code/Aurora-C/lib/Refureku/Refureku/Generator/Source/main.cpp
    In file included from /home/exuvo/code/Aurora-C/lib/Refureku/Refureku/Generator/Include/RefurekuGenerator/CodeGen/ReflectionCodeGenModule.h:602,
                     from /home/exuvo/code/Aurora-C/lib/Refureku/Refureku/Generator/Source/main.cpp:9:
    /home/exuvo/code/Aurora-C/lib/Refureku/Refureku/Generator/Include/RefurekuGenerator/CodeGen/ReflectionCodeGenModule.inl: In lambda function:
    /home/exuvo/code/Aurora-C/lib/Refureku/Refureku/Generator/Include/RefurekuGenerator/CodeGen/ReflectionCodeGenModule.inl:419:114: error: ‘class kodgen::TypeInfo’ has no member named ‘computeTemplateSignature’
      419 |                                                 inout_result += "template <template <" + nestedStructClass->type.computeTemplateSignature(true) + "> typename>";
          |                                                                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~
    

    With kodgen v2.2.0 Tried with both your release tags and my branches which have minor changes.

    v2.0.3, v2.1.0, v2.1.1 all build and work for me.

    opened by exuvo 2
  • Filenames with dashes (-) generate invalid macros

    Filenames with dashes (-) generate invalid macros

    When using Refureku on sourcefiles which contain a dash (like sample-code.hpp), the generator will create a makro named File_sample-code_GENERATED, which is not valid C++.

    One solution could be to extend the generator like so:

    std::string	MacroCodeGenUnitSettings::getHeaderFileFooterMacro(fs::path const& targetFile) const noexcept
    {
    	std::string headerFileFooterMacroName = _headerFileFooterMacroPattern;
    
    	replaceTags(headerFileFooterMacroName, filenameTag, targetFile.filename().stem().string());
    	replaceTags(headerFileFooterMacroName, "-", "_");
    
    	return headerFileFooterMacroName;
    }
    

    I haven't tested other characters. Maybe spaces will cause issues, too?

    bug 
    opened by ataulien-thqnordic 2
  • Build failure on MacOS due to `math.h` misdirection in `cmath`

    Build failure on MacOS due to `math.h` misdirection in `cmath`

    Just sharing my experience building on MacOS, since this platform isn't listed under the tested configurations.

    Using Ninja as my build system, running cmake --build Build/Release --config Release --target RefurekuGenerator Refureku throws a very long error message that ends with

    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    ninja: build stopped: subcommand failed.
    

    (Full error below.)

    This seems to be a recurring issue that trips up certain builds on MacOS, including Refureku. It involves cmath getting pointed to the wrong version of math.h. Based on this answer, the following worked for me:

    1. In a text editor, open /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/cmath
    2. FInd #include <math.h> and comment it out.
    3. On a new line below, insert #include </Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/math.h>.

    Note: these paths may be different for you. Replace /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk with whatever path ending in /usr/include/c++/v1/cmath that appears in your error messages.

    cmake --build Build/Release --config Release --target RefurekuGenerator Refureku should now work correctly.

    This shouldn't be necessary. I suspect there's a more elegant workaround that involves modifying CMakeLists.txt, but I'm not sure what it is yet. I'll look into it if I have some more spare time.

    Click to expand full error message
    $ cmake --build Build/Release --config Release --target RefurekuGenerator Refureku
    [1/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/TestPropertyRule.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/TestPropertyRule.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/TestPropertyRule.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/TestPropertyRule.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/TestPropertyRule.cpp.o -c ../../Refureku/Generator/Source/Properties/TestPropertyRule.cpp
    In file included from ../../Refureku/Generator/Source/Properties/TestPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/TestPropertyRule.h:3:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/Properties/TestPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/TestPropertyRule.h:3:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/TestPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/TestPropertyRule.h:3:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/TestPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/TestPropertyRule.h:3:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    [2/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultSimplePropertyRule.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultSimplePropertyRule.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultSimplePropertyRule.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultSimplePropertyRule.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultSimplePropertyRule.cpp.o -c ../../Refureku/Generator/Source/Properties/DefaultSimplePropertyRule.cpp
    In file included from ../../Refureku/Generator/Source/Properties/DefaultSimplePropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultSimplePropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultSimplePropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/Properties/DefaultSimplePropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultSimplePropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultSimplePropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/DefaultSimplePropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultSimplePropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultSimplePropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/DefaultSimplePropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultSimplePropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultSimplePropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    [3/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/PropertySettingsPropertyRule.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/PropertySettingsPropertyRule.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/PropertySettingsPropertyRule.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/PropertySettingsPropertyRule.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/PropertySettingsPropertyRule.cpp.o -c ../../Refureku/Generator/Source/Properties/PropertySettingsPropertyRule.cpp
    In file included from ../../Refureku/Generator/Source/Properties/PropertySettingsPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/PropertySettingsPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/Properties/PropertySettingsPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/PropertySettingsPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/PropertySettingsPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/PropertySettingsPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/PropertySettingsPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/PropertySettingsPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    [4/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultComplexPropertyRule.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultComplexPropertyRule.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultComplexPropertyRule.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultComplexPropertyRule.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/DefaultComplexPropertyRule.cpp.o -c ../../Refureku/Generator/Source/Properties/DefaultComplexPropertyRule.cpp
    In file included from ../../Refureku/Generator/Source/Properties/DefaultComplexPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/Properties/DefaultComplexPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/DefaultComplexPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/DefaultComplexPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultComplexPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultComplexPropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    [5/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/CustomInstantiatorPropertyRule.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/CustomInstantiatorPropertyRule.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/CustomInstantiatorPropertyRule.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/CustomInstantiatorPropertyRule.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Properties/CustomInstantiatorPropertyRule.cpp.o -c ../../Refureku/Generator/Source/Properties/CustomInstantiatorPropertyRule.cpp
    In file included from ../../Refureku/Generator/Source/Properties/CustomInstantiatorPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/CustomInstantiatorPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultSimplePropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultSimplePropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/Properties/CustomInstantiatorPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/CustomInstantiatorPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultSimplePropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultSimplePropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/CustomInstantiatorPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/CustomInstantiatorPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultSimplePropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultSimplePropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Properties/CustomInstantiatorPropertyRule.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/CustomInstantiatorPropertyRule.h:10:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Properties/DefaultSimplePropertyRule.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Properties/DefaultSimplePropertyRule.h:11:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    [6/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedEntityCodeTemplate.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedEntityCodeTemplate.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedEntityCodeTemplate.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedEntityCodeTemplate.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedEntityCodeTemplate.cpp.o -c ../../Refureku/Generator/Source/CodeGen/GeneratedEntityCodeTemplate.cpp
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedEntityCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedEntityCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedEntityCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedEntityCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    [7/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Parsing/FileParser.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Parsing/FileParser.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Parsing/FileParser.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Parsing/FileParser.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/Parsing/FileParser.cpp.o -c ../../Refureku/Generator/Source/Parsing/FileParser.cpp
    In file included from ../../Refureku/Generator/Source/Parsing/FileParser.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Parsing/FileParser.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/FileParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/NamespaceParser.h:12:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ClassParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/EntityParser.h:16:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ParsingSettings.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/Parsing/FileParser.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Parsing/FileParser.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/FileParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/NamespaceParser.h:12:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ClassParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/EntityParser.h:16:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ParsingSettings.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Parsing/FileParser.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Parsing/FileParser.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/FileParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/NamespaceParser.h:12:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ClassParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/EntityParser.h:16:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ParsingSettings.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/Parsing/FileParser.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Parsing/FileParser.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/FileParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/NamespaceParser.h:12:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ClassParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/EntityParser.h:16:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ParsingSettings.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    [8/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedClassCodeTemplate.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedClassCodeTemplate.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedClassCodeTemplate.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedClassCodeTemplate.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedClassCodeTemplate.cpp.o -c ../../Refureku/Generator/Source/CodeGen/GeneratedClassCodeTemplate.cpp
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedClassCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedClassCodeTemplate.h:14:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedClassCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedClassCodeTemplate.h:14:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedClassCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedClassCodeTemplate.h:14:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedClassCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedClassCodeTemplate.h:14:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    [9/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGeneratorLib.dir/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp.o -c ../../Refureku/Generator/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedNamespaceCodeTemplate.h:13:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedNamespaceCodeTemplate.h:13:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedNamespaceCodeTemplate.h:13:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/CodeGen/GeneratedNamespaceCodeTemplate.cpp:1:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedNamespaceCodeTemplate.h:13:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/CodeGen/GeneratedEntityCodeTemplate.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_map:411:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    [10/95] Building CXX object Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o
    FAILED: Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o 
    /Applications/Xcode.app/Contents/Developer/usr/bin/g++  -I../../Refureku/Generator/Include -I../../Refureku/Generator/Submodules/Kodgen/Include -I../../Refureku/Generator/Submodules/Kodgen/ThirdParty/Include -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk -Wall -Wextra -Wpedantic -std=gnu++17 -MD -MT Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o -MF Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o.d -o Refureku/Generator/CMakeFiles/RefurekuGenerator.dir/Source/main.cpp.o -c ../../Refureku/Generator/Source/main.cpp
    In file included from ../../Refureku/Generator/Source/main.cpp:6:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Parsing/FileParser.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/FileParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/NamespaceParser.h:12:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ClassParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/EntityParser.h:16:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ParsingSettings.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:321:9: error: no member named 'signbit' in the global namespace
    using ::signbit;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:322:9: error: no member named 'fpclassify' in the global namespace
    using ::fpclassify;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:323:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
    using ::isfinite;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h:752:12: note: 'finite' declared here
    extern int finite(double)
               ^
    In file included from ../../Refureku/Generator/Source/main.cpp:6:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Parsing/FileParser.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/FileParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/NamespaceParser.h:12:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ClassParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/EntityParser.h:16:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ParsingSettings.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:324:9: error: no member named 'isinf' in the global namespace
    using ::isinf;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:325:9: error: no member named 'isnan' in the global namespace
    using ::isnan;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:326:9: error: no member named 'isnormal' in the global namespace
    using ::isnormal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:327:7: error: no member named 'isgreater' in the global namespace; did you mean '::std::greater'?
    using ::isgreater;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:738:29: note: '::std::greater' declared here
    struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/main.cpp:6:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Parsing/FileParser.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/FileParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/NamespaceParser.h:12:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ClassParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/EntityParser.h:16:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ParsingSettings.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:328:7: error: no member named 'isgreaterequal' in the global namespace; did you mean '::std::greater_equal'?
    using ::isgreaterequal;
          ^~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/functional:767:29: note: '::std::greater_equal' declared here
    struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
                                ^
    In file included from ../../Refureku/Generator/Source/main.cpp:6:
    In file included from ../../Refureku/Generator/Include/RefurekuGenerator/Parsing/FileParser.h:10:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/FileParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/NamespaceParser.h:12:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ClassParser.h:15:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/EntityParser.h:16:
    In file included from ../../Refureku/Generator/Submodules/Kodgen/Include/Kodgen/Parsing/ParsingSettings.h:10:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/unordered_set:366:
    In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/__hash_table:18:
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:329:9: error: no member named 'isless' in the global namespace
    using ::isless;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:330:9: error: no member named 'islessequal' in the global namespace
    using ::islessequal;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:331:9: error: no member named 'islessgreater' in the global namespace
    using ::islessgreater;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:332:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/cmath:333:9: error: no member named 'isunordered' in the global namespace
    using ::isunordered;
          ~~^
    13 errors generated.
    ninja: build stopped: subcommand failed.
    
    opened by IsaacBreen 2
  • `info.isObject` is never `true` in `GeneratedClassCodeTemplate::generateGetArchetypeMacro`

    `info.isObject` is never `true` in `GeneratedClassCodeTemplate::generateGetArchetypeMacro`

    https://github.com/jsoysouvanh/Refureku/blob/b5d61a3eeeb2b4bdb19d5851bd2f0cf76caa205d/Refureku/Generator/Source/CodeGen/GeneratedClassCodeTemplate.cpp#L84

    Hi! Great library! I have been trying to integrate this library to my engine and but sadly it looks like I can't get the above code to ever be evaluated to true with the following snippet:

    // File: Component.hpp
    #pragma once
    #include <generated/Component.rfk.h>
    
    class RFKClass() IComponentBase : public rfk::Object
    {
    	public:
    		virtual ~IComponentBase() = default;
    
    	IComponentBase_GENERATED
    }
    
    File_GENERATED
    
    

    Removing the conditional to force the generation of getArchetype() solves my problem. But obviously is not the right way. 😅

    Thanks!

    opened by oyagci 2
  • No fields found in struct (again)

    No fields found in struct (again)

    I updated to refureku 2.x from 1.x and i couldn't quite get the generator to identify my structs for parsing without using shouldParseAllStructs = true.

    I updated my RefurekuSettings with the new changes, it is correctly identifying the files to parse and is outputting the rfk[h/s].h files but it is ignoring all my structs and fields i.e. Found 0 namespace(s), 0 struct(s), 0 classe(s) and 0 enum(s)..

    I was using ParseAllNested from Refureku/NativeProperties.h which now seems to be in namespace kodgen::ParseAllNested (not rfk as the changelog suggests) but that did not help. Even basic RFKStruct() and RFKField() was still giving me 0 found.

    After i had written out a lot of info here i found the problem, RFKStruct is case sensitive and i wrote it all uppercase in structMacroName = "RFKSTRUCT" when i was moving stuff over from the new config. With that case fixed and using kodgen::ParseAllNested it is now working again.

    opened by exuvo 0
  • Add `getCanonicalTypeName()` for Field and Variable types.

    Add `getCanonicalTypeName()` for Field and Variable types.

    Hello. As I described in one of my issues I needed something like this, so I've spend some time to dig into the source code and I think I'm close to implementing this feature.

    This PR adds getCanonicalTypeName() for VariableBase class which means that both Field and Variable will have this function. Canonical type name is taken from kodgen::TypeInfo class and added to generated files. Since non reflected types can be considered equal (while in reality it may be incorrect) I've put canonical type name to VariableBase instead of Type.

    Here is an example:

    #pragma once
    
    #include <string>
    #include <vector>
    
    #include "Foo.generated.h"
    
    using namespace std;
    
    class CLASS() Foo{
    public:
        Foo() = default;
        virtual ~Foo() = default;
    
        FIELD()
        const vector<string> myValue;
    
        FIELD()
        string myString;
    
        Foo_GENERATED
    };
    File_Foo_GENERATED
    

    For myValue this function will return std::vector<std::basic_string<char>> and for myString it will be std::basic_string<char>.

    Due to the lack of knowledge of this project I was unable to compile RefurekuTests target, got lots of errors like:

    TestClass.rfks.h(23, 232): [C2259] 'UniqueInheritedProperty': cannot instantiate abstract class (compiling source file D:\Downloads\Refureku\Refureku\Library\Tests\Src\TestClass.cpp)
    

    I've regenerated reflection for test files but was still getting these errors. Maybe you need to regenerate reflection in some special way?

    Also, I've noticed that if you don't include <vector> type name for myValue will not be std::vector<std::basic_string<char>> but int and the same for string field if you don't include <string>. So when shouldLogDiagnostic is true we can see:

    ...
    [Warning] ...h:16:18: error: use of undeclared identifier 'string'
    [Warning] ...h:19:5: error: unknown type name 'string'
    [Warning] ...h:21:5: error: unknown type name 'Node_GENERATED'
    ...
    

    I think we should detect actual errors (like use of undeclared identifier 'string') and stop code generation and ignore errors like unknown type name 'Node_GENERATED'. For this I'm proposing this PR.

    opened by Flone-dnb 5
  • Template class double registration

    Template class double registration

    Here is the situation. I have an Engine library (DLL) where I try to reflect the std::vector class. I wanted to use this reflected vector in a Scripting dll driven by an Editor application. (Manipulate and display the vector content in an inspector). The problem is that when I'm trying to declare one in the Scripting dll, double registration warnings show up.

    [Refureku] WARNING: Double registration detected: (6467467976038935076, HyVector) collides with entity: (6467467976038935076, HyVector)
    [Refureku] WARNING: Double registration detected: (2076874076076324754, GetElementAt) collides with entity: (2076874076076324754, GetElementAt)
    [Refureku] WARNING: Double registration detected: (7605404597672029496, size) collides with entity: (7605404597672029496, size)
    [Refureku] WARNING: Double registration detected: (9954276657655150362, AddNewElement) collides with entity: (9954276657655150362, AddNewElement)
    

    Here is the vector class :

    // STDTemplateClass used as a global instance for all standard template classes
    template <typename Type>
    class HY_CLASS() HyVector final : public STDTemplateClass, public std::vector<Type>
    {
    
    public:
    	HY_METHOD() std::size_t size();
    	HY_METHOD() void* GetElementAt(std::size_t index);
    	HY_METHOD() void* AddNewElement();
    
    	HyVector_GENERATED
    };
    

    This drives to another problem. When I'm trying to retrieve some methods from the class template instantiation given by the field archetype, methods are not found and are set to null. I bypassed this problem by retrieving the base archetype on the database from the field archetype ID.

    // From field archetype
    rfk::Archetype const* fieldArchetype = field.getType().getArchetype();
    rfk::ClassTemplateInstantiation const* cTempInstance = rfk::classTemplateInstantiationCast(fieldArchetype );
    
    // Retrieve vector instance
    STDTemplateClass& vecClass = *reinterpret_cast<STDTemplateClass*>(field.getPtr(owner));
    
    // Here, the getMethod is not valid
    rfk::Method const* getMethod = cTempInstance->getMethodByName("GetElementAt");
    
    
    // From field archetype ID
    fieldArchetype = rfk::getDatabase().getClassById(fieldArchetype ->getId());
    cTempInstance = rfk::classTemplateInstantiationCast(fieldArchetype);
    
    // Here, the getMethod is valid and usable
    getMethod = cTempInstance->getMethodByName("GetElementAt");
    
    bug 
    opened by SLegrandIsart 1
Releases(v2.2.0)
  • v2.2.0(May 13, 2022)

    New

    • (#11) A bunch of new methods were added to the Field and Method classes to have more control when instances are stored in void* variables.
      • Field::getUnsafe<>(void [const]* instance)
      • Field::setUnsafe<>(void [const]* instance, Value value)
      • Field::setUnsafe(void [const]* instance, void const* valuePtr, size_t valueSize)
      • Field::getPtrUnsafe(void [const]* instance)
      • Field::getConstPtrUnsafe(void [const]* instance)
      • Method::invokeUnsafe(void [const]* caller, ArgTypes&&... args)
      • Method::checkedInvokeUnsafe(void [const]* caller, ArgTypes&&... args)

    Since the static and dynamic archetypes of provided instances is unknown, no pointer adjustment can be performed explaining the "unsafe" naming, but it is nearly always safe as long as instances do not use multiple inheritance.

    Updates

    • The InvalidCaller exception was renamed InvalidArchetype
    • Since unsafe methods have been added to Field and Method classes, all originally available methods are now completely safe and require the provided instance to be reflected and implement both the static staticGetArchetype method and override the virtual getArchetype method inherited from rfk::Object. If the provided instance has an invalid type to access the field / call the method, the InvalidArchetype exception is thrown.
      • Field::get<>
      • Field::set<>
      • Field::set
      • Field::getPtr
      • Field::getConstPtr
      • Method::invoke
      • Method::checkedInvoke

    The rfk::Object inheritance requirement is heavy so I'm thinking about a way to tell the generator to generate the getArchetype base definition / override if the parsed class is or inherits from any of a user-customizable set of classes.

    • TypeTemplateArgument class now stores a Type instead of an Archetype.

    Fixes

    • Field class methods now correctly perform the instance pointer adjustment when necessary.
    Source code(tar.gz)
    Source code(zip)
    rfk_v2.2.0_linux.tar.gz(28.62 MB)
    rfk_v2.2.0_macos.tar.gz(26.05 MB)
    rfk_v2.2.0_windows.zip(24.25 MB)
  • v2.1.2(Apr 22, 2022)

    New

    • A new optional parameter orderedByDeclaration has been added to the method rfk::Struct::getFieldsByPredicate. As its name states it, the returned fields are ordered by declaration order (inherited fields first) when orderedByDeclaration is set to true. You can now easily iterate over all fields of a Struct in the right order with the following lines:
    rfk::Struct const& yourStruct = ...;
    for (rfk::Field const* field : yourStruct.getFieldsByPredicate([](rfk::Field const&, void*){ return true; }, nullptr, true, true))
    {
    }
    
    • A macro has been added to automatically generate the base getArchetype method for class templates from a given template signature:
    //Before 2.1.2
    namespace rfk
    {
        template <template <typename, int> typename>
        rfk::Archetype const* getArchetype() noexcept { return nullptr; }
    }
    
    //From 2.1.2
    RFK_DEFINE_GET_ARCHETYPE_TEMPLATE(typename, int)
    
    template <typename T, int U>
    class CLASS() ClassTemplateWithDifferentTemplateParamTypes
    {
        ClassTemplateWithDifferentTemplateParamTypes_GENERATED
    };
    

    Updates

    • Code generation has been simplified for enums. This doesn't impact the Refureku API.
    • Code generation for reflected class templates have been slightly improved (especially class templates nested in other classes).

    Fixes

    • Archetypes non-publicly nested in structs/classes are now correctly handled. rfk::getArchetype<> and rfk::getEnum<> now return valid metadata in contexts where said archetypes are accessible (it was retruning nullptr before).
    #include "Generated/ExampleClass.rfkh.h"
    
    class CLASS() ExampleClass
    {
        private:
            class CLASS() NestedPrivateClass
            {
                ExampleClass_NestedPrivateClass_GENERATED
            };
    
            enum class ENUM() NestedPrivateEnum
            {
            };
    
            void testMethod()
            {
                //Both of those calls do not return nullptr anymore
                rfk::getArchetype<NestedPrivateClass>();
                rfk::getEnum<NestedPrivateEnum>();
            }
    
        ExampleClass_GENERATED
    };
    
    File_ExampleClass_GENERATED
    
    Source code(tar.gz)
    Source code(zip)
    rfk_v2.1.2_linux.tar.gz(28.62 MB)
    rfk_v2.1.2_macos.tar.gz(26.05 MB)
    rfk_v2.1.2_windows.zip(24.25 MB)
  • v2.1.1(Apr 18, 2022)

    This patch brings some fixes and stability improvements:

    • rfk::dynamicCast / rfk::dynamicUpCast / rfk::dynamicDownCast internal implementations moved from header file to source file to avoid recompilations if the implementation is modified.
    • When instantiating a class through the rfk::Struct::makeSharedInstance and rfk::Struct::makeUniqueInstance methods, the pointer is correctly adjusted if the return type has a non-zero memory offset compared to the instantiated class (happens when the class uses multiple inheritance with polymorphic parents -> multiple virtual tables).
    class CLASS() A
    {
        public:
            virtual ~A() = default;
    
        A_GENERATED
    };
    
    class CLASS() B
    {
        public:
            virtual ~B() = default;
    
        B_GENERATED
    };
    
    class CLASS() C : public A, public B
    {
        C_GENERATED
    };
    
    //....
    
    //Was valid before since casting from C to A doesn't change the pointer address
    C::staticGetArchetype().makeSharedInstance<A>();
    
    //Was not valid before since casting from C to B does change the pointer address
    //but Refureku was not doing the pointer adjustment internally
    //This is now fixed with version 2.1.1
    C::staticGetArchetype().makeSharedInstance<B>();
    
    Source code(tar.gz)
    Source code(zip)
    rfk_v2.1.1_linux.tar.gz(28.61 MB)
    rfk_v2.1.1_macos.tar.gz(26.05 MB)
    rfk_v2.1.1_windows.zip(24.24 MB)
  • v2.1.0(Apr 14, 2022)

    The 2.1.0 minor update introduces a few new features, some slight performance/memory improvements and patch some bugs.

    New

    • Custom instantiators now support rfk::UniquePtr as well! You can now declare instantiators returning a rfk::UniquePtr. See the Instantiator wiki page for more information.
    • The last version of Kodgen brings a new feature allowing to select the C++ version used to parse the code, hence bringing support for C++20 syntax (concepts etc...). See Kodgen file parser settings for details.
    • A custom dynamicCast function is now available to perform casts on reflected class types independently of the native c++ RTTI system. It hasn't been benchmarked nor optimized yet, so there's no performance improvement guarantee compared to the native C++ dynamic_cast as of now.

    Updates

    • checkedInvoked can't be called on instances not inheriting from rfk::Object anymore. checkedInvoke needs to access the dynamic archetype of an instance to be able to adjust the caller pointer when necessary.
    • Memory for fields and methods is now allocated ahead of time with the exact necessary amount of memory to avoid unnecessary reallocations and unused memory, slightly improving startup time and memory footprint.

    Fixes

    • Parent virtual methods are now callable with rfk::Method::invoke and rfk::Method::checkedInvoke on children instances without crash. However, rfk::Method::checkedInvoke now requires the caller to inherit from rfk::Object, and rfk::Method::invoke is not safe if the method is virtual, the caller pointer doesn't immediately point to the called method vtable, and the caller doesn't inherit from rfk::Object.
    • Structs metadata are now correctly unregistered from other related Structs (parents, subclasses) when they are released. Not doing so was causing corrupted pointers to released metadata when said metadata was part of a dynamically unloaded library.
    Source code(tar.gz)
    Source code(zip)
    rfk_v2.1.0_linux.tar.gz(28.62 MB)
    rfk_v2.1.0_macos.tar.gz(26.05 MB)
    rfk_v2.1.0_windows.zip(24.24 MB)
  • v2.0.3(Mar 21, 2022)

    This patch brings some fixes when Refureku is used on dynamic libraries.

    • The parser now correctly detects rfk::Object inheritance when using export macro on classes, hence correctly generating the getArchetype override.
    • We now have the possibility to define an export macro in the CodeGenUnit settings so that the generated code is also exported in the dynamic library.

    With the generator c++ API:

    kodgen::MacroCodeGenUnitSettings codeGenUnitSettings;
    codeGenUnitSettings.setExportSymbolMacroName("YOUR_EXPORT_MACRO");
    

    With the toml settings file:

    [CodeGenUnitSettings]
    exportSymbolMacroName = "YOUR_EXPORT_MACRO"
    
    Source code(tar.gz)
    Source code(zip)
    rfk_v2.0.3_linux.tar.gz(28.60 MB)
    rfk_v2.0.3_macos.tar.gz(26.03 MB)
    rfk_v2.0.3_windows.zip(24.23 MB)
  • v2.0.2(Dec 23, 2021)

    This new patch version brings a few quality of life slight modifications not related to the API:

    • The Linux prebuilt binaries are 2 times smaller than in the previous releases. This was due to the fact that libclang.so was incorrectly included twice in the archive because of a symlink.
    • In prebuilt binaries, the RefurekuGenerator executable should be able to locate and load libclang.so automatically if it is placed next to the executable (see #8).
    • GoogleTests is not a git submodule anymore and is fetched when building the project if tests are enabled. You can generate the project without tests with the -DBUILD_TESTING=OFF CMake flag (in which case Google tests won't be fetched).
    • There's now a REFUREKU_VERSION macro in the Config.h file. For the v2.0.2, REFUREKU_VERSION evaluates to (0)20002.
    #if REFUREKU_VERSION >= 20002
    //This Refureku version is >= to v2.0.2
    #endif
    
    • [RefurekuGenerator] All entity registerers are now marked as const variables.
    Source code(tar.gz)
    Source code(zip)
    rfk_v2.0.2_linux.tar.gz(28.60 MB)
    rfk_v2.0.2_macos.tar.gz(26.03 MB)
    rfk_v2.0.2_windows.zip(24.23 MB)
  • v2.0.1(Nov 20, 2021)

  • v2.0.0(Nov 12, 2021)

    It’s been nearly a year since the last Refureku release (v1.4.0). I was really busy and unfortunately couldn’t spend much time on the project. I had a lot of feedbacks from users and realized a bunch of things were not right, which is the reason for this major jump to v2. This release brings new interesting features and is overall more robust and stable than the previous major release.

    Breaking changes

    • The library is now dynamic instead of static. The static model could not support reflection on dynamically loaded libraries and had a lot of limitations when linked to the target executable as well as dynamically loaded libraries (symbols duplication, bad registration, among others).
    • Library classes content is not accessible through public fields anymore. The API now uses the Pimpl idiom for better compatibility and robustness, and all data are accessible through method calls.
    • rfk::isReflectedClass traits doesn’t exist anymore.
    • A lot of members have been renamed with more explicit names.
    • The CustomInstantiator property was renamed in Instantiator.
    • Database is now accessible by calling rfk::getDatabase().
    • Refureku native properties moved in the rfk namespace.
    • The generated code is now split in 2 files. The generated header file must be included in headers (like before), and the generated source file must be included in a single translation unit.
    • Kodgen was updated to v2.0.0 along Refureku, so the code generation API has completely changed.

    New

    • Class templates support (except variadic and auto non-type template parameters).
    • Dynamically loaded libraries reflection support.
    • When providing a custom instantiator, custom deleters can now be specified as well.
    • rfk::getField<&field> and rfk::getMethod<&method> functions.
    • Tested MacOS support!
    • Online hosted documentation: documentation
    • Code coverage as well as a full tests suite using GoogleTests.
    • Logo

    Update

    • Due to the use of the Pimpl idiom, all implementation details are now hidden in the library source files, greatly reducing compile times and obj files size.
    • Get[Entity]ByPredicate methods are not noexcept anymore to allow exception propagation from the user provided predicate.
    • Database now issues a warning in case an id is registered multiple times (id collision).
    • Completely reworked Wiki and README.

    Fix

    • Structs generate new ids for each inherited field. Having the same id could lead to crashes if a parent's field was used on a child class having different internal offsets.
    • Variable / function reflection using incomplete (forward declared) types are now working as expected.
    Source code(tar.gz)
    Source code(zip)
    rfk_v2.0.0_linux.tar.gz(56.55 MB)
    rfk_v2.0.0_macos.tar.gz(26.03 MB)
    rfk_v2.0.0_windows.zip(24.23 MB)
  • v1.4.0(Nov 27, 2020)

    Add

    • New cmake compilation flag GEN_PROPERTY_RTTI for programs using the library with RTTI on
    • User-defined properties can now generate custom code
    • New overloads to search all kinds of entities by predicate
    • Intermediate methods to fill entities metadata. It is used by the generated code and makes a cleaner way to manually setup and register entities.

    Update

    • Complete rework of the property system
    • Spaces are not ignored by default when parsing properties

    Remove

    /

    Source code(tar.gz)
    Source code(zip)
    rfk_1.4.0_clang10_Win64.zip(38.41 MB)
    rfk_1.4.0_msvc2017_Win64.zip(38.39 MB)
  • v1.3.0(Oct 27, 2020)

    Add

    • Function reflection
    • Variable reflection
    • Multithreaded code generator
    • rfk::Enum::underlyingType
    • rfk::getArchetype template function available for any type
    • compiler setting
    • More informative logs when loading settings from the RefurekuSettings.toml file

    Update

    • Accelerate file parsing (ignore generated code)
    • Entity::EKind enum now contains a value of each concrete Entity class
    • Fundamental archetypes now register to the database
    • Rename rfk::ReflectedObject to rfk::Object
    • Settings are now safer to manipulate (check paths, compiler support...)

    Remove

    • DynamicGetArchetype property - Each reflected class inheriting directly or indirectly from rfk::Object will now have their getArchetype method overriden
    Source code(tar.gz)
    Source code(zip)
    rfk_1.3.0_Win64.zip(64.52 MB)
  • v1.2.0(Aug 6, 2020)

    Add

    • Namespace reflection support
    • Nested struct/class/enum reflection support
    • shouldParseAllEntities setting (editable in .toml settings file)
    • outerEntity field to Entity base class. Allows to know in which entity an entity is nested (has been declared)
    • Enum and namespace auto-registration through a single macro: File_GENERATED
    • Documentation, more documentation!

    Update

    • Default subproperty encloser to ( )
    • README
    Source code(tar.gz)
    Source code(zip)
    rfk_1.2.0_Win_x64.zip(34.65 MB)
  • v1.1.2(Jun 5, 2020)

    Add

    • New stability tests on Linux 18.04 / Clang 10.0.0 and G++10 (travis)
    • Documentation to main framework class headers

    Update

    • Minor compatibility improvements on Clang
    • Struct::getMethod() and Struct::getStaticMethod() template version with more user-friendly template syntax
    • Exception handling in Method::invoke(), Method::checkedInvoke(), StaticMethod::invoke() and StaticMethod;;checkedInvoke
    • Some README sections

    Fix

    • Compatibility problems when using MSVC v141 platform toolset
    Source code(tar.gz)
    Source code(zip)
    rfk_1.1.2_Win_x64.zip(26.17 MB)
  • v1.1.1(Apr 19, 2020)

  • v1.1.0(Apr 16, 2020)

    This release brings a lot of documentation and a bunch of new features that make Refureku easier to use.

    Fixes

    • makeInstance in now only defined for Struct or Class classes (instead of Archetype in the previous version)
    • Delete all LLVM static libs to keep only libclang shared library

    Updates

    • Remove all warnings from the library + generated code
    • [Method|StaticMethod]::safeInvoke becomes [Method|StaticMethod]::checkedInvoke

    New features

    • Can get any entity by its unique ID from the Database
    • Can get a method by prototype (templated)
    • New builtin property CustomInstantiator. See here
    • Customizable using a TOML file
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Apr 6, 2020)

    This release is the first stable version containing most of the features of the library. It has been tested on Windows using MSVC 2019 (16.4.6), and on Linux G++8/9 & Clang7/8/9.

    Source code(tar.gz)
    Source code(zip)
Owner
Julien SOYSOUVANH
Game programming student.
Julien SOYSOUVANH
Header-only, non-intrusive and macro-free runtime reflection system in C++

Header-only runtime reflection system in C++ The reflection system was born within EnTT and is developed and enriched there. This project is designed

Michele Caini 452 Jan 4, 2023
C++ reflection library with Lua binding, and JSON and XML serialisation.

Ponder Linux & OSX: - Windows: Currents status: 3.2-alpha. API is unstable as features added/changed. New: Version 3 V1 replaced Boost with C++11. V2

Bill Quith 573 Dec 28, 2022
C++ Reflection Library

!New Release - 0.9.6! RTTR C++ Reflection Library RTTR stands for Run Time Type Reflection. It describes the ability of a computer program to introspe

rttr.org 2.5k Jan 3, 2023
A miniature library for struct-field reflection in C++

visit_struct A header-only library providing structure visitors for C++11 and C++14. Motivation In C++ there is no built-in way to iterate over the me

null 393 Dec 12, 2022
A modern compile-time reflection library for C++ with support for overloads, templates, attributes and proxies

refl-cpp v0.12.1 Documentation refl-cpp encodes type metadata in the type system to allow compile-time reflection via constexpr and template metaprogr

Veselin Karaganev 783 Dec 31, 2022
A miniature library for struct-field reflection in C++

visit_struct A header-only library providing structure visitors for C++11 and C++14. Motivation In C++ there is no built-in way to iterate over the me

null 397 Jan 7, 2023
A compiling time static reflection framework for C++

static_reflect This is a fully compiling time static reflection lightweight framework for C++. It provides a very rich compile-time reflection functio

null 13 Dec 25, 2022
cpgf library

cpgf library cpgf library is a cross platform C++ library for callback, reflection, serialization and script binding. It's written in standard C++ and

cpgf library 208 Sep 13, 2022
C++ Reflection Parser / Runtime Skeleton

C++ Reflection Preface I worked on a complete reflection pipeline starting in the summer of 2015 for a game project / editor. My intent by creating th

Austin Brunkhorst 555 Dec 24, 2022
Header-only, non-intrusive and macro-free runtime reflection system in C++

Header-only runtime reflection system in C++ The reflection system was born within EnTT and is developed and enriched there. This project is designed

Michele Caini 452 Jan 4, 2023
Cross-platform, efficient, customizable, and robust asynchronous HTTP/WebSocket server C++14 library with the right balance between performance and ease of use

What Is RESTinio? RESTinio is a header-only C++14 library that gives you an embedded HTTP/Websocket server. It is based on standalone version of ASIO

Stiffstream 924 Jan 6, 2023
Rich text library supporting customizable Markdown formatting

Rich text library supporting customizable Markdown formatting

Brace Yourself Games 95 Dec 30, 2022
NoirVisor Customizable VM API Library

NoirCvmApi NoirVisor Customizable VM API Library Introduction NoirVisor is a hardware-accelerated hypervisor solution. This repository is a library pr

Zero Tang 6 Dec 14, 2022
MediaPipe offers cross-platform, customizable ML solutions for live and streaming media.

Cross-platform, customizable ML solutions for live and streaming media.

Google 20k Jan 9, 2023
Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node.js, and Qt applications, powered by vector tiles and OpenGL

Mapbox GL Native A C++ library that powers customizable vector maps in native applications on multiple platforms by taking stylesheets that conform to

Mapbox 4.2k Jan 6, 2023
SMARTmBOT - a new, customizable, scalable, and fully opensource mobile robot platform

The goal of this repository is to introduce a new, customizable, scalable, and fully opensource mobile robot platform, called SMARTmBOT. This repository provides a guide, and all design files and source codes so that you can build your own SMARTmBOT. SMARTmBOT can be useful for studying the basics of robotics, especially mobile robotics. It can also be used to study advanced topics such as swarm robotics.

SMART Lab at Purdue University 39 Jan 2, 2023
Skylark Edit is a customizable text/hex editor. Small, Portable, Fast.

Skylark Edit is written in C, a high performance text/hex editor. Embedded Database-client/Redis-client/Lua-engine. You can run Lua scripts and SQL files directly.

hua andy 265 Dec 30, 2022
wtf is a distributed, code-coverage guided, customizable, cross-platform snapshot-based fuzzer designed for attacking user and / or kernel-mode targets running on Microsoft Windows.

wtf is a distributed, code-coverage guided, customizable, cross-platform snapshot-based fuzzer designed for attacking user and / or kernel-mode targets running on Microsoft Windows.

Axel Souchet 1.1k Dec 30, 2022
The most powerful and customizable binary pattern scanner written on modern C++

Sig The most powerful and customizable binary pattern scanner written on modern C++ ✔ Capabilities: Support for all common pattern formats: Pattern +

Александр 153 Dec 21, 2022