CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
FuncNameConverter.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2022 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
10#include "VisitorTracker.hpp"
11
13
17
19
20#include <functional>
21
23
24 // Function name mangling AST converter.
26 public:
27 // Function signature compare callback interface, which returns true if the signatures are considered to be equal.
29
30 private:
32
36
38
39 public:
40 // Conversion flags enumeration.
41 enum : UInt32 {
42 // Rename all member functions to "{Prefix}{OwnerStruct}_{FunctionName}"
44
45 // Rename functions where the signatures are equal, specified by the signature compare callback.
47
49 };
50
51 // Converts the function declaration identigiers in the specified AST.
53
54 private: // Conversion
57
58 private: // Visitor implementation
62
64 };
65
66} // namespace CeresEngine::ShaderCompiler
#define DECLARATION_VISIT_PROC(CLASS_NAME)
Definition Visitor.hpp:88
Definition Flags.hpp:235
Definition FuncNameConverter.hpp:25
void convert(Program &program, const NameMangling &nameMangling, const OnFuncSigantureCompare &onFuncSignatureCompare, const RawFlags &conversionFlags)
@ RenameMemberFunctions
Definition FuncNameConverter.hpp:43
@ RenameFunctionSignatures
Definition FuncNameConverter.hpp:46
@ All
Definition FuncNameConverter.hpp:48
void convertEqualFunctionSignatures(FuncList &funcList)
void convertMemberFunctionName(FunctionDeclaration &funcDeclaration, UInt32 &nameIndex)
NameMangling mNameMangling
Definition FuncNameConverter.hpp:33
Vector< FunctionDeclaration * > FuncList
Definition FuncNameConverter.hpp:31
Function< bool(const FunctionDeclaration &lhs, const FunctionDeclaration &rhs) const > OnFuncSigantureCompare
Definition FuncNameConverter.hpp:28
RawFlags mConversionFlags
Definition FuncNameConverter.hpp:35
OnFuncSigantureCompare mOnFuncSignatureCompare
Definition FuncNameConverter.hpp:34
Map< String, FuncList > mFuncDeclarationMap
Definition FuncNameConverter.hpp:37
Definition VisitorTracker.hpp:18
Definition AST.hpp:33
std::vector< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > Vector
Vector is a sequence container that encapsulates dynamic size arrays.
Definition Vector.hpp:17
FunctionBase< true, true, fu2::capacity_default, true, false, Signatures... > Function
An owning copyable function wrapper for arbitrary callable types.
Definition Function.hpp:54
std::uint32_t UInt32
Definition DataTypes.hpp:23
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
std::map< Key, T, Compare, ScopedAllocatorAdaptor< StdAllocator< Pair< const Key, T >, RawAllocator > > > Map
Map is a sorted associative container that contains key-value pairs with unique keys.
Definition Map.hpp:24
Name mangling descriptor structure for shader input/output variables (also referred to as "varyings")...
Definition ShaderCompiler.hpp:185