| //===-- StreamWrapper.h -----------------------------------------*- C++ -*-===// |
| // |
| // 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 |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_LIBC_UTILS_TESTUTILS_STREAMWRAPPER_H |
| #define LLVM_LIBC_UTILS_TESTUTILS_STREAMWRAPPER_H |
| |
| namespace __llvm_libc { |
| namespace testutils { |
| |
| // StreamWrapper is necessary because llvm/Support/raw_ostream.h includes |
| // standard headers so we must provide streams through indirection to not |
| // expose the system libc headers. |
| class StreamWrapper { |
| protected: |
| void *OS; |
| |
| public: |
| StreamWrapper(void *OS) : OS(OS) {} |
| |
| template <typename T> StreamWrapper &operator<<(T t); |
| }; |
| |
| StreamWrapper outs(); |
| |
| class OutputFileStream : public StreamWrapper { |
| public: |
| explicit OutputFileStream(const char *FN); |
| ~OutputFileStream(); |
| }; |
| |
| } // namespace testutils |
| } // namespace __llvm_libc |
| |
| #endif // LLVM_LIBC_UTILS_TESTUTILS_STREAMWRAPPER_H |