1ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley/*
2ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley * Copyright (C) 2015, The Android Open Source Project
3ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley *
4ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley * Licensed under the Apache License, Version 2.0 (the "License");
5ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley * you may not use this file except in compliance with the License.
6ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley * You may obtain a copy of the License at
7ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley *
8ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley *     http://www.apache.org/licenses/LICENSE-2.0
9ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley *
10ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley * Unless required by applicable law or agreed to in writing, software
11ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley * distributed under the License is distributed on an "AS IS" BASIS,
12ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley * See the License for the specific language governing permissions and
14ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley * limitations under the License.
15ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley */
16ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
17ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley#ifndef AIDL_LINE_READER_H_
18ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley#define AIDL_LINE_READER_H_
19ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
20ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley#include <memory>
21ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley#include <string>
22ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
230a62067f35e957493bc37c4b42dfdcfc16353831Elliott Hughes#include <android-base/macros.h>
24ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
25ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wileynamespace android {
26ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wileynamespace aidl {
27ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
28ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wileyclass LineReader {
29ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley public:
30ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley  LineReader() = default;
31ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley  virtual ~LineReader() = default;
32ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley  virtual bool ReadLine(std::string* line) = 0;
33ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
34ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley  static std::unique_ptr<LineReader> ReadFromFile(
35ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley      const std::string& file_path);
36ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley  static std::unique_ptr<LineReader> ReadFromMemory(
37ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley      const std::string& contents);
38ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
39ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley private:
40ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley  DISALLOW_COPY_AND_ASSIGN(LineReader);
41ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley};  // class LineReader
42ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
43ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley}  // namespace android
44ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley}  // namespace aidl
45ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
46ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley#endif // AIDL_LINE_READER_H_
47