Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/compiler/preprocessor/Preprocessor.h
1693 views
1
//
2
// Copyright 2011 The ANGLE Project Authors. All rights reserved.
3
// Use of this source code is governed by a BSD-style license that can be
4
// found in the LICENSE file.
5
//
6
7
#ifndef COMPILER_PREPROCESSOR_PREPROCESSOR_H_
8
#define COMPILER_PREPROCESSOR_PREPROCESSOR_H_
9
10
#include <cstddef>
11
12
#include "GLSLANG/ShaderLang.h"
13
#include "common/angleutils.h"
14
15
namespace angle
16
{
17
18
namespace pp
19
{
20
21
class Diagnostics;
22
class DirectiveHandler;
23
struct PreprocessorImpl;
24
struct Token;
25
26
struct PreprocessorSettings final
27
{
28
PreprocessorSettings(ShShaderSpec shaderSpec)
29
: maxMacroExpansionDepth(1000), shaderSpec(shaderSpec)
30
{}
31
32
PreprocessorSettings(const PreprocessorSettings &other) = default;
33
34
int maxMacroExpansionDepth;
35
ShShaderSpec shaderSpec;
36
};
37
38
class Preprocessor : angle::NonCopyable
39
{
40
public:
41
Preprocessor(Diagnostics *diagnostics,
42
DirectiveHandler *directiveHandler,
43
const PreprocessorSettings &settings);
44
~Preprocessor();
45
46
// count: specifies the number of elements in the string and length arrays.
47
// string: specifies an array of pointers to strings.
48
// length: specifies an array of string lengths.
49
// If length is NULL, each string is assumed to be null terminated.
50
// If length is a value other than NULL, it points to an array containing
51
// a string length for each of the corresponding elements of string.
52
// Each element in the length array may contain the length of the
53
// corresponding string or a value less than 0 to indicate that the string
54
// is null terminated.
55
bool init(size_t count, const char *const string[], const int length[]);
56
// Adds a pre-defined macro.
57
void predefineMacro(const char *name, int value);
58
59
void lex(Token *token);
60
61
// Set maximum preprocessor token size
62
void setMaxTokenSize(size_t maxTokenSize);
63
64
private:
65
PreprocessorImpl *mImpl;
66
};
67
68
} // namespace pp
69
70
} // namespace angle
71
72
#endif // COMPILER_PREPROCESSOR_PREPROCESSOR_H_
73
74