diff options
Diffstat (limited to 'src/google/protobuf/reflection.h')
-rw-r--r-- | src/google/protobuf/reflection.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/google/protobuf/reflection.h b/src/google/protobuf/reflection.h index 5d0fc42b..c14a896c 100644 --- a/src/google/protobuf/reflection.h +++ b/src/google/protobuf/reflection.h @@ -38,6 +38,10 @@ #include <google/protobuf/message.h> #include <google/protobuf/generated_enum_util.h> +#ifdef SWIG +#error "You cannot SWIG proto headers" +#endif + namespace google { namespace protobuf { namespace internal { @@ -347,7 +351,6 @@ class LIBPROTOBUF_EXPORT RepeatedFieldAccessor { typedef void Value; typedef void Iterator; - virtual ~RepeatedFieldAccessor(); virtual bool IsEmpty(const Field* data) const = 0; virtual int Size(const Field* data) const = 0; // Depends on the underlying representation of the repeated field, this @@ -425,6 +428,13 @@ class LIBPROTOBUF_EXPORT RepeatedFieldAccessor { ActualType tmp = static_cast<ActualType>(value); Add(data, static_cast<const Value*>(&tmp)); } + + protected: + // We want the destructor to be completely trivial as to allow it to be + // a function local static. Hence we make it non-virtual and protected, + // this class only live as part of a global singleton and should not be + // deleted. + ~RepeatedFieldAccessor() = default; }; // Implement (Mutable)RepeatedFieldRef::iterator |