[
https://issues.apache.org/jira/browse/TS-680?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13001799#comment-13001799
]
Alan M. Carroll commented on TS-680:
------------------------------------
To pick a personal nit, non-member names starting with underscore are reserved
for the implementation, so 'struct _tsmloc' is illegal. Unfortunately, because
the API must be C compatible we can't use a namespace.
Beyond being a lot of work for the TS team, it shouldn't have any negative
impact on plugin developers as all of the API types affected are opaque.
Overall it seems like a net positive.
> Make SDK opaque types use opaque struct's instead of void* ?
> ------------------------------------------------------------
>
> Key: TS-680
> URL: https://issues.apache.org/jira/browse/TS-680
> Project: Traffic Server
> Issue Type: Improvement
> Components: TS API
> Reporter: Leif Hedstrom
> Assignee: Leif Hedstrom
> Fix For: 2.1.7
>
> Attachments: prototypes.diff
>
>
> This could allow a compiler to warn on inappropriate parameters for example.
> The problem is that many API parameters are passed as (void*). This means
> that not only can they can unsafely interchanged (either passing the wrong
> parameter or passing them in the wrong order) but completely inappropriate
> (non-API) pointers can be passed as well, all without any warning from the
> compiler.
> This could be improved by declaring parameter types to be pointers to in name
> only types. This would make them non-trivially interchangeable with each
> other and non-API pointers. Although passing inappropriate parameters would
> still be possible it would be *much* harder to do by accident, in contrast to
> the current API in which it is very easy to do.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira