diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2022-08-09 10:31:22 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-09 10:31:22 -0400 |
| commit | c0733be56dc24ef0eb67b26fe0c49d3419e75773 (patch) | |
| tree | e094e31981c69e887ff9df84df07defe9eb77bf5 /source/core | |
| parent | 2db8c15c04f2aade49636e42f0adee636afb3b73 (diff) | |
Support for Items on IArtifact (#2347)
* #include an absolute path didn't work - because paths were taken to always be relative.
* WIP with hierarchical enums.
* Some small fixes and improvements around artifact desc related types.
* Improvements around hierarchical enum.
* Fixes to get Artifact types refactor to be able to execute tests.
* Attempt to better categorize PTX.
* Work around for potentially unused function warning.
* Typo fix.
* Simplify Artifact header.
* Small improvements around Artifact kind/payload/style.
* Added IDestroyable/ICastable
* Add IArtifactList.
* First impl of IArtifactUtil.
* Use the ICastable interface for IArtifactRepresentation.
* Added IArtifactRepresentation & IArtifactAssociated.
* Add SLANG_OVERRIDE to avoid gcc/clang warning.
* Fix calling convention issue on win32.
* Fix missing SLANG_OVERRIDE.
* First attempt at file abstraction around Artifact.
* Added creation of lock file.
* Move functionality for determining file paths to the IArtifactUtil.
Add casting to ICastable.
* Added some casting/finding mechanisms.
* Simplify IArtifact interface, and use Items for file reps.
* Fix problem with libraries on DXIL.
Diffstat (limited to 'source/core')
| -rw-r--r-- | source/core/slang-destroyable.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/source/core/slang-destroyable.h b/source/core/slang-destroyable.h index 4e6be2629..343cc2484 100644 --- a/source/core/slang-destroyable.h +++ b/source/core/slang-destroyable.h @@ -36,6 +36,30 @@ class IDestroyable : public ICastable virtual SLANG_NO_THROW bool SLANG_MCALL isDestroyed() = 0; }; +// Dynamic cast of ICastable derived types +template <typename T> +SLANG_FORCE_INLINE T* dynamicCast(ICastable* castable) +{ + if (castable) + { + void* obj = castable->castAs(T::getTypeGuid()); + return obj ? reinterpret_cast<T*>(obj) : ((T*)nullptr); + } + return nullptr; +} + +// as style cast +template <typename T> +SLANG_FORCE_INLINE T* as(ICastable* castable) +{ + if (castable) + { + void* obj = castable->castAs(T::getTypeGuid()); + return obj ? reinterpret_cast<T*>(obj) : ((T*)nullptr); + } + return nullptr; +} + } #endif // SLANG_CORE_DESTROYABLE_H |
