diff options
Diffstat (limited to 'source/core')
| -rw-r--r-- | source/core/core.vcxproj | 3 | ||||
| -rw-r--r-- | source/core/core.vcxproj.filters | 9 | ||||
| -rw-r--r-- | source/core/smart-pointer.h | 10 |
3 files changed, 8 insertions, 14 deletions
diff --git a/source/core/core.vcxproj b/source/core/core.vcxproj index ecd8ee07b..3dbfaac3f 100644 --- a/source/core/core.vcxproj +++ b/source/core/core.vcxproj @@ -182,12 +182,9 @@ <ClInclude Include="list.h" /> <ClInclude Include="platform.h" /> <ClInclude Include="secure-crt.h" /> - <ClInclude Include="slang-com-ptr.h" /> - <ClInclude Include="slang-defines.h" /> <ClInclude Include="slang-free-list.h" /> <ClInclude Include="slang-io.h" /> <ClInclude Include="slang-math.h" /> - <ClInclude Include="slang-result.h" /> <ClInclude Include="slang-string-util.h" /> <ClInclude Include="slang-string.h" /> <ClInclude Include="smart-pointer.h" /> diff --git a/source/core/core.vcxproj.filters b/source/core/core.vcxproj.filters index 39a164770..27b0fe82f 100644 --- a/source/core/core.vcxproj.filters +++ b/source/core/core.vcxproj.filters @@ -45,12 +45,6 @@ <ClInclude Include="secure-crt.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="slang-com-ptr.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="slang-defines.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="slang-free-list.h"> <Filter>Header Files</Filter> </ClInclude> @@ -60,9 +54,6 @@ <ClInclude Include="slang-math.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="slang-result.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="slang-string-util.h"> <Filter>Header Files</Filter> </ClInclude> diff --git a/source/core/smart-pointer.h b/source/core/smart-pointer.h index bc1683a5b..4c6744d1b 100644 --- a/source/core/smart-pointer.h +++ b/source/core/smart-pointer.h @@ -6,6 +6,8 @@ #include <assert.h> +#include "../../slang.h" + namespace Slang { // TODO: Need to centralize these typedefs @@ -199,13 +201,17 @@ namespace Slang T* detach() { - if (pointer) - dynamic_cast<RefObject*>(pointer)->decreaseReference(); auto rs = pointer; pointer = nullptr; return rs; } + /// Get ready for writing (nulls contents) + SLANG_FORCE_INLINE T** writeRef() { *this = nullptr; return &pointer; } + + /// Get for read access + SLANG_FORCE_INLINE T*const* readRef() const { return &pointer; } + private: T* pointer; |
