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
0on failure,1on success.
Examples:
Using
HPyHelpers_AddTypewithout anyHPyType_SpecParamparameters: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
NULLifnargs > 0orHPy_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 inargsappended to the positional arguments. Argumentnargsdoes 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_NULLwill 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_NULLwill be written. The pointer will not be used if any error occurs during conversion.
- Returns
0on failure,1on success.