Hello,
I am working on G-Golf (a guile scheme GI binding library) [1]. I now have a
'reasonably good sketch' to work on what will eventually let me 'fully bind' GI
functions.
While working on this, using Clutter to test, a few questions 'came up', wrt to
clutter_init and clutter_init_with_args first argument, their respective
documentation entry and the way GI defines their corresponding GIArg-Info.
1] Lets start with the doc quiz:
ClutterInitError
clutter_init (int *argc,
char ***argv);
...
argc The number of arguments in argv. [inout]
argv A pointer to the array ... [inout][allow-none]
ClutterInitError
clutter_init_with_args (int *argc,
char ***argv,
...
...
argc a pointer to the number of command line arguments. [inout]
argv a pointer to the array ...
[inout][allow-none]
But I see in an 'old' guile-clutter binding (not using GI), which I can still use, so it
works fine, that the initialization call is (always):
if (clutter_init (NULL, NULL) != CLUTTER_INIT_SUCCESS)
Which means that argc is a pointer, that can be NULL, so should the doc entry not be:
argc a pointer to the number of command line arguments. [inout][allow-none]
2] Now, 'their' GIArgInfo definition and related question
[ you can see the complete <function> and <argument> instances for
[ clutter_init, as 'seen' by G-Golf here [2], but here is 'just' the first
[ argument, so I can ask my question>
Here is the definition the argc argument, as 'seen' by G-Golf
#<<argument> 55e221b84ea0> - instance of <argument>
slots and values are:
name = argc
closure = -1
destroy = -1
direction = inout
transfert = everything
scope = invalid
type-tag = int32
type-desc = int32
is-pointer? = #f
may-be-null? = #f
is-caller-allocate? = #f
is-optional? = #f
is-return-value? = #f
is-skip? = #f
gi-argument = #<pointer 0x55e221b2cdd0>
gi-argument-field = v-int32
So, it's definitely not a pointer, and can't be null.
What am I missing here?
Thanks,
David
[1] https://www.gnu.org/software/g-golf/
[2] the clutter_init function and arguments s 'seen' by G-Golf
#<<function> 55e221b5b230> - instance of <function>
slots and values are:
name = clutter-init
flags = ()
n-arg = 2
caller-owns = nothing
return-type = interface
type-desc = (enum clutter-init-error #<<gi-enum> 55e221a63120> 94429717812384)
may-return-null? = #f
arguments = (#<<argument> 55e221b84ea0> #<<argument> 55e221b84e10>)
n-gi-arg-in = 2
gi-args-in = #<pointer 0x55e221b2cd10>
n-gi-arg-out = 2
gi-args-out = #<pointer 0x55e221b2cce0>
#<<argument> 55e221b84ea0> - instance of <argument>
slots and values are:
name = argc
closure = -1
destroy = -1
direction = inout
transfert = everything
scope = invalid
type-tag = int32
type-desc = int32
is-pointer? = #f
may-be-null? = #f
is-caller-allocate? = #f
is-optional? = #f
is-return-value? = #f
is-skip? = #f
gi-argument = #<pointer 0x55e221b2cdd0>
gi-argument-field = v-int32
#<<argument> 55e221b84e10> - instance of <argument>
slots and values are:
name = argv
closure = -1
destroy = -1
direction = inout
transfert = everything
scope = invalid
type-tag = array
type-desc = (array . c)
is-pointer? = #t
may-be-null? = #t
is-caller-allocate? = #f
is-optional? = #t
is-return-value? = #f
is-skip? = #f
gi-argument = #<pointer 0x55e221b2cd70>
gi-argument-field = v-pointer
Attachment:
pgpYGFy88hBMn.pgp
Description: OpenPGP digital signature