blob: 8e5b1e906368f665a8480e8b02c464a815ad7335 [file] [log] [blame]
//
// 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 <vector>
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<int> mLength;
Location mReadLoc;
};
} // namespace pp
#endif // COMPILER_PREPROCESSOR_INPUT_H_