mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-05 16:36:54 +00:00
[C++]Use noexcept in union type move ctor/Add move assingment (#4249)
* Use noexcept in union type move ctor/Add move assingment * Add NOEXCEPT macro to deal with _MS_VER/Remove delegating ctor in union type class * Add FLATBUFFERS_NOEXCEPT to generated union class
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
238a8ebb15
commit
2aec880347
@@ -113,6 +113,13 @@
|
|||||||
#define FLATBUFFERS_CONSTEXPR
|
#define FLATBUFFERS_CONSTEXPR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 || \
|
||||||
|
defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026
|
||||||
|
#define FLATBUFFERS_NOEXCEPT noexcept
|
||||||
|
#else
|
||||||
|
#define FLATBUFFERS_NOEXCEPT
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
#pragma warning(disable: 4127) // C4127: conditional expression is constant
|
#pragma warning(disable: 4127) // C4127: conditional expression is constant
|
||||||
|
|||||||
@@ -74,11 +74,13 @@ struct EquipmentUnion {
|
|||||||
flatbuffers::NativeTable *table;
|
flatbuffers::NativeTable *table;
|
||||||
|
|
||||||
EquipmentUnion() : type(Equipment_NONE), table(nullptr) {}
|
EquipmentUnion() : type(Equipment_NONE), table(nullptr) {}
|
||||||
EquipmentUnion(EquipmentUnion&& u):
|
EquipmentUnion(EquipmentUnion&& u) FLATBUFFERS_NOEXCEPT :
|
||||||
type(Equipment_NONE), table(nullptr)
|
type(Equipment_NONE), table(nullptr)
|
||||||
{ std::swap(type, u.type); std::swap(table, u.table); }
|
{ std::swap(type, u.type); std::swap(table, u.table); }
|
||||||
EquipmentUnion(const EquipmentUnion &);
|
EquipmentUnion(const EquipmentUnion &);
|
||||||
EquipmentUnion &operator=(const EquipmentUnion &);
|
EquipmentUnion &operator=(const EquipmentUnion &);
|
||||||
|
EquipmentUnion &operator=(EquipmentUnion &&u) FLATBUFFERS_NOEXCEPT
|
||||||
|
{ std::swap(type, u.type); std::swap(table, u.table); return *this; }
|
||||||
~EquipmentUnion() { Reset(); }
|
~EquipmentUnion() { Reset(); }
|
||||||
|
|
||||||
void Reset();
|
void Reset();
|
||||||
|
|||||||
@@ -660,11 +660,13 @@ class CppGenerator : public BaseGenerator {
|
|||||||
code_ += " flatbuffers::NativeTable *table;";
|
code_ += " flatbuffers::NativeTable *table;";
|
||||||
code_ += "";
|
code_ += "";
|
||||||
code_ += " {{NAME}}Union() : type({{NONE}}), table(nullptr) {}";
|
code_ += " {{NAME}}Union() : type({{NONE}}), table(nullptr) {}";
|
||||||
code_ += " {{NAME}}Union({{NAME}}Union&& u):";
|
code_ += " {{NAME}}Union({{NAME}}Union&& u) FLATBUFFERS_NOEXCEPT :";
|
||||||
code_ += " type({{NONE}}), table(nullptr)";
|
code_ += " type({{NONE}}), table(nullptr)";
|
||||||
code_ += " { std::swap(type, u.type); std::swap(table, u.table); }";
|
code_ += " { std::swap(type, u.type); std::swap(table, u.table); }";
|
||||||
code_ += " {{NAME}}Union(const {{NAME}}Union &);";
|
code_ += " {{NAME}}Union(const {{NAME}}Union &);";
|
||||||
code_ += " {{NAME}}Union &operator=(const {{NAME}}Union &);";
|
code_ += " {{NAME}}Union &operator=(const {{NAME}}Union &);";
|
||||||
|
code_ += " {{NAME}}Union &operator=({{NAME}}Union &&u) FLATBUFFERS_NOEXCEPT";
|
||||||
|
code_ += " { std::swap(type, u.type); std::swap(table, u.table); return *this; }";
|
||||||
code_ += " ~{{NAME}}Union() { Reset(); }";
|
code_ += " ~{{NAME}}Union() { Reset(); }";
|
||||||
code_ += "";
|
code_ += "";
|
||||||
code_ += " void Reset();";
|
code_ += " void Reset();";
|
||||||
|
|||||||
@@ -105,11 +105,13 @@ struct AnyUnion {
|
|||||||
flatbuffers::NativeTable *table;
|
flatbuffers::NativeTable *table;
|
||||||
|
|
||||||
AnyUnion() : type(Any_NONE), table(nullptr) {}
|
AnyUnion() : type(Any_NONE), table(nullptr) {}
|
||||||
AnyUnion(AnyUnion&& u):
|
AnyUnion(AnyUnion&& u) FLATBUFFERS_NOEXCEPT :
|
||||||
type(Any_NONE), table(nullptr)
|
type(Any_NONE), table(nullptr)
|
||||||
{ std::swap(type, u.type); std::swap(table, u.table); }
|
{ std::swap(type, u.type); std::swap(table, u.table); }
|
||||||
AnyUnion(const AnyUnion &);
|
AnyUnion(const AnyUnion &);
|
||||||
AnyUnion &operator=(const AnyUnion &);
|
AnyUnion &operator=(const AnyUnion &);
|
||||||
|
AnyUnion &operator=(AnyUnion &&u) FLATBUFFERS_NOEXCEPT
|
||||||
|
{ std::swap(type, u.type); std::swap(table, u.table); return *this; }
|
||||||
~AnyUnion() { Reset(); }
|
~AnyUnion() { Reset(); }
|
||||||
|
|
||||||
void Reset();
|
void Reset();
|
||||||
|
|||||||
Reference in New Issue
Block a user