diff options
author | Josh Haberman <jhaberman@gmail.com> | 2013-05-28 15:26:44 -0700 |
---|---|---|
committer | Josh Haberman <jhaberman@gmail.com> | 2013-05-28 15:26:44 -0700 |
commit | 228872a5c68938c56eb9d4ecd2413865b5277fe1 (patch) | |
tree | c603c149e99b437fab018877d29289c0a0ff7aeb /upb/handlers-inl.h | |
parent | bada1e94f472e7507a97e7565369841b3d25c9b0 (diff) |
Fixes to compile on GCC 4.2, as shipped with XCode.
Diffstat (limited to 'upb/handlers-inl.h')
-rw-r--r-- | upb/handlers-inl.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/upb/handlers-inl.h b/upb/handlers-inl.h index 65f21a2..6b46b47 100644 --- a/upb/handlers-inl.h +++ b/upb/handlers-inl.h @@ -303,8 +303,8 @@ inline Handlers::StringHandler BindHandler( template <> \ inline bool Handlers::SetValueHandler<vtype>( \ const FieldDef *f, \ - const typename ValueHandler<typename CanonicalType<vtype>::Type>::H & \ - handler) { \ + const Handlers::utype ## Handler& handler) { \ + assert(!handler.registered_); \ handler.registered_ = true; \ return upb_handlers_set##ltype(this, f, handler.handler_, handler.data_, \ handler.cleanup_); \ @@ -394,54 +394,63 @@ inline const MessageDef *Handlers::message_def() const { } inline bool Handlers::SetStartMessageHandler( const Handlers::StartMessageHandler &handler) { + assert(!handler.registered_); handler.registered_ = true; return upb_handlers_setstartmsg(this, handler.handler_, handler.data_, handler.cleanup_); } inline bool Handlers::SetEndMessageHandler( const Handlers::EndMessageHandler &handler) { + assert(!handler.registered_); handler.registered_ = true; return upb_handlers_setendmsg(this, handler.handler_, handler.data_, handler.cleanup_); } inline bool Handlers::SetStartStringHandler(const FieldDef *f, const StartStringHandler &handler) { + assert(!handler.registered_); handler.registered_ = true; return upb_handlers_setstartstr(this, f, handler.handler_, handler.data_, handler.cleanup_); } inline bool Handlers::SetEndStringHandler(const FieldDef *f, const EndFieldHandler &handler) { + assert(!handler.registered_); handler.registered_ = true; return upb_handlers_setendstr(this, f, handler.handler_, handler.data_, handler.cleanup_); } inline bool Handlers::SetStringHandler(const FieldDef *f, const StringHandler& handler) { + assert(!handler.registered_); handler.registered_ = true; return upb_handlers_setstring(this, f, handler.handler_, handler.data_, handler.cleanup_); } inline bool Handlers::SetStartSequenceHandler( const FieldDef *f, const StartFieldHandler &handler) { + assert(!handler.registered_); handler.registered_ = true; return upb_handlers_setstartseq(this, f, handler.handler_, handler.data_, handler.cleanup_); } inline bool Handlers::SetStartSubMessageHandler( const FieldDef *f, const StartFieldHandler &handler) { + assert(!handler.registered_); handler.registered_ = true; return upb_handlers_setstartsubmsg(this, f, handler.handler_, handler.data_, handler.cleanup_); } inline bool Handlers::SetEndSubMessageHandler(const FieldDef *f, const EndFieldHandler &handler) { + assert(!handler.registered_); handler.registered_ = true; return upb_handlers_setendsubmsg(this, f, handler.handler_, handler.data_, handler.cleanup_); } inline bool Handlers::SetEndSequenceHandler(const FieldDef *f, const EndFieldHandler &handler) { + assert(!handler.registered_); handler.registered_ = true; return upb_handlers_setendseq(this, f, handler.handler_, handler.data_, handler.cleanup_); |