| //===----------------------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /// | |
| /// \file | |
| /// This file implements \c vfs::OutputBackend class methods. | |
| /// | |
| //===----------------------------------------------------------------------===// | |
| #include "llvm/Support/VirtualOutputBackend.h" | |
| #include "llvm/ADT/SmallString.h" | |
| #include "llvm/Support/VirtualOutputError.h" | |
| using namespace llvm; | |
| using namespace llvm::vfs; | |
| void OutputBackend::anchor() {} | |
| Expected<OutputFile> | |
| OutputBackend::createFile(const Twine &Path, | |
| std::optional<OutputConfig> Config) { | |
| SmallString<128> PathStorage; | |
| Path.toVector(PathStorage); | |
| if (Config) { | |
| // Check for invalid configs. | |
| if (!Config->getText() && Config->getCRLF()) | |
| return make_error<OutputConfigError>(*Config, PathStorage); | |
| } | |
| std::unique_ptr<OutputFileImpl> Impl; | |
| if (Error E = createFileImpl(PathStorage, Config).moveInto(Impl)) | |
| return std::move(E); | |
| assert(Impl && "Expected valid Impl or Error"); | |
| return OutputFile(PathStorage, std::move(Impl)); | |
| } |