dxcfilesystem.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. #include <string>
  15. namespace clang {
  16. class CompilerInstance;
  17. }
  18. namespace llvm {
  19. class raw_string_ostream;
  20. namespace sys {
  21. namespace fs {
  22. class MSFileSystem;
  23. }
  24. } // namespace sys
  25. } // namespace llvm
  26. namespace dxcutil {
  27. class DxcArgsFileSystem : public ::llvm::sys::fs::MSFileSystem {
  28. public:
  29. virtual ~DxcArgsFileSystem(){};
  30. virtual void SetupForCompilerInstance(clang::CompilerInstance &compiler) = 0;
  31. virtual void GetStdOutpuHandleStream(IStream **ppResultStream) = 0;
  32. virtual void WriteStdErrToStream(llvm::raw_string_ostream &s) = 0;
  33. virtual void EnableDisplayIncludeProcess() = 0;
  34. virtual HRESULT CreateStdStreams(_In_ IMalloc *pMalloc) = 0;
  35. virtual HRESULT RegisterOutputStream(LPCWSTR pName, IStream *pStream) = 0;
  36. };
  37. DxcArgsFileSystem *
  38. CreateDxcArgsFileSystem(_In_ IDxcBlobUtf8 *pSource, _In_ LPCWSTR pSourceName,
  39. _In_opt_ IDxcIncludeHandler *pIncludeHandler);
  40. void MakeAbsoluteOrCurDirRelativeW(LPCWSTR &Path, std::wstring &PathStorage);
  41. } // namespace dxcutil