// Copyright 2014 The Chromium 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 TOOLS_GN_C_INCLUDE_ITERATOR_H_
#define TOOLS_GN_C_INCLUDE_ITERATOR_H_

#include <stddef.h>

#include <string_view>

#include "base/macros.h"
#include "gn/location.h"

class InputFile;

struct IncludeStringWithLocation {
  std::string_view contents;
  LocationRange location;
  bool system_style_include = false;
};

// Iterates through #includes in C source and header files.
class CIncludeIterator {
 public:
  // The InputFile pointed to must outlive this class.
  explicit CIncludeIterator(const InputFile* input);
  ~CIncludeIterator();

  // Fills in the string with the contents of the next include, and the
  // location with where it came from, and returns true, or returns false if
  // there are no more includes.
  bool GetNextIncludeString(IncludeStringWithLocation* include);

  // Maximum numbef of non-includes we'll tolerate before giving up. This does
  // not count comments or preprocessor.
  static const int kMaxNonIncludeLines;

 private:
  // Returns false on EOF, otherwise fills in the given line and the one-based
  // line number into *line_number;
  bool GetNextLine(std::string_view* line, int* line_number);

  const InputFile* input_file_;

  // This just points into input_file_.contents() for convenience.
  std::string_view file_;

  // 0-based offset into the file.
  size_t offset_ = 0;

  int line_number_ = 0;  // One-based. Indicates the last line we read.

  // Number of lines we've processed since seeing the last include (or the
  // beginning of the file) with some exceptions.
  int lines_since_last_include_ = 0;

  DISALLOW_COPY_AND_ASSIGN(CIncludeIterator);
};

#endif  // TOOLS_GN_C_INCLUDE_ITERATOR_H_
