//===----------------------------------------------------------------------===// // // 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 OutputBackend::createFile(const Twine &Path, std::optional Config) { SmallString<128> PathStorage; Path.toVector(PathStorage); if (Config) { // Check for invalid configs. if (!Config->getText() && Config->getCRLF()) return make_error(*Config, PathStorage); } std::unique_ptr 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)); }