// Copyright (c) 2013 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.

#include "tools/gn/input_file.h"

#include "base/files/file_util.h"

InputFile::InputFile(const SourceFile& name)
    : name_(name),
      dir_(name_.GetDir()),
      contents_loaded_(false) {
}

InputFile::~InputFile() = default;

void InputFile::SetContents(const std::string& c) {
  contents_loaded_ = true;
  contents_ = c;
}

bool InputFile::Load(const base::FilePath& system_path) {
  if (base::ReadFileToString(system_path, &contents_)) {
    contents_loaded_ = true;
    physical_name_ = system_path;
    return true;
  }
  return false;
}

