Summary: | Add modern decoders for POD types | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Alex Christensen <achristensen> | ||||
Component: | New Bugs | Assignee: | Alex Christensen <achristensen> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | darin, ggaren, webkit-bug-importer | ||||
Priority: | P2 | Keywords: | InRadar | ||||
Version: | WebKit Nightly Build | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Attachments: |
|
Description
Alex Christensen
2017-09-06 08:19:43 PDT
Created attachment 320019 [details]
Patch
Comment on attachment 320019 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=320019&action=review r=me > Source/WebKit/Platform/IPC/Decoder.cpp:241 > +Decoder& Decoder::operator>>(std::optional<bool>& optional) > +{ > + return getOptional(optional); > +} > + > +Decoder& Decoder::operator>>(std::optional<uint8_t>& optional) > +{ > + return getOptional(optional); > +} > + > +Decoder& Decoder::operator>>(std::optional<uint16_t>& optional) > +{ > + return getOptional(optional); > +} > + > +Decoder& Decoder::operator>>(std::optional<uint32_t>& optional) > +{ > + return getOptional(optional); > +} > + > +Decoder& Decoder::operator>>(std::optional<uint64_t>& optional) > +{ > + return getOptional(optional); > +} > + > +Decoder& Decoder::operator>>(std::optional<int32_t>& optional) > +{ > + return getOptional(optional); > +} > + > +Decoder& Decoder::operator>>(std::optional<int64_t>& optional) > +{ > + return getOptional(optional); > +} > + > +Decoder& Decoder::operator>>(std::optional<float>& optional) > +{ > + return getOptional(optional); > +} Kind of weird that our idiom is to use overloading instead of a template parameter for these >> functions and for our decode functions. If we're just trying to verify that our type is a POD type, we can use std::is_pod. With enums (which are also POD types) we also check to see if they are valid enums. I think the intent was once to only have certain types serializable, but since that list has grown so much maybe we should clean this up a bit. Seems like we should find a way to allow any type to be optional and not write out each function like this. |