On Jul 31, 2013, at 23:50 , Marvin Humphrey <[email protected]> wrote:

> C blocks are a heinous hack that I wish we could do without.  For now, they're
> an essential safety valve for a few features that are too complex to
> implement directly in the Clownfish header language, but a part of me would
> like to have them undocumented in the initial release in the faint hope that
> we could get away with removing them eventually.  I anticipate that
> supporting them will constrain our ability to evolve Clownfish.

I would certainly be nice to get rid of C blocks, but I think every non-trivial 
Clownfish project will need them. The problem is that the order of declarations 
and definitions is important in header files and C blocks provide a 
straight-forward way guarantee this order.

> I think the fix in this particular case is minimal.  This ought to do it,
> right?
> 
>    --- a/core/Lucy/Test/Store/TestFolderCommon.cfh
>    +++ b/core/Lucy/Test/Store/TestFolderCommon.cfh
>    @@ -17,7 +17,7 @@
>     parcel TestLucy;
> 
>     __C__
>    -typedef lucy_Folder*
>    +typedef struct lucy_Folder*
>     Lucy_TestFolderCommon_Set_Up_t(void);
>     typedef void
>     Lucy_TestFolderCommon_Tear_Down_t(void);

This should work but I prefer the more general fix that I made in commit 
cb609f42. There might be other C blocks which could cause similar problems.

Nick

Reply via email to