[Swan-dev] can shunk_t (string chunk) be merged into chunk_t (byte chunk)
Paul Wouters
paul at nohats.ca
Mon Jan 21 19:25:47 UTC 2019
I am not a fan of shunk_t. I think the abstraction adds too much complexity. Things are already hard enough to understand for outsiders.
Paul
Sent from mobile device
> On Jan 21, 2019, at 13:40, Andrew Cagney <andrew.cagney at gmail.com> wrote:
>
> This came up in an offline discussion. While chunk_t is intended for
> bytes and shunk_t is intended for characters, they do both provide
> pointer+length abstractions. This begs the question: should they be
> merged? It turns out that they have a critical difference:
>
> - chunk_t points at writable data but shunk_t points at read-only data
>
> so I'd argue no. For instance, a construct like:
>
> const char string[4] = { 'H', 'e', 'l', 'p', };
> shunk_t s = { .ptr = string, .len = sizeof(string), };
>
> is valid (unlike strspn() et.al., shunks don't assume NUL
> termination), where as:
>
> chunk_t c = { .ptr = (uint8_t*) string, .len = sizeof(string), };
>
> is not.
>
> What might useful are:
>
> - think of a better name - string_t would be terrible, slice_t might be better
> - change .ptr to 'const uint8_t*', but that would break things like
> .ptr = "a string" :-(
>
> Andrew
> _______________________________________________
> Swan-dev mailing list
> Swan-dev at lists.libreswan.org
> https://lists.libreswan.org/mailman/listinfo/swan-dev
More information about the Swan-dev
mailing list