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