mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 15:41:43 +00:00 
			
		
		
		
	
		
			
	
	
		
			34 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#define NULLABLE(x) do {                    \
							 | 
						||
| 
								 | 
							
								        if (x == Py_None) {                 \
							 | 
						||
| 
								 | 
							
								            x = NULL;                       \
							 | 
						||
| 
								 | 
							
								        }                                   \
							 | 
						||
| 
								 | 
							
								    } while (0);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define RETURN_INT(value) do {              \
							 | 
						||
| 
								 | 
							
								        int _ret = (value);                 \
							 | 
						||
| 
								 | 
							
								        if (_ret == -1) {                   \
							 | 
						||
| 
								 | 
							
								            assert(PyErr_Occurred());       \
							 | 
						||
| 
								 | 
							
								            return NULL;                    \
							 | 
						||
| 
								 | 
							
								        }                                   \
							 | 
						||
| 
								 | 
							
								        assert(!PyErr_Occurred());          \
							 | 
						||
| 
								 | 
							
								        return PyLong_FromLong(_ret);       \
							 | 
						||
| 
								 | 
							
								    } while (0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define RETURN_SIZE(value) do {             \
							 | 
						||
| 
								 | 
							
								        Py_ssize_t _ret = (value);          \
							 | 
						||
| 
								 | 
							
								        if (_ret == -1) {                   \
							 | 
						||
| 
								 | 
							
								            assert(PyErr_Occurred());       \
							 | 
						||
| 
								 | 
							
								            return NULL;                    \
							 | 
						||
| 
								 | 
							
								        }                                   \
							 | 
						||
| 
								 | 
							
								        assert(!PyErr_Occurred());          \
							 | 
						||
| 
								 | 
							
								        return PyLong_FromSsize_t(_ret);    \
							 | 
						||
| 
								 | 
							
								    } while (0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Marker to check that pointer value was set. */
							 | 
						||
| 
								 | 
							
								static const char uninitialized[] = "uninitialized";
							 | 
						||
| 
								 | 
							
								#define UNINITIALIZED_PTR ((void *)uninitialized)
							 | 
						||
| 
								 | 
							
								/* Marker to check that Py_ssize_t value was set. */
							 | 
						||
| 
								 | 
							
								#define UNINITIALIZED_SIZE ((Py_ssize_t)236892191)
							 | 
						||
| 
								 | 
							
								/* Marker to check that integer value was set. */
							 | 
						||
| 
								 | 
							
								#define UNINITIALIZED_INT (63256717)
							 |