14e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// 24e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. 34e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// Use of this source code is governed by a BSD-style license that can be 44e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// found in the LICENSE file. 54e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org// 64e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 74e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org#ifndef COMPILER_PREPROCESSOR_INPUT_H_ 84e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org#define COMPILER_PREPROCESSOR_INPUT_H_ 94e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 10d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.com#include <stddef.h> 1130a487c7288394ad26ed4a54846567bf868a8f13alokp@chromium.org#include <vector> 1298eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org 134e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.orgnamespace pp 144e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org{ 154e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 1698eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org// Holds and reads input for Lexer. 1798eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.orgclass Input 184e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org{ 1998eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org public: 2098eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org Input(); 21d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo Input(size_t count, const char *const string[], const int length[]); 224e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 23d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo size_t count() const 24d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo { 25d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo return mCount; 26d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo } 27d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo const char *string(size_t index) const 28d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo { 29d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo return mString[index]; 30d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo } 31d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo size_t length(size_t index) const 32d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo { 33d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo return mLength[index]; 34d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo } 354e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 36d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo size_t read(char *buf, size_t maxSize); 3798eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org 3898eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org struct Location 3998eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org { 40d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.com size_t sIndex; // String index; 41d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.com size_t cIndex; // Char index. 4298eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org 43d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo Location() 44d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo : sIndex(0), 45d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo cIndex(0) 46d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo { 47d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo } 4898eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org }; 49d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo const Location &readLoc() const { return mReadLoc; } 5098eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org 5198eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org private: 5298eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org // Input. 53d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.com size_t mCount; 54d526f9895c0aa867adb74a78e53832a9240c6ad6Zhenyao Mo const char * const *mString; 55d64b3dab06c30da1e5dd9ba12667ff86388540e2shannon.woods@transgaming.com std::vector<size_t> mLength; 5698eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org 5798eec91296f500b38c0f274e9de6dcfa03fcfd41alokp@chromium.org Location mReadLoc; 584e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org}; 594e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 604e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org} // namespace pp 614e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org#endif // COMPILER_PREPROCESSOR_INPUT_H_ 624e4b807d219f58fad5f7b96ed23c9fdd1fc5de15alokp@chromium.org 63