I can think of no good reason that ccsPrivate is void* instead of CCSContextPrivate* - that would allow the implementation code to be simpler by removing the need for casts.
And I don't see why CONTEXT_PRIV and _CCSContextPrivate/CCSContextPrivate are defined in a header.
I can think of no good reason that ccsPrivate is void* instead of CCSContextPrivate* - that would allow the implementation code to be simpler by removing the need for casts.
And I don't see why CONTEXT_PRIV and _CCSContextPriv ate/CCSContextP rivate are defined in a header.
Which is "the next pipe"?