@@ -278,10 +278,8 @@ typedef struct _VecI64API {
278278 VecI64 (* remove )(VecI64 , int64_t );
279279 // TODO: Py_ssize_t
280280 VecI64 (* slice )(VecI64 , int64_t , int64_t );
281- // PyObject *(*extend)(PyObject *, PyObject *);
282- // PyObject *(*concat)(PyObject *, PyObject *);
283- // bool (*contains)(PyObject *, int64_t);
284- // iter?
281+ VecI64 (* extend )(VecI64 , PyObject * );
282+ VecI64 (* extend_vec )(VecI64 , VecI64 );
285283} VecI64API ;
286284
287285// vec[i32] operations + type objects (stored in a capsule)
@@ -297,10 +295,8 @@ typedef struct _VecI32API {
297295 VecI32 (* remove )(VecI32 , int32_t );
298296 // TODO: Py_ssize_t
299297 VecI32 (* slice )(VecI32 , int64_t , int64_t );
300- // PyObject *(*extend)(PyObject *, PyObject *);
301- // PyObject *(*concat)(PyObject *, PyObject *);
302- // bool (*contains)(PyObject *, int32_t);
303- // iter?
298+ VecI32 (* extend )(VecI32 , PyObject * );
299+ VecI32 (* extend_vec )(VecI32 , VecI32 );
304300} VecI32API ;
305301
306302// vec[i16] operations + type objects (stored in a capsule)
@@ -316,10 +312,8 @@ typedef struct _VecI16API {
316312 VecI16 (* remove )(VecI16 , int16_t );
317313 // TODO: Py_ssize_t
318314 VecI16 (* slice )(VecI16 , int64_t , int64_t );
319- // PyObject *(*extend)(PyObject *, PyObject *);
320- // PyObject *(*concat)(PyObject *, PyObject *);
321- // bool (*contains)(PyObject *, int16_t);
322- // iter?
315+ VecI16 (* extend )(VecI16 , PyObject * );
316+ VecI16 (* extend_vec )(VecI16 , VecI16 );
323317} VecI16API ;
324318
325319// vec[u8] operations + type objects (stored in a capsule)
@@ -335,10 +329,8 @@ typedef struct _VecU8API {
335329 VecU8 (* remove )(VecU8 , uint8_t );
336330 // TODO: Py_ssize_t
337331 VecU8 (* slice )(VecU8 , int64_t , int64_t );
338- // PyObject *(*extend)(PyObject *, PyObject *);
339- // PyObject *(*concat)(PyObject *, PyObject *);
340- // bool (*contains)(PyObject *, uint8_t);
341- // iter?
332+ VecU8 (* extend )(VecU8 , PyObject * );
333+ VecU8 (* extend_vec )(VecU8 , VecU8 );
342334} VecU8API ;
343335
344336// vec[float] operations + type objects (stored in a capsule)
@@ -354,10 +346,8 @@ typedef struct _VecFloatAPI {
354346 VecFloat (* remove )(VecFloat , double );
355347 // TODO: Py_ssize_t
356348 VecFloat (* slice )(VecFloat , int64_t , int64_t );
357- // PyObject *(*extend)(PyObject *, PyObject *);
358- // PyObject *(*concat)(PyObject *, PyObject *);
359- // bool (*contains)(PyObject *, double);
360- // iter?
349+ VecFloat (* extend )(VecFloat , PyObject * );
350+ VecFloat (* extend_vec )(VecFloat , VecFloat );
361351} VecFloatAPI ;
362352
363353// vec[bool] operations + type objects (stored in a capsule)
@@ -373,10 +363,8 @@ typedef struct _VecBoolAPI {
373363 VecBool (* remove )(VecBool , char );
374364 // TODO: Py_ssize_t
375365 VecBool (* slice )(VecBool , int64_t , int64_t );
376- // PyObject *(*extend)(PyObject *, PyObject *);
377- // PyObject *(*concat)(PyObject *, PyObject *);
378- // bool (*contains)(PyObject *, char);
379- // iter?
366+ VecBool (* extend )(VecBool , PyObject * );
367+ VecBool (* extend_vec )(VecBool , VecBool );
380368} VecBoolAPI ;
381369
382370#ifndef MYPYC_DECLARED_tuple_T2VOO
@@ -405,10 +393,8 @@ typedef struct _VecTAPI {
405393 VecT (* remove )(VecT , PyObject * );
406394 // TODO: Py_ssize_t
407395 VecT (* slice )(VecT , int64_t , int64_t );
408- // PyObject *(*extend)(PyObject *, PyObject *);
409- // PyObject *(*concat)(PyObject *, PyObject *);
410- // bool (*contains)(PyObject *, PyObject *);
411- // iter?
396+ VecT (* extend )(VecT , PyObject * , size_t );
397+ VecT (* extend_vec )(VecT , VecT , size_t );
412398} VecTAPI ;
413399
414400
@@ -436,10 +422,8 @@ typedef struct _VecNestedAPI {
436422 VecNested (* remove )(VecNested , VecNestedBufItem );
437423 // TODO: Py_ssize_t
438424 VecNested (* slice )(VecNested , int64_t , int64_t );
439- // PyObject *(*extend)(PyObject *, PyObject *);
440- // PyObject *(*concat)(PyObject *, PyObject *);
441- // bool (*contains)(PyObject *, PyObject *);
442- // iter?
425+ VecNested (* extend )(VecNested , PyObject * );
426+ VecNested (* extend_vec )(VecNested , VecNested );
443427} VecNestedAPI ;
444428
445429typedef struct {
@@ -539,6 +523,8 @@ static inline int VecI64_IsUnboxError(int64_t x) {
539523
540524PyObject * VecI64_Box (VecI64 );
541525VecI64 VecI64_Append (VecI64 , int64_t x );
526+ VecI64 VecI64_Extend (VecI64 , PyObject * iterable );
527+ VecI64 VecI64_ExtendVec (VecI64 dst , VecI64 src );
542528VecI64 VecI64_Remove (VecI64 , int64_t x );
543529VecI64PopResult VecI64_Pop (VecI64 v , Py_ssize_t index );
544530
@@ -569,6 +555,8 @@ static inline int VecI32_IsUnboxError(int32_t x) {
569555
570556PyObject * VecI32_Box (VecI32 );
571557VecI32 VecI32_Append (VecI32 , int32_t x );
558+ VecI32 VecI32_Extend (VecI32 , PyObject * iterable );
559+ VecI32 VecI32_ExtendVec (VecI32 dst , VecI32 src );
572560VecI32 VecI32_Remove (VecI32 , int32_t x );
573561VecI32PopResult VecI32_Pop (VecI32 v , Py_ssize_t index );
574562
@@ -599,6 +587,8 @@ static inline int VecI16_IsUnboxError(int16_t x) {
599587
600588PyObject * VecI16_Box (VecI16 );
601589VecI16 VecI16_Append (VecI16 , int16_t x );
590+ VecI16 VecI16_Extend (VecI16 , PyObject * iterable );
591+ VecI16 VecI16_ExtendVec (VecI16 dst , VecI16 src );
602592VecI16 VecI16_Remove (VecI16 , int16_t x );
603593VecI16PopResult VecI16_Pop (VecI16 v , Py_ssize_t index );
604594
@@ -632,6 +622,8 @@ static inline int VecU8_IsUnboxError(uint8_t x) {
632622
633623PyObject * VecU8_Box (VecU8 );
634624VecU8 VecU8_Append (VecU8 , uint8_t x );
625+ VecU8 VecU8_Extend (VecU8 , PyObject * iterable );
626+ VecU8 VecU8_ExtendVec (VecU8 dst , VecU8 src );
635627VecU8 VecU8_Remove (VecU8 , uint8_t x );
636628VecU8PopResult VecU8_Pop (VecU8 v , Py_ssize_t index );
637629
@@ -655,6 +647,8 @@ static inline int VecFloat_IsUnboxError(double x) {
655647
656648PyObject * VecFloat_Box (VecFloat );
657649VecFloat VecFloat_Append (VecFloat , double x );
650+ VecFloat VecFloat_Extend (VecFloat , PyObject * iterable );
651+ VecFloat VecFloat_ExtendVec (VecFloat dst , VecFloat src );
658652VecFloat VecFloat_Remove (VecFloat , double x );
659653VecFloatPopResult VecFloat_Pop (VecFloat v , Py_ssize_t index );
660654
@@ -691,6 +685,8 @@ static inline int VecBool_IsUnboxError(char x) {
691685
692686PyObject * VecBool_Box (VecBool );
693687VecBool VecBool_Append (VecBool , char x );
688+ VecBool VecBool_Extend (VecBool , PyObject * iterable );
689+ VecBool VecBool_ExtendVec (VecBool dst , VecBool src );
694690VecBool VecBool_Remove (VecBool , char x );
695691VecBoolPopResult VecBool_Pop (VecBool v , Py_ssize_t index );
696692
@@ -716,6 +712,8 @@ VecT VecT_New(Py_ssize_t size, Py_ssize_t cap, size_t item_type);
716712PyObject * VecT_FromIterable (size_t item_type , PyObject * iterable , int64_t cap );
717713PyObject * VecT_Box (VecT vec , size_t item_type );
718714VecT VecT_Append (VecT vec , PyObject * x , size_t item_type );
715+ VecT VecT_Extend (VecT vec , PyObject * iterable , size_t item_type );
716+ VecT VecT_ExtendVec (VecT dst , VecT src , size_t item_type );
719717VecT VecT_Remove (VecT vec , PyObject * x );
720718VecTPopResult VecT_Pop (VecT v , Py_ssize_t index );
721719
@@ -729,6 +727,8 @@ VecNested VecNested_New(Py_ssize_t size, Py_ssize_t cap, size_t item_type, size_
729727PyObject * VecNested_FromIterable (size_t item_type , size_t depth , PyObject * iterable , int64_t cap );
730728PyObject * VecNested_Box (VecNested );
731729VecNested VecNested_Append (VecNested vec , VecNestedBufItem x );
730+ VecNested VecNested_Extend (VecNested vec , PyObject * iterable );
731+ VecNested VecNested_ExtendVec (VecNested dst , VecNested src );
732732VecNested VecNested_Remove (VecNested vec , VecNestedBufItem x );
733733VecNestedPopResult VecNested_Pop (VecNested v , Py_ssize_t index );
734734
0 commit comments