Misc Helpers¶
-
int
HPyHelpers_AddType
(HPyContext *ctx, HPy obj, const char *name, HPyType_Spec *hpyspec, HPyType_SpecParam *params)¶
[source] Create a type and add it as an attribute on the given object. The type is created using
HPyType_FromSpec()
. The object is often a module that the type is being added to.- Parameters
ctx – The execution context.
obj – A handle to the object the type is being added to (often a module).
name – The name of the attribute on the object to assign the type to.
hpyspec – The type spec to use to create the type.
params – The type spec parameters to use to create the type.
- Returns
0
on failure,1
on success.
Examples:
Using
HPyHelpers_AddType
without anyHPyType_SpecParam
parameters:if (!HPyHelpers_AddType(ctx, module, "MyType", hpyspec, NULL)) return HPy_NULL; ...
Using HPyHelpers_AddType with HPyType_SpecParam parameters:
HPyType_SpecParam params[] = { { HPyType_SpecParam_Base, ctx->h_LongType }, { 0 } }; if (!HPyHelpers_AddType(ctx, module, "MyType", hpyspec, params)) return HPy_NULL; ...
-
int
HPyHelpers_PackArgsAndKeywords
(HPyContext *ctx, const HPy *args, size_t nargs, HPy kwnames, HPy *out_pos_args, HPy *out_kwd)¶
[source] Convert positional/keyword argument vector to argument tuple and keywords dictionary.
This helper function is useful to convert arguments from HPy’s calling convention to the legacy CPython tp_call calling convention. HPy’s calling convention is similar to CPython’s fastcall/vectorcall calling convention where positional and keyword arguments are passed as a C array, the number of positional arguments is explicitly given by an argument and the names of the keyword arguments are provided in a tuple.
For an example on how to use this function, see section Incremental Migration to HPy’s Calling Protocol.
- Parameters
ctx – The execution context.
args – A pointer to an array of positional and keyword arguments. This argument must not be
NULL
ifnargs > 0
orHPy_Length(ctx, kwnames) > 0
.nargs – The number of positional arguments in
args
.kwnames – A handle to the tuple of keyword argument names (may be
HPy_NULL
). The values of the keyword arguments are also passed inargs
appended to the positional arguments. Argumentnargs
does not include the keyword argument count.out_pos_args – A pointer to a variable where to write the created positional arguments tuple to. If there are no positional arguments (i.e.
nargs == 0
), thenHPy_NULL
will be written. The pointer will not be used if any error occurs during conversion.out_kwd – A pointer to a variable where to write the created keyword arguments dictionary to. If there are not keyword arguments (i.e.
HPy_Length(ctx, kwnames) == 0
), thenHPy_NULL
will be written. The pointer will not be used if any error occurs during conversion.
- Returns
0
on failure,1
on success.