On Thu, Dec 15, 2011 at 2:14 PM, Igor Stasenko <siguctua@gmail.com> wrote:
On 15 December 2011 10:28, Henrik Sperre Johansen
<henrik.s.johansen@veloxit.no> wrote:
> On 14.12.2011 02:10, Igor Stasenko wrote:
>>
>> On 14 December 2011 01:17, Fernando Olivero<fernando.olivero@usi.ch>
>> �wrote:
>>>
>>> Igor, is this a bug?
>>>
>>> When parsing methods that send native functions withouth arguments ,
>>> void, theres a DNU.
>>> For example in the following method:
>>>
>>> ^ self pangoCairoNbCall:#(PangoCairoFontMap
>>> pango_cairo_font_map_get_default ( void ) )
>>>
>>>
>>> I fixed it like this:
>>>
>>> usesMethodArguments
>>> "first check wether my single argument is void"
>>> ^(fnSpec arguments size = 1 ==> �[fnSpec arguments first class ~=
>>> NBVoid]) and:[ fnSpec arguments anySatisfy: [:type | type loader
>>> usesSTStack ] ]
>>>
>>>
>> Well, the function signature syntax are not strictly following C.
>> Just use empty parens for functions with no arguments. This is quite
>> archaic C syntax, which is really not important to support.
>>
>> Or i can add this patch if you insist. :)
>
>
> So you would say f.ex.
> http://david.tribble.com/text/cdiffs.htm#C99-empty-parm
> is incorrect?
>

in what context we're talking about? if this declaration in C code,
then of course it could mean that it does not defines the arguments
yet.
But if we speaking about signature of function for callout, then i
think it is clear what it stands for.

Are you? �Since in C () means an unspecified argument list this could be the way of declaring a varargs function, e.g.

printf: arguments
� � <cdecl: printf ()>

could insist on arguments being an array and automatically marshall all the elements in it.


I had thoughts about adding handling the sole 'void' keyword in
function params, but then i thought, what the heck, it doesn't makes
creating callouts harder or easier. Unlike from C/C++ code it carries
no additional functional load. Nothing.

> Cheers,
> Henry
>


--
Best regards,
Igor Stasenko.




--
best,
Eliot