Thread (19 messages) 19 messages, 4 authors, 2016-06-15

Re: [PATCH 2/3] convert "enum date_mode" into a struct

flat view

From: Jeff King <hidden>
Date: 2016-06-15 23:05:31

On Thu, Jun 25, 2015 at 06:03:28PM +0100, John Keeping wrote:
quoted
Ideally we could say:

  show_date(t, tz, &{ DATE_NORMAL });

but of course C does not allow that.
Yes it does, e.g. in 6.5.2.5 of C11, example 3 shows:
Well, yes. But we generally restrict ourselves to C89 here, so we are
not even close.
Of course, whether all of the compilers we target support it is a
different question.  If they do, perhaps something like:

#define SIMPLE_DATE(f)		&(struct date_mode) { DATE_NORMAL }

would allow the callers to remain reasonably sane.
My patch already introduces DATE_MODE, so you could conditionally hide
it there, and fall back to date_mode_from_type when the compiler is too
old for this. But then, what is the advantage over the existing
solution? It's reentrant, but I don't think that is a problem here.

And in patch 3, you'll see that I add an extra assertion to
date_mode_from_type that this cannot support (to make sure that we do
not create a DATE_STRFTIME mode with no matching format string). The
syntax above would at least give us NULL for the string, which is better
than random garbage, but I think the assert is better still.

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help