diff options
Diffstat (limited to 'source/core')
| -rw-r--r-- | source/core/core.vcxproj | 2 | ||||
| -rw-r--r-- | source/core/core.vcxproj.filters | 6 | ||||
| -rw-r--r-- | source/core/slang-object-scope-manager.cpp | 23 | ||||
| -rw-r--r-- | source/core/slang-object-scope-manager.h | 67 |
4 files changed, 0 insertions, 98 deletions
diff --git a/source/core/core.vcxproj b/source/core/core.vcxproj index 636edb46a..8c4e7753c 100644 --- a/source/core/core.vcxproj +++ b/source/core/core.vcxproj @@ -189,7 +189,6 @@ <ClInclude Include="slang-math.h" /> <ClInclude Include="slang-memory-arena.h" /> <ClInclude Include="slang-nvrtc-compiler.h" /> - <ClInclude Include="slang-object-scope-manager.h" /> <ClInclude Include="slang-offset-container.h" /> <ClInclude Include="slang-platform.h" /> <ClInclude Include="slang-process-util.h" /> @@ -225,7 +224,6 @@ <ClCompile Include="slang-io.cpp" /> <ClCompile Include="slang-memory-arena.cpp" /> <ClCompile Include="slang-nvrtc-compiler.cpp" /> - <ClCompile Include="slang-object-scope-manager.cpp" /> <ClCompile Include="slang-offset-container.cpp" /> <ClCompile Include="slang-platform.cpp" /> <ClCompile Include="slang-random-generator.cpp" /> diff --git a/source/core/core.vcxproj.filters b/source/core/core.vcxproj.filters index 49d8a1065..312c24b17 100644 --- a/source/core/core.vcxproj.filters +++ b/source/core/core.vcxproj.filters @@ -66,9 +66,6 @@ <ClInclude Include="slang-nvrtc-compiler.h"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="slang-object-scope-manager.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="slang-offset-container.h"> <Filter>Header Files</Filter> </ClInclude> @@ -170,9 +167,6 @@ <ClCompile Include="slang-nvrtc-compiler.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="slang-object-scope-manager.cpp"> - <Filter>Source Files</Filter> - </ClCompile> <ClCompile Include="slang-offset-container.cpp"> <Filter>Source Files</Filter> </ClCompile> diff --git a/source/core/slang-object-scope-manager.cpp b/source/core/slang-object-scope-manager.cpp deleted file mode 100644 index 2e7b7dfe3..000000000 --- a/source/core/slang-object-scope-manager.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "slang-object-scope-manager.h" - -namespace Slang { - -void ObjectScopeManager::_releaseAll() -{ - RefObject*const* objs = m_objs.begin(); - const Index numObjs = m_objs.getCount(); - for (Index i = 0; i < numObjs; ++i) - { - objs[i]->decreaseReference(); - } -} - -void ObjectScopeManager::clear() -{ - _releaseAll(); - // Free the memory as well as resizing - m_objs = List<RefObject*>(); -} - -} // namespace Slang - diff --git a/source/core/slang-object-scope-manager.h b/source/core/slang-object-scope-manager.h deleted file mode 100644 index 9930e46ea..000000000 --- a/source/core/slang-object-scope-manager.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef SLANG_CORE_OBJECT_SCOPE_MANAGER_H -#define SLANG_CORE_OBJECT_SCOPE_MANAGER_H - -#include "slang-smart-pointer.h" -#include "slang-list.h" - -namespace Slang { - -/** Keep objects added in scope. - -This is currently about the most simple implementation possible. Objects are added to a list -which members are released when ObjectScopeManager loses scope, or clear is called. - -The same object can be added multiple times. This implementation will just add the same object -multiple times. A more complex implementation might notice that the object is already in scope -and not add a reference. - -Another potential improvement would be to hold the pointers in a MemoryArena. Doing so would remove -the requirement of a List of contiguous memory. - -In implementations that can hold multiple references to the same thing, we may want to add some -garbage collection to remove repeat references. -*/ -struct ObjectScopeManager -{ -public: - - /// Add an object which will be kept in scope until manager is destroyed - SLANG_INLINE RefObject* add(RefObject* obj); - /// Add an object, where it may be nullptr. If it null its a no-op - SLANG_INLINE RefObject* addMaybeNull(RefObject* obj); - - /// Clear the contents - void clear(); - - /// Dtor - ~ObjectScopeManager() { _releaseAll(); } - -protected: - void _releaseAll(); - - List<RefObject*> m_objs; -}; - -// --------------------------------------------------------------------------- -RefObject* ObjectScopeManager::addMaybeNull(RefObject* obj) -{ - if (obj) - { - obj->addReference(); - m_objs.add(obj); - } - return obj; -} - -// --------------------------------------------------------------------------- -RefObject* ObjectScopeManager::add(RefObject* obj) -{ - SLANG_ASSERT(obj); - obj->addReference(); - m_objs.add(obj); - return obj; -} - -} // namespace Slang - -#endif // SLANG_OBJECT_SCOPE_MANAGER_H |
