diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2019-06-12 09:05:40 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-12 09:05:40 -0400 |
| commit | 9d514e65f00dde0e309f33591f31fbf7f132a005 (patch) | |
| tree | 7e3a751377651ef9eda06f0b1ad345af1796c596 /source/core/slang-string.h | |
| parent | fc083a75b94ac4b4e735b4a7ff566191b9123f74 (diff) | |
Runtime execution of Visual Studio Compiler (#978)
* Work in progress to be able to invoke VS from within code.
* First pass at windows version of refactor of OSProcessSpawner
* Closer to getting VS path lookup working.
* Make OSString assignable/ctor able
* Work out program files directory directly, so don't have to expand %%.
* WIP: Improve handling of process spawning.
* Add support for splitting input by line.
* * Correctly locates visual studio install
* Added functionality to invoke vs via cmd
* Add option to execute the command line.
* Handle in ProcessUtil for windows -> WinHandle.
* Rename files slang-win-visual-studio-util.cpp/.h and slang-process-util.h
* First pass at unix/linux version of ProcessUtil.
* Fix reading Visual Studio path from the registry.
* Get compiling on linux with.
* Fix vcvarsall.bat name
* Use ProcessUtil to execute external code.
* Remove OSProcessSpawner.
* Remove includes for "os.h" where no longer needed.
* Fix tabbing issue in premake5.lua
Remove test code from slang-test-main.cpp
* Fix premake4.lua tabbing issue.
* Small fixes to slang-process-util.h
Init ExecuteResult on Win execute.
* Improve comments.
* Fix bug in StringUtil::calcLines - with oddly terminated source input being able to read past end.
Make slang-generate use StringUtil over it's own impl.
* Fix off by one bug in working out Visual Studio version.
* Fix bug in calculating Visual Studio Version
* Fix compilation on linux with string parameter being passed to messageFormat.
* Remove erroneous use of kOSError codes - use Result.
Diffstat (limited to 'source/core/slang-string.h')
| -rw-r--r-- | source/core/slang-string.h | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/source/core/slang-string.h b/source/core/slang-string.h index 1cd9e5413..4975e9ec6 100644 --- a/source/core/slang-string.h +++ b/source/core/slang-string.h @@ -292,9 +292,43 @@ namespace Slang class OSString { public: + /// Default OSString(); + /// NOTE! This assumes that begin is a new wchar_t[] buffer, and it will + /// now be owned by the OSString OSString(wchar_t* begin, wchar_t* end); - ~OSString(); + /// Move Ctor + OSString(OSString&& rhs): + m_begin(rhs.m_begin), + m_end(rhs.m_end) + { + rhs.m_begin = nullptr; + rhs.m_end = nullptr; + } + // Copy Ctor + OSString(const OSString& rhs) : + m_begin(nullptr), + m_end(nullptr) + { + set(rhs.m_begin, rhs.m_end); + } + + /// = + void operator=(const OSString& rhs) { set(rhs.m_begin, rhs.m_end); } + void operator=(OSString&& rhs) + { + auto begin = m_begin; + auto end = m_end; + m_begin = rhs.m_begin; + m_end = rhs.m_end; + rhs.m_begin = begin; + rhs.m_end = end; + } + + ~OSString() { _releaseBuffer(); } + + size_t getLength() const { return (m_end - m_begin); } + void set(const wchar_t* begin, const wchar_t* end); operator wchar_t const*() const { @@ -305,8 +339,11 @@ namespace Slang wchar_t const* end() const; private: - wchar_t* m_begin; - wchar_t* m_end; + + void _releaseBuffer(); + + wchar_t* m_begin; ///< First character. This is a new wchar_t[] buffer + wchar_t* m_end; ///< Points to terminating 0 }; /*! |
