[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [libmicrohttpd] Propose api change
From: |
Christian Grothoff |
Subject: |
Re: [libmicrohttpd] Propose api change |
Date: |
Sun, 25 Oct 2015 23:08:27 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.7.0 |
Hi!
I typically keep the data type 'enum' even if it is a bitmask, as really
in C we have enum = int, and the type declaration as enum helps the
reader understand what kind of 'int' we are talking about. I'd not want
to loose that.
But, the semantic change, give the pos->kind back instead of 'kind'
makes a lot of sense, as only then one can really use the bitmask and
know what kind of header is returned. So I've changed that bit in SVN
36571. I didn't "&" with 'kind' as pos->kind should really only always
have one bit set.
Happy hacking!
Christian
On 10/25/2015 10:07 PM, address@hidden wrote:
> Hi folks,
>
> I've playing around with microhttpd and i think the function
> MHD_get_connection_values() can be easily improved. This function
> receives an enum of MHD_ValueKind, so you have to call this function
> with a kind per time if you need to get different kind of values.
>
> I do not know how we deal with api changes in this project, but i think
> it would be better if instead of receive an enum it receives an unsigne
> int, so we could do something like this, MHD_GET_ARGUMENT_KIND |
> MHD_HEADER_KIND | ...
>
> Follow the patch (any suggestion is valid :))
>
>
> Index: src/include/microhttpd.h
> ===================================================================
> --- src/include/microhttpd.h (revision 36562)
> +++ src/include/microhttpd.h (working copy)
> @@ -1786,7 +1786,7 @@
> */
> _MHD_EXTERN int
> MHD_get_connection_values (struct MHD_Connection *connection,
> - enum MHD_ValueKind kind,
> + unsigned int kind,
> MHD_KeyValueIterator iterator, void
> *iterator_cls);
>
>
> Index: src/microhttpd/connection.c
> ===================================================================
> --- src/microhttpd/connection.c (revision 36562)
> +++ src/microhttpd/connection.c (working copy)
> @@ -125,7 +125,7 @@
> */
> int
> MHD_get_connection_values (struct MHD_Connection *connection,
> - enum MHD_ValueKind kind,
> + unsigned int kind,
> MHD_KeyValueIterator iterator, void *iterator_cls)
> {
> int ret;
> @@ -140,7 +140,7 @@
> ret++;
> if ((NULL != iterator) &&
> (MHD_YES != iterator (iterator_cls,
> - kind, pos->header, pos->value)))
> + (pos->kind & kind), pos->header, pos->value)))
> return ret;
> }
> return ret;
>
signature.asc
Description: OpenPGP digital signature