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