dxcfilesystem.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // //
  3. // dxcfilesystem.h //
  4. // Copyright (C) Microsoft Corporation. All rights reserved. //
  5. // This file is distributed under the University of Illinois Open Source //
  6. // License. See LICENSE.TXT for details. //
  7. // //
  8. // Provides helper file system for dxcompiler. //
  9. // //
  10. ///////////////////////////////////////////////////////////////////////////////
  11. #pragma once
  12. #include "dxc/dxcapi.h"
  13. #include "llvm/Support/MSFileSystem.h"
  14. namespace clang {
  15. class CompilerInstance;
  16. }
  17. namespace llvm {
  18. class raw_string_ostream;
  19. namespace sys {
  20. namespace fs {
  21. class MSFileSystem;
  22. }
  23. } // namespace sys
  24. } // namespace llvm
  25. namespace dxcutil {
  26. class DxcArgsFileSystem : public ::llvm::sys::fs::MSFileSystem {
  27. public:
  28. virtual ~DxcArgsFileSystem(){};
  29. virtual void SetupForCompilerInstance(clang::CompilerInstance &compiler) = 0;
  30. virtual void GetStdOutpuHandleStream(IStream **ppResultStream) = 0;
  31. virtual void WriteStdErrToStream(llvm::raw_string_ostream &s) = 0;
  32. virtual void EnableDisplayIncludeProcess() = 0;
  33. virtual HRESULT CreateStdStreams(_In_ IMalloc *pMalloc) = 0;
  34. virtual HRESULT RegisterOutputStream(LPCWSTR pName, IStream *pStream) = 0;
  35. };
  36. DxcArgsFileSystem *
  37. CreateDxcArgsFileSystem(_In_ IDxcBlobUtf8 *pSource, _In_ LPCWSTR pSourceName,
  38. _In_opt_ IDxcIncludeHandler *pIncludeHandler);
  39. } // namespace dxcutil