8000 Migrate to new HPyStructSequence API · mattip/numpy@aa2de3e · GitHub
[go: up one dir, main page]

Skip to content

Commit aa2de3e

Browse files
committed
Migrate to new HPyStructSequence API
1 parent 4678d48 commit aa2de3e

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

numpy/core/src/multiarray/typeinfo.c

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -56,41 +56,45 @@ PyArray_typeinfo(HPyContext *ctx,
5656
char typechar, int typenum, int nbits, int align,
5757
HPy type_obj)
5858
{
59-
HPyStructSequenceBuilder entry = HPyStructSequenceBuilder_New(ctx, PyArray_typeinfoType);
60-
HPyStructSequenceBuilder_Set_i(ctx, entry, 0, typechar);
61-
HPyStructSequenceBuilder_Set_i(ctx, entry, 1, typenum);
62-
HPyStructSequenceBuilder_Set_i(ctx, entry, 2, nbits);
63-
HPyStructSequenceBuilder_Set_i(ctx, entry, 3, align);
64-
HPyStructSequenceBuilder_Set(ctx, entry, 4, type_obj);
65-
66-
if (HPyErr_Occurred(ctx)) {
67-
HPyStructSequenceBuilder_Cancel(ctx, entry);
59+
HPy types[] = {
60+
HPyLong_FromLong(ctx, typechar),
61+
HPyLong_FromLong(ctx, typenum),
62+
HPyLong_FromLong(ctx, nbits),
63+
HPyLong_FromLong(ctx, align),
64+
type_obj
65+
};
66+
HPy entry = HPyStructSequence_New(ctx, PyArray_typeinfoType, 5, types);
67+
for (int i=0; i < 4; i++)
68+
HPy_Close(ctx, types[i]);
69+
70+
if (HPy_IsNull(entry)) {
6871
return HPy_NULL;
6972
}
70-
71-
return HPyStructSequenceBuilder_Build(ctx, entry, PyArray_typeinfoType);
73+
return entry;
7274
}
7375

7476
NPY_NO_EXPORT HPy
7577
PyArray_typeinforanged(HPyContext *ctx,
7678
char typechar, int typenum, int nbits, int align,
7779
HPy max, HPy min, HPy type_obj)
7880
{
79-
HPyStructSequenceBuilder entry = HPyStructSequenceBuilder_New(ctx, PyArray_typeinforangedType);
80-
HPyStructSequenceBuilder_Set_i(ctx, entry, 0, typechar);
81-
HPyStructSequenceBuilder_Set_i(ctx, entry, 1, typenum);
82-
HPyStructSequenceBuilder_Set_i(ctx, entry, 2, nbits);
83-
HPyStructSequenceBuilder_Set_i(ctx, entry, 3, align);
84-
HPyStructSequenceBuilder_Set(ctx, entry, 4, max);
85-
HPyStructSequenceBuilder_Set(ctx, entry, 5, min);
86-
HPyStructSequenceBuilder_Set(ctx, entry, 6, type_obj);
87-
88-
if (HPyErr_Occurred(ctx)) {
89-
HPyStructSequenceBuilder_Cancel(ctx, entry);
81+
HPy types[] = {
82+
HPyLong_FromLong(ctx, typechar),
83+
HPyLong_FromLong(ctx, typenum),
84+
HPyLong_FromLong(ctx, nbits),
85+
HPyLong_FromLong(ctx, align),
86+
max,
87+
min,
88+
type_obj
89+
};
90+
HPy entry = HPyStructSequence_New(ctx, PyArray_typeinforangedType, 7, types);
91+
for (int i=0; i < 4; i++)
92+
HPy_Close(ctx, types[i]);
93+
94+
if (HPy_IsNull(entry)) {
9095
return HPy_NULL;
9196
}
92-
93-
return HPyStructSequenceBuilder_Build(ctx, entry, PyArray_typeinforangedType);
97+
return entry;
9498
}
9599

96100
/* Python version needed for older PyPy */

0 commit comments

Comments
 (0)
0