@@ -2825,70 +2825,91 @@ static struct PyModuleDef _testbuffermodule = {
2825
2825
NULL
2826
2826
};
2827
2827
2828
-
2829
- PyMODINIT_FUNC
2830
- PyInit__testbuffer (void )
2828
+ static int
2829
+ _testbuffer_exec (PyObject * mod )
2831
2830
{
2832
- PyObject * m ;
2833
-
2834
- m = PyModule_Create (& _testbuffermodule );
2835
- if (m == NULL )
2836
- return NULL ;
2837
-
2838
2831
Py_SET_TYPE (& NDArray_Type , & PyType_Type );
2839
- Py_INCREF (& NDArray_Type );
2840
- PyModule_AddObject (m , "ndarray" , (PyObject * )& NDArray_Type );
2832
+ if (PyModule_AddType (mod , & NDArray_Type ) < 0 ) {
2833
+ return -1 ;
2834
+ }
2841
2835
2842
2836
Py_SET_TYPE (& StaticArray_Type , & PyType_Type );
2843
- Py_INCREF (& StaticArray_Type );
2844
- PyModule_AddObject (m , "staticarray" , (PyObject * )& StaticArray_Type );
2837
+ if (PyModule_AddType (mod , & StaticArray_Type ) < 0 ) {
2838
+ return -1 ;
2839
+ }
2845
2840
2846
2841
structmodule = PyImport_ImportModule ("struct" );
2847
- if (structmodule == NULL )
2848
- return NULL ;
2842
+ if (structmodule == NULL ) {
2843
+ return -1 ;
2844
+ }
2849
2845
2850
2846
Struct = PyObject_GetAttrString (structmodule , "Struct" );
2847
+ if (Struct == NULL ) {
2848
+ return -1 ;
2849
+ }
2851
2850
calcsize = PyObject_GetAttrString (structmo
8000
dule , "calcsize" );
2852
- if (Struct == NULL || calcsize == NULL )
2853
- return NULL ;
2851
+ if (calcsize == NULL ) {
2852
+ return -1 ;
2853
+ }
2854
2854
2855
2855
simple_format = PyUnicode_FromString (simple_fmt );
2856
- if (simple_format == NULL )
2857
- return NULL ;
2858
-
2859
- PyModule_AddIntMacro (m , ND_MAX_NDIM );
2860
- PyModule_AddIntMacro (m , ND_VAREXPORT );
2861
- PyModule_AddIntMacro (m , ND_WRITABLE );
2862
- PyModule_AddIntMacro (m , ND_FORTRAN );
2863
- PyModule_AddIntMacro (m , ND_SCALAR );
2864
- PyModule_AddIntMacro (m , ND_PIL );
2865
- PyModule_AddIntMacro (m , ND_GETBUF_FAIL );
2866
- PyModule_AddIntMacro (m , ND_GETBUF_UNDEFINED );
2867
- PyModule_AddIntMacro (m , ND_REDIRECT );
2868
-
2869
- PyModule_AddIntMacro (m , PyBUF_SIMPLE );
2870
- PyModule_AddIntMacro (m, PyBUF_WRITABLE );
2871
- PyModule_AddIntMacro (m , PyBUF_FORMAT );
2872
- PyModule_AddIntMacro (m , PyBUF_ND );
2873
- PyModule_AddIntMacro (m , PyBUF_STRIDES );
2874
- PyModule_AddIntMacro (m , PyBUF_INDIRECT );
2875
- PyModule_AddIntMacro (m , PyBUF_C_CONTIGUOUS );
2876
- PyModule_AddIntMacro (m , PyBUF_F_CONTIGUOUS );
2877
- PyModule_AddIntMacro (m , PyBUF_ANY_CONTIGUOUS );
2878
- PyModule_AddIntMacro (m , PyBUF_FULL );
2879
- PyModule_AddIntMacro (m , PyBUF_FULL_RO );
2880
- PyModule_AddIntMacro (m , PyBUF_RECORDS );
2881
- PyModule_AddIntMacro (m , PyBUF_RECORDS_RO );
2882
- PyModule_AddIntMacro (m , PyBUF_STRIDED );
2883
- PyModule_AddIntMacro (m , PyBUF_STRIDED_RO );
2884
- PyModule_AddIntMacro (m , PyBUF_CONTIG );
2885
- PyModule_AddIntMacro (m , PyBUF_CONTIG_RO );
2886
-
2887
- PyModule_AddIntMacro (m , PyBUF_READ );
2888
- PyModule_AddIntMacro (m , PyBUF_WRITE );
2889
-
2890
- return m ;
2891
- }
2856
+ if (simple_format == NULL ) {
2857
+ return -1 ;
2858
+ }
2892
2859
2860
+ #define ADD_INT_MACRO (mod , macro ) \
2861
+ do { \
2862
+ if (PyModule_AddIntConstant(mod, #macro, macro) < 0) { \
2863
+ return -1; \
2864
+ } \
2865
+ } while (0)
2866
+
2867
+ ADD_INT_MACRO (mod , ND_MAX_NDIM );
2868
+ ADD_INT_MACRO (mod , ND_VAREXPORT );
2869
+ ADD_INT_MACRO (mod , ND_WRITABLE );
2870
+ ADD_INT_MACRO (mod , ND_FORTRAN );
2871
+ ADD_INT_MACRO (mod , ND_SCALAR );
2872
+ ADD_INT_MACRO (mod , ND_PIL );
2873
+ ADD_INT_MACRO (mod , ND_GETBUF_FAIL );
2874
+ ADD_INT_MACRO (mod , ND_GETBUF_UNDEFINED );
2875
+ ADD_INT_MACRO (mod , ND_REDIRECT );
2876
+
2877
+ ADD_INT_MACRO (mod , PyBUF_SIMPLE );
2878
+ ADD_INT_MACRO (mod , PyBUF_WRITABLE );
2879
+ ADD_INT_MACRO (mod , PyBUF_FORMAT );
2880
+ ADD_INT_MACRO (mod , PyBUF_ND );
2881
+ ADD_INT_MACRO (mod , PyBUF_STRIDES );
2882
+ ADD_INT_MACRO (mod , PyBUF_INDIRECT );
2883
+ ADD_INT_MACRO (mod , PyBUF_C_CONTIGUOUS );
2884
+ ADD_INT_MACRO (mod , PyBUF_F_CONTIGUOUS );
2885
+ ADD_INT_MACRO (mod , PyBUF_ANY_CONTIGUOUS );
2886
+ ADD_INT_MACRO (mod , PyBUF_FULL );
2887
+ ADD_INT_MACRO (mod , PyBUF_FULL_RO );
2888
+ ADD_INT_MACRO (mod , PyBUF_RECORDS );
2889
+ ADD_INT_MACRO (mod , PyBUF_RECORDS_RO );
2890
+ ADD_INT_MACRO (mod , PyBUF_STRIDED );
2891
+ ADD_INT_MACRO (mod , PyBUF_STRIDED_RO );
2892
+ ADD_INT_MACRO (mod , PyBUF_CONTIG );
2893
+ ADD_INT_MACRO (mod , PyBUF_CONTIG_RO );
2894
+
2895
+ ADD_INT_MACRO (mod , PyBUF_READ );
2896
+ ADD_INT_MACRO (mod , PyBUF_WRITE );
2897
+
2898
+ #undef ADD_INT_MACRO
2893
2899
2900
+ return 0 ;
2901
+ }
2894
2902
2903
+ PyMODINIT_FUNC
2904
+ PyInit__testbuffer (void )
2905
+ {
2906
+ PyObject * mod = PyModule_Create (& _testbuffermodule );
2907
+ if (mod == NULL ) {
2908
+ return NULL ;
2909
+ }
2910
+ if (_testbuffer_exec (mod ) < 0 ) {
2911
+ Py_DECREF (mod );
2912
+ return NULL ;
2913
+ }
2914
+ return mod ;
2915
+ }
0 commit comments