mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			40 lines
		
	
	
	
		
			859 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
	
		
			859 B
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #include <Python.h>
 | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |     PyObject_HEAD | ||
|  |     /* Type-specific fields go here. */ | ||
|  | } CustomObject; | ||
|  | 
 | ||
|  | static PyTypeObject CustomType = { | ||
|  |     PyVarObject_HEAD_INIT(NULL, 0) | ||
|  |     .tp_name = "custom.Custom", | ||
|  |     .tp_doc = "Custom objects", | ||
|  |     .tp_basicsize = sizeof(CustomObject), | ||
|  |     .tp_itemsize = 0, | ||
|  |     .tp_flags = Py_TPFLAGS_DEFAULT, | ||
|  |     .tp_new = PyType_GenericNew, | ||
|  | }; | ||
|  | 
 | ||
|  | static PyModuleDef custommodule = { | ||
|  |     PyModuleDef_HEAD_INIT, | ||
|  |     .m_name = "custom", | ||
|  |     .m_doc = "Example module that creates an extension type.", | ||
|  |     .m_size = -1, | ||
|  | }; | ||
|  | 
 | ||
|  | PyMODINIT_FUNC | ||
|  | PyInit_custom(void) | ||
|  | { | ||
|  |     PyObject *m; | ||
|  |     if (PyType_Ready(&CustomType) < 0) | ||
|  |         return NULL; | ||
|  | 
 | ||
|  |     m = PyModule_Create(&custommodule); | ||
|  |     if (m == NULL) | ||
|  |         return NULL; | ||
|  | 
 | ||
|  |     Py_INCREF(&CustomType); | ||
|  |     PyModule_AddObject(m, "Custom", (PyObject *) &CustomType); | ||
|  |     return m; | ||
|  | } |