mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			242 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			242 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| /* ========================== Module Scrap ========================== */
 | |
| 
 | |
| #include "Python.h"
 | |
| 
 | |
| 
 | |
| 
 | |
| #include "macglue.h"
 | |
| #include "pymactoolbox.h"
 | |
| 
 | |
| #include <Scrap.h>
 | |
| 
 | |
| /*
 | |
| ** Generate ScrapInfo records
 | |
| */
 | |
| static PyObject *
 | |
| SCRRec_New(itself)
 | |
| 	ScrapStuff *itself;
 | |
| {
 | |
| 
 | |
| 	return Py_BuildValue("lO&hhO&", itself->scrapSize,
 | |
| 		ResObj_New, itself->scrapHandle, itself->scrapCount, itself->scrapState,
 | |
| 		PyMac_BuildStr255, itself->scrapName);
 | |
| }
 | |
| 
 | |
| static PyObject *Scrap_Error;
 | |
| 
 | |
| static PyObject *Scrap_LoadScrap(_self, _args)
 | |
| 	PyObject *_self;
 | |
| 	PyObject *_args;
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	if (!PyArg_ParseTuple(_args, ""))
 | |
| 		return NULL;
 | |
| 	_err = LoadScrap();
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	Py_INCREF(Py_None);
 | |
| 	_res = Py_None;
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| static PyObject *Scrap_UnloadScrap(_self, _args)
 | |
| 	PyObject *_self;
 | |
| 	PyObject *_args;
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	if (!PyArg_ParseTuple(_args, ""))
 | |
| 		return NULL;
 | |
| 	_err = UnloadScrap();
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	Py_INCREF(Py_None);
 | |
| 	_res = Py_None;
 | |
| 	return _res;
 | |
| }
 | |
| 
 | |
| #if !TARGET_API_MAC_CARBON
 | |
| 
 | |
| static PyObject *Scrap_InfoScrap(_self, _args)
 | |
| 	PyObject *_self;
 | |
| 	PyObject *_args;
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	ScrapStuffPtr _rv;
 | |
| 	if (!PyArg_ParseTuple(_args, ""))
 | |
| 		return NULL;
 | |
| 	_rv = InfoScrap();
 | |
| 	_res = Py_BuildValue("O&",
 | |
| 	                     SCRRec_New, _rv);
 | |
| 	return _res;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #if !TARGET_API_MAC_CARBON
 | |
| 
 | |
| static PyObject *Scrap_GetScrap(_self, _args)
 | |
| 	PyObject *_self;
 | |
| 	PyObject *_args;
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	long _rv;
 | |
| 	Handle destination;
 | |
| 	ScrapFlavorType flavorType;
 | |
| 	SInt32 offset;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&O&",
 | |
| 	                      ResObj_Convert, &destination,
 | |
| 	                      PyMac_GetOSType, &flavorType))
 | |
| 		return NULL;
 | |
| 	_rv = GetScrap(destination,
 | |
| 	               flavorType,
 | |
| 	               &offset);
 | |
| 	_res = Py_BuildValue("ll",
 | |
| 	                     _rv,
 | |
| 	                     offset);
 | |
| 	return _res;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #if !TARGET_API_MAC_CARBON
 | |
| 
 | |
| static PyObject *Scrap_ZeroScrap(_self, _args)
 | |
| 	PyObject *_self;
 | |
| 	PyObject *_args;
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	if (!PyArg_ParseTuple(_args, ""))
 | |
| 		return NULL;
 | |
| 	_err = ZeroScrap();
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	Py_INCREF(Py_None);
 | |
| 	_res = Py_None;
 | |
| 	return _res;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #if !TARGET_API_MAC_CARBON
 | |
| 
 | |
| static PyObject *Scrap_PutScrap(_self, _args)
 | |
| 	PyObject *_self;
 | |
| 	PyObject *_args;
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	SInt32 sourceBufferByteCount;
 | |
| 	ScrapFlavorType flavorType;
 | |
| 	char *sourceBuffer__in__;
 | |
| 	int sourceBuffer__len__;
 | |
| 	int sourceBuffer__in_len__;
 | |
| 	if (!PyArg_ParseTuple(_args, "O&s#",
 | |
| 	                      PyMac_GetOSType, &flavorType,
 | |
| 	                      &sourceBuffer__in__, &sourceBuffer__in_len__))
 | |
| 		return NULL;
 | |
| 	sourceBufferByteCount = sourceBuffer__in_len__;
 | |
| 	sourceBuffer__len__ = sourceBuffer__in_len__;
 | |
| 	_err = PutScrap(sourceBufferByteCount,
 | |
| 	                flavorType,
 | |
| 	                sourceBuffer__in__);
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	Py_INCREF(Py_None);
 | |
| 	_res = Py_None;
 | |
|  sourceBuffer__error__: ;
 | |
| 	return _res;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #if TARGET_API_MAC_CARBON
 | |
| 
 | |
| static PyObject *Scrap_ClearCurrentScrap(_self, _args)
 | |
| 	PyObject *_self;
 | |
| 	PyObject *_args;
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	if (!PyArg_ParseTuple(_args, ""))
 | |
| 		return NULL;
 | |
| 	_err = ClearCurrentScrap();
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	Py_INCREF(Py_None);
 | |
| 	_res = Py_None;
 | |
| 	return _res;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #if TARGET_API_MAC_CARBON
 | |
| 
 | |
| static PyObject *Scrap_CallInScrapPromises(_self, _args)
 | |
| 	PyObject *_self;
 | |
| 	PyObject *_args;
 | |
| {
 | |
| 	PyObject *_res = NULL;
 | |
| 	OSStatus _err;
 | |
| 	if (!PyArg_ParseTuple(_args, ""))
 | |
| 		return NULL;
 | |
| 	_err = CallInScrapPromises();
 | |
| 	if (_err != noErr) return PyMac_Error(_err);
 | |
| 	Py_INCREF(Py_None);
 | |
| 	_res = Py_None;
 | |
| 	return _res;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| static PyMethodDef Scrap_methods[] = {
 | |
| 	{"LoadScrap", (PyCFunction)Scrap_LoadScrap, 1,
 | |
| 	 "() -> None"},
 | |
| 	{"UnloadScrap", (PyCFunction)Scrap_UnloadScrap, 1,
 | |
| 	 "() -> None"},
 | |
| 
 | |
| #if !TARGET_API_MAC_CARBON
 | |
| 	{"InfoScrap", (PyCFunction)Scrap_InfoScrap, 1,
 | |
| 	 "() -> (ScrapStuffPtr _rv)"},
 | |
| #endif
 | |
| 
 | |
| #if !TARGET_API_MAC_CARBON
 | |
| 	{"GetScrap", (PyCFunction)Scrap_GetScrap, 1,
 | |
| 	 "(Handle destination, ScrapFlavorType flavorType) -> (long _rv, SInt32 offset)"},
 | |
| #endif
 | |
| 
 | |
| #if !TARGET_API_MAC_CARBON
 | |
| 	{"ZeroScrap", (PyCFunction)Scrap_ZeroScrap, 1,
 | |
| 	 "() -> None"},
 | |
| #endif
 | |
| 
 | |
| #if !TARGET_API_MAC_CARBON
 | |
| 	{"PutScrap", (PyCFunction)Scrap_PutScrap, 1,
 | |
| 	 "(SInt32 sourceBufferByteCount, ScrapFlavorType flavorType, Buffer sourceBuffer) -> None"},
 | |
| #endif
 | |
| 
 | |
| #if TARGET_API_MAC_CARBON
 | |
| 	{"ClearCurrentScrap", (PyCFunction)Scrap_ClearCurrentScrap, 1,
 | |
| 	 "() -> None"},
 | |
| #endif
 | |
| 
 | |
| #if TARGET_API_MAC_CARBON
 | |
| 	{"CallInScrapPromises", (PyCFunction)Scrap_CallInScrapPromises, 1,
 | |
| 	 "() -> None"},
 | |
| #endif
 | |
| 	{NULL, NULL, 0}
 | |
| };
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| void initScrap()
 | |
| {
 | |
| 	PyObject *m;
 | |
| 	PyObject *d;
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	m = Py_InitModule("Scrap", Scrap_methods);
 | |
| 	d = PyModule_GetDict(m);
 | |
| 	Scrap_Error = PyMac_GetOSErrException();
 | |
| 	if (Scrap_Error == NULL ||
 | |
| 	    PyDict_SetItemString(d, "Error", Scrap_Error) != 0)
 | |
| 		return;
 | |
| }
 | |
| 
 | |
| /* ======================== End module Scrap ======================== */
 | |
| 
 | 
