gfx/angle/src/compiler/preprocessor/Input.h

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:6315a6784ae0
1 //
2 // Copyright (c) 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_INPUT_H_
8 #define COMPILER_PREPROCESSOR_INPUT_H_
9
10 #include <stddef.h>
11 #include <vector>
12
13 namespace pp
14 {
15
16 // Holds and reads input for Lexer.
17 class Input
18 {
19 public:
20 Input();
21 Input(size_t count, const char* const string[], const int length[]);
22
23 size_t count() const { return mCount; }
24 const char* string(size_t index) const { return mString[index]; }
25 size_t length(size_t index) const { return mLength[index]; }
26
27 size_t read(char* buf, size_t maxSize);
28
29 struct Location
30 {
31 size_t sIndex; // String index;
32 size_t cIndex; // Char index.
33
34 Location() : sIndex(0), cIndex(0) { }
35 };
36 const Location& readLoc() const { return mReadLoc; }
37
38 private:
39 // Input.
40 size_t mCount;
41 const char* const* mString;
42 std::vector<size_t> mLength;
43
44 Location mReadLoc;
45 };
46
47 } // namespace pp
48 #endif // COMPILER_PREPROCESSOR_INPUT_H_
49

mercurial