mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 13:01:52 +00:00
65 lines
1.4 KiB
Beef
65 lines
1.4 KiB
Beef
using DirectX.Common;
|
|
using GlitchyEngine.Core;
|
|
using System.Collections;
|
|
using System;
|
|
|
|
namespace GlitchyEngine
|
|
{
|
|
static
|
|
{
|
|
/// Releases the reference to destination, writes newValue into it and adds a reference to newValue.
|
|
public static mixin SetReference<T>(T destination, T newValue) where T: RefCounter
|
|
{
|
|
var oldDest = destination;
|
|
destination = newValue;
|
|
destination?.AddRef();
|
|
oldDest?.ReleaseRef();
|
|
}
|
|
|
|
/// Releases the reference to destination, writes newValue into it and adds a reference to newValue.
|
|
public static mixin SetReferenceVar<T>(T destination, T newValue) where T: var
|
|
{
|
|
var oldDest = destination;
|
|
destination = newValue;
|
|
destination?.AddRef();
|
|
oldDest?.Release();
|
|
}
|
|
|
|
/// Releases the reference to value and nullifies it.
|
|
public static mixin ReleaseRefAndNullify<T>(T value) where T: RefCounter
|
|
{
|
|
value?.ReleaseRef();
|
|
value = null;
|
|
}
|
|
|
|
public static mixin DeleteContainerAndReleaseItems(var container)
|
|
{
|
|
if (container != null)
|
|
{
|
|
for (var value in container)
|
|
value?.ReleaseRef();
|
|
delete container;
|
|
}
|
|
}
|
|
|
|
public static mixin ClearAndReleaseItems(var container)
|
|
{
|
|
for (var value in container)
|
|
value?.ReleaseRef();
|
|
container.Clear();
|
|
}
|
|
|
|
public static mixin DeleteDictionaryAndReleaseValues(var container)
|
|
{
|
|
if (container != null)
|
|
{
|
|
for (var value in container)
|
|
{
|
|
value.value?.ReleaseRef();
|
|
}
|
|
delete container;
|
|
}
|
|
}
|
|
}
|
|
}
|