// // Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // #ifndef COMPILER_PREPROCESSOR_INPUT_H_ #define COMPILER_PREPROCESSOR_INPUT_H_ #include namespace pp { // Holds and reads input for Lexer. class Input { public: Input(); Input(int count, const char* const string[], const int length[]); int count() const { return mCount; } const char* string(int index) const { return mString[index]; } int length(int index) const { return mLength[index]; } int read(char* buf, int maxSize); struct Location { int sIndex; // String index; int cIndex; // Char index. Location() : sIndex(0), cIndex(0) { } }; const Location& readLoc() const { return mReadLoc; } private: // Input. int mCount; const char* const* mString; std::vector mLength; Location mReadLoc; }; } // namespace pp #endif // COMPILER_PREPROCESSOR_INPUT_H_