From b7bfecb4ee157204864f66b0270e66a3299b3250 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E6=B0=B4=E6=A8=B9=E7=B4=A0=E5=AD=90?= Date: Sat, 11 Feb 2017 03:32:34 +0900 Subject: [PATCH] Add move constructor to generated union class. (#4167) * Add move constructor to generated union class. * Unused default * Add generated code --- samples/monster_generated.h | 2 ++ src/idl_gen_cpp.cpp | 2 ++ tests/monster_test_generated.h | 2 ++ 3 files changed, 6 insertions(+) diff --git a/samples/monster_generated.h b/samples/monster_generated.h index 61167e4..a4687a4 100644 --- a/samples/monster_generated.h +++ b/samples/monster_generated.h @@ -74,6 +74,8 @@ struct EquipmentUnion { flatbuffers::NativeTable *table; EquipmentUnion() : type(Equipment_NONE), table(nullptr) {} + EquipmentUnion(EquipmentUnion&& u): + type(std::move(u.type)), table(std::move(u.table)) {} EquipmentUnion(const EquipmentUnion &); EquipmentUnion &operator=(const EquipmentUnion &); ~EquipmentUnion() { Reset(); } diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index e142259..44f7e35 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -650,6 +650,8 @@ class CppGenerator : public BaseGenerator { code_ += " flatbuffers::NativeTable *table;"; code_ += ""; code_ += " {{NAME}}Union() : type({{NONE}}), table(nullptr) {}"; + code_ += " {{NAME}}Union({{NAME}}Union&& u):"; + code_ += " type(std::move(u.type)), table(std::move(u.table)) {}"; code_ += " {{NAME}}Union(const {{NAME}}Union &);"; code_ += " {{NAME}}Union &operator=(const {{NAME}}Union &);"; code_ += " ~{{NAME}}Union() { Reset(); }"; diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index 76a8102..ee94536 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -103,6 +103,8 @@ struct AnyUnion { flatbuffers::NativeTable *table; AnyUnion() : type(Any_NONE), table(nullptr) {} + AnyUnion(AnyUnion&& u): + type(std::move(u.type)), table(std::move(u.table)) {} AnyUnion(const AnyUnion &); AnyUnion &operator=(const AnyUnion &); ~AnyUnion() { Reset(); } -- 2.7.4