Added a new ScopedValue utility class that simply sets a value when it goes out of scope. This is particularly handy for flags that track whether the callstack is inside a particular scope, like a m_isInitializing flag.

Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
This commit is contained in:
santorac
2021-09-13 16:56:00 -07:00
parent 4c1c2d6f6b
commit 2c55ea574d
4 changed files with 75 additions and 0 deletions
@@ -0,0 +1,37 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include <AtomCore/Utils/ScopedValue.h>
#include <AzCore/UnitTest/TestTypes.h>
namespace UnitTest
{
TEST(ScopedValueTest, TestBoolValue)
{
bool localValue = false;
{
AZ::ScopedValue<bool> scopedValue(&localValue, true, false);
EXPECT_EQ(true, localValue);
}
EXPECT_EQ(false, localValue);
}
TEST(ScopedValueTest, TestIntValue)
{
int localValue = 0;
{
AZ::ScopedValue<int> scopedValue(&localValue, 1, 2);
EXPECT_EQ(1, localValue);
}
EXPECT_EQ(2, localValue);
}
}