[ https://issues.apache.org/jira/browse/AVRO-47?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12792634#action_12792634 ]
Chris Dyer commented on AVRO-47: -------------------------------- There is a lot of confusion about why void* is discouraged in c++. Its use is disfavored when it conceals type semantics that should be present. But, there *are* cases when you want to conceal the type semantics associated with data: when you don't have a programmatic type associated with it! In those cases, programmars put it into a byte array or some other compressed format and refer to it with void*, since that reminds the reader of the code not to interpret it using an programmatic type. When c++ programmars see an array of uint_8's, they assume it has the semantics of "array of small, unsigned integers", which is explicitly not what we've got here- the member function isn't called putArrayOfSmallUnsignedIntegers. void* means - "i don't know what to make of this data- just copy it around as efficiently as possible and don't interpret it, ever". This is *exactly* what this interface should imply. I would strongly encourage you to drop uint_8* in favor of void*. (As an aside, there are some other representational guarantees associated with types- the standard further specifies that void* will have char*-like semantics when it comes to alignment and representation). > Byte sequence to be represented as void* > ---------------------------------------- > > Key: AVRO-47 > URL: https://issues.apache.org/jira/browse/AVRO-47 > Project: Avro > Issue Type: Bug > Components: c++ > Reporter: Arvind Jayaprakash > Attachments: AVRO-47 > > > The current function prototype for serializin bytes is as follows: > void putBytes(const uint8_t *val, size_t size) > This is better written as > void putBytes(const void *val, size_t size) > Using void* in favour of an int based data type frees us from unnecessary > casting opaque bytes from arbitrary stuctures/classes into "integer". This is > consistent with say a function like memcpy() -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.