mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-25 05:20:34 +05:00
Merge branch 'archive_enums' into 'master'
archive enums See merge request jschoeberl/netgen!122
This commit is contained in:
commit
36f9eb1858
@ -209,6 +209,19 @@ namespace ngcore
|
||||
return (*this);
|
||||
}
|
||||
|
||||
// archive implementation for enums
|
||||
template<typename T>
|
||||
auto operator & (T& val) -> typename std::enable_if<std::is_enum<T>::value, Archive&>::type
|
||||
{
|
||||
int enumval;
|
||||
if(Output())
|
||||
enumval = int(val);
|
||||
*this & enumval;
|
||||
if(Input())
|
||||
val = T(enumval);
|
||||
return *this;
|
||||
}
|
||||
|
||||
// vector<bool> has special implementation (like a bitarray) therefore
|
||||
// it needs a special overload (this could probably be more efficient, but we
|
||||
// don't use it that often anyway)
|
||||
|
@ -248,6 +248,22 @@ void testMap(Archive& in, Archive& out)
|
||||
CHECK(map2["netgen"] == "v6.2.1901");
|
||||
}
|
||||
|
||||
enum MyEnum
|
||||
{
|
||||
CASE1,
|
||||
CASE2
|
||||
};
|
||||
|
||||
void testEnum(Archive& in, Archive& out)
|
||||
{
|
||||
MyEnum en = CASE2;
|
||||
out & en;
|
||||
out.FlushBuffer();
|
||||
MyEnum enin;
|
||||
in & enin;
|
||||
CHECK(enin == CASE2);
|
||||
}
|
||||
|
||||
void testArchive(Archive& in, Archive& out)
|
||||
{
|
||||
SECTION("Empty String")
|
||||
@ -301,6 +317,10 @@ void testArchive(Archive& in, Archive& out)
|
||||
{
|
||||
testMap(in, out);
|
||||
}
|
||||
SECTION("enum")
|
||||
{
|
||||
testEnum(in, out);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("BinaryArchive")
|
||||
|
Loading…
Reference in New Issue
Block a user