ยปCore Development>Code coverage>Mac/Modules/list/_Listmodule.c

Python code coverage for Mac/Modules/list/_Listmodule.c

#countcontent
1n/a
2n/a/* ========================== Module _List ========================== */
3n/a
4n/a#include "Python.h"
5n/a
6n/a#ifndef __LP64__
7n/a
8n/a
9n/a#include "pymactoolbox.h"
10n/a
11n/a/* Macro to test whether a weak-loaded CFM function exists */
12n/a#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
13n/a PyErr_SetString(PyExc_NotImplementedError, \
14n/a "Not available in this shared library/OS version"); \
15n/a return NULL; \
16n/a }} while(0)
17n/a
18n/a
19n/a#include <Carbon/Carbon.h>
20n/a
21n/a#ifdef USE_TOOLBOX_OBJECT_GLUE
22n/aextern PyObject *_ListObj_New(ListHandle);
23n/aextern int _ListObj_Convert(PyObject *, ListHandle *);
24n/a
25n/a#define ListObj_New _ListObj_New
26n/a#define ListObj_Convert _ListObj_Convert
27n/a#endif
28n/a
29n/a#define as_List(x) ((ListHandle)x)
30n/a#define as_Resource(lh) ((Handle)lh)
31n/a
32n/astatic ListDefUPP myListDefFunctionUPP;
33n/a
34n/a
35n/astatic PyObject *List_Error;
36n/a
37n/a/* ------------------------ Object type List ------------------------ */
38n/a
39n/aPyTypeObject List_Type;
40n/a
41n/a#define ListObj_Check(x) ((x)->ob_type == &List_Type || PyObject_TypeCheck((x), &List_Type))
42n/a
43n/atypedef struct ListObject {
44n/a PyObject_HEAD
45n/a ListHandle ob_itself;
46n/a PyObject *ob_ldef_func;
47n/a int ob_must_be_disposed;
48n/a} ListObject;
49n/a
50n/aPyObject *ListObj_New(ListHandle itself)
51n/a{
52n/a ListObject *it;
53n/a if (itself == NULL) {
54n/a PyErr_SetString(List_Error,"Cannot create null List");
55n/a return NULL;
56n/a }
57n/a it = PyObject_NEW(ListObject, &List_Type);
58n/a if (it == NULL) return NULL;
59n/a it->ob_itself = itself;
60n/a it->ob_ldef_func = NULL;
61n/a it->ob_must_be_disposed = 1;
62n/a SetListRefCon(itself, (long)it);
63n/a return (PyObject *)it;
64n/a}
65n/a
66n/aint ListObj_Convert(PyObject *v, ListHandle *p_itself)
67n/a{
68n/a if (!ListObj_Check(v))
69n/a {
70n/a PyErr_SetString(PyExc_TypeError, "List required");
71n/a return 0;
72n/a }
73n/a *p_itself = ((ListObject *)v)->ob_itself;
74n/a return 1;
75n/a}
76n/a
77n/astatic void ListObj_dealloc(ListObject *self)
78n/a{
79n/a Py_XDECREF(self->ob_ldef_func);
80n/a self->ob_ldef_func = NULL;
81n/a SetListRefCon(self->ob_itself, (long)0);
82n/a if (self->ob_must_be_disposed && self->ob_itself) LDispose(self->ob_itself);
83n/a self->ob_type->tp_free((PyObject *)self);
84n/a}
85n/a
86n/astatic PyObject *ListObj_LAddColumn(ListObject *_self, PyObject *_args)
87n/a{
88n/a PyObject *_res = NULL;
89n/a short _rv;
90n/a short count;
91n/a short colNum;
92n/a if (!PyArg_ParseTuple(_args, "hh",
93n/a &count,
94n/a &colNum))
95n/a return NULL;
96n/a _rv = LAddColumn(count,
97n/a colNum,
98n/a _self->ob_itself);
99n/a _res = Py_BuildValue("h",
100n/a _rv);
101n/a return _res;
102n/a}
103n/a
104n/astatic PyObject *ListObj_LAddRow(ListObject *_self, PyObject *_args)
105n/a{
106n/a PyObject *_res = NULL;
107n/a short _rv;
108n/a short count;
109n/a short rowNum;
110n/a if (!PyArg_ParseTuple(_args, "hh",
111n/a &count,
112n/a &rowNum))
113n/a return NULL;
114n/a _rv = LAddRow(count,
115n/a rowNum,
116n/a _self->ob_itself);
117n/a _res = Py_BuildValue("h",
118n/a _rv);
119n/a return _res;
120n/a}
121n/a
122n/astatic PyObject *ListObj_LDelColumn(ListObject *_self, PyObject *_args)
123n/a{
124n/a PyObject *_res = NULL;
125n/a short count;
126n/a short colNum;
127n/a if (!PyArg_ParseTuple(_args, "hh",
128n/a &count,
129n/a &colNum))
130n/a return NULL;
131n/a LDelColumn(count,
132n/a colNum,
133n/a _self->ob_itself);
134n/a Py_INCREF(Py_None);
135n/a _res = Py_None;
136n/a return _res;
137n/a}
138n/a
139n/astatic PyObject *ListObj_LDelRow(ListObject *_self, PyObject *_args)
140n/a{
141n/a PyObject *_res = NULL;
142n/a short count;
143n/a short rowNum;
144n/a if (!PyArg_ParseTuple(_args, "hh",
145n/a &count,
146n/a &rowNum))
147n/a return NULL;
148n/a LDelRow(count,
149n/a rowNum,
150n/a _self->ob_itself);
151n/a Py_INCREF(Py_None);
152n/a _res = Py_None;
153n/a return _res;
154n/a}
155n/a
156n/astatic PyObject *ListObj_LGetSelect(ListObject *_self, PyObject *_args)
157n/a{
158n/a PyObject *_res = NULL;
159n/a Boolean _rv;
160n/a Boolean next;
161n/a Point theCell;
162n/a if (!PyArg_ParseTuple(_args, "bO&",
163n/a &next,
164n/a PyMac_GetPoint, &theCell))
165n/a return NULL;
166n/a _rv = LGetSelect(next,
167n/a &theCell,
168n/a _self->ob_itself);
169n/a _res = Py_BuildValue("bO&",
170n/a _rv,
171n/a PyMac_BuildPoint, theCell);
172n/a return _res;
173n/a}
174n/a
175n/astatic PyObject *ListObj_LLastClick(ListObject *_self, PyObject *_args)
176n/a{
177n/a PyObject *_res = NULL;
178n/a Point _rv;
179n/a if (!PyArg_ParseTuple(_args, ""))
180n/a return NULL;
181n/a _rv = LLastClick(_self->ob_itself);
182n/a _res = Py_BuildValue("O&",
183n/a PyMac_BuildPoint, _rv);
184n/a return _res;
185n/a}
186n/a
187n/astatic PyObject *ListObj_LNextCell(ListObject *_self, PyObject *_args)
188n/a{
189n/a PyObject *_res = NULL;
190n/a Boolean _rv;
191n/a Boolean hNext;
192n/a Boolean vNext;
193n/a Point theCell;
194n/a if (!PyArg_ParseTuple(_args, "bbO&",
195n/a &hNext,
196n/a &vNext,
197n/a PyMac_GetPoint, &theCell))
198n/a return NULL;
199n/a _rv = LNextCell(hNext,
200n/a vNext,
201n/a &theCell,
202n/a _self->ob_itself);
203n/a _res = Py_BuildValue("bO&",
204n/a _rv,
205n/a PyMac_BuildPoint, theCell);
206n/a return _res;
207n/a}
208n/a
209n/astatic PyObject *ListObj_LSize(ListObject *_self, PyObject *_args)
210n/a{
211n/a PyObject *_res = NULL;
212n/a short listWidth;
213n/a short listHeight;
214n/a if (!PyArg_ParseTuple(_args, "hh",
215n/a &listWidth,
216n/a &listHeight))
217n/a return NULL;
218n/a LSize(listWidth,
219n/a listHeight,
220n/a _self->ob_itself);
221n/a Py_INCREF(Py_None);
222n/a _res = Py_None;
223n/a return _res;
224n/a}
225n/a
226n/astatic PyObject *ListObj_LSetDrawingMode(ListObject *_self, PyObject *_args)
227n/a{
228n/a PyObject *_res = NULL;
229n/a Boolean drawIt;
230n/a if (!PyArg_ParseTuple(_args, "b",
231n/a &drawIt))
232n/a return NULL;
233n/a LSetDrawingMode(drawIt,
234n/a _self->ob_itself);
235n/a Py_INCREF(Py_None);
236n/a _res = Py_None;
237n/a return _res;
238n/a}
239n/a
240n/astatic PyObject *ListObj_LScroll(ListObject *_self, PyObject *_args)
241n/a{
242n/a PyObject *_res = NULL;
243n/a short dCols;
244n/a short dRows;
245n/a if (!PyArg_ParseTuple(_args, "hh",
246n/a &dCols,
247n/a &dRows))
248n/a return NULL;
249n/a LScroll(dCols,
250n/a dRows,
251n/a _self->ob_itself);
252n/a Py_INCREF(Py_None);
253n/a _res = Py_None;
254n/a return _res;
255n/a}
256n/a
257n/astatic PyObject *ListObj_LAutoScroll(ListObject *_self, PyObject *_args)
258n/a{
259n/a PyObject *_res = NULL;
260n/a if (!PyArg_ParseTuple(_args, ""))
261n/a return NULL;
262n/a LAutoScroll(_self->ob_itself);
263n/a Py_INCREF(Py_None);
264n/a _res = Py_None;
265n/a return _res;
266n/a}
267n/a
268n/astatic PyObject *ListObj_LUpdate(ListObject *_self, PyObject *_args)
269n/a{
270n/a PyObject *_res = NULL;
271n/a RgnHandle theRgn;
272n/a if (!PyArg_ParseTuple(_args, "O&",
273n/a ResObj_Convert, &theRgn))
274n/a return NULL;
275n/a LUpdate(theRgn,
276n/a _self->ob_itself);
277n/a Py_INCREF(Py_None);
278n/a _res = Py_None;
279n/a return _res;
280n/a}
281n/a
282n/astatic PyObject *ListObj_LActivate(ListObject *_self, PyObject *_args)
283n/a{
284n/a PyObject *_res = NULL;
285n/a Boolean act;
286n/a if (!PyArg_ParseTuple(_args, "b",
287n/a &act))
288n/a return NULL;
289n/a LActivate(act,
290n/a _self->ob_itself);
291n/a Py_INCREF(Py_None);
292n/a _res = Py_None;
293n/a return _res;
294n/a}
295n/a
296n/astatic PyObject *ListObj_LCellSize(ListObject *_self, PyObject *_args)
297n/a{
298n/a PyObject *_res = NULL;
299n/a Point cSize;
300n/a if (!PyArg_ParseTuple(_args, "O&",
301n/a PyMac_GetPoint, &cSize))
302n/a return NULL;
303n/a LCellSize(cSize,
304n/a _self->ob_itself);
305n/a Py_INCREF(Py_None);
306n/a _res = Py_None;
307n/a return _res;
308n/a}
309n/a
310n/astatic PyObject *ListObj_LClick(ListObject *_self, PyObject *_args)
311n/a{
312n/a PyObject *_res = NULL;
313n/a Boolean _rv;
314n/a Point pt;
315n/a EventModifiers modifiers;
316n/a if (!PyArg_ParseTuple(_args, "O&H",
317n/a PyMac_GetPoint, &pt,
318n/a &modifiers))
319n/a return NULL;
320n/a _rv = LClick(pt,
321n/a modifiers,
322n/a _self->ob_itself);
323n/a _res = Py_BuildValue("b",
324n/a _rv);
325n/a return _res;
326n/a}
327n/a
328n/astatic PyObject *ListObj_LAddToCell(ListObject *_self, PyObject *_args)
329n/a{
330n/a PyObject *_res = NULL;
331n/a char *dataPtr__in__;
332n/a short dataPtr__len__;
333n/a int dataPtr__in_len__;
334n/a Point theCell;
335n/a if (!PyArg_ParseTuple(_args, "s#O&",
336n/a &dataPtr__in__, &dataPtr__in_len__,
337n/a PyMac_GetPoint, &theCell))
338n/a return NULL;
339n/a dataPtr__len__ = dataPtr__in_len__;
340n/a LAddToCell(dataPtr__in__, dataPtr__len__,
341n/a theCell,
342n/a _self->ob_itself);
343n/a Py_INCREF(Py_None);
344n/a _res = Py_None;
345n/a return _res;
346n/a}
347n/a
348n/astatic PyObject *ListObj_LClrCell(ListObject *_self, PyObject *_args)
349n/a{
350n/a PyObject *_res = NULL;
351n/a Point theCell;
352n/a if (!PyArg_ParseTuple(_args, "O&",
353n/a PyMac_GetPoint, &theCell))
354n/a return NULL;
355n/a LClrCell(theCell,
356n/a _self->ob_itself);
357n/a Py_INCREF(Py_None);
358n/a _res = Py_None;
359n/a return _res;
360n/a}
361n/a
362n/astatic PyObject *ListObj_LGetCell(ListObject *_self, PyObject *_args)
363n/a{
364n/a PyObject *_res = NULL;
365n/a char *dataPtr__out__;
366n/a short dataPtr__len__;
367n/a int dataPtr__in_len__;
368n/a Point theCell;
369n/a if (!PyArg_ParseTuple(_args, "iO&",
370n/a &dataPtr__in_len__,
371n/a PyMac_GetPoint, &theCell))
372n/a return NULL;
373n/a if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
374n/a {
375n/a PyErr_NoMemory();
376n/a goto dataPtr__error__;
377n/a }
378n/a dataPtr__len__ = dataPtr__in_len__;
379n/a LGetCell(dataPtr__out__, &dataPtr__len__,
380n/a theCell,
381n/a _self->ob_itself);
382n/a _res = Py_BuildValue("s#",
383n/a dataPtr__out__, (int)dataPtr__len__);
384n/a free(dataPtr__out__);
385n/a dataPtr__error__: ;
386n/a return _res;
387n/a}
388n/a
389n/astatic PyObject *ListObj_LRect(ListObject *_self, PyObject *_args)
390n/a{
391n/a PyObject *_res = NULL;
392n/a Rect cellRect;
393n/a Point theCell;
394n/a if (!PyArg_ParseTuple(_args, "O&",
395n/a PyMac_GetPoint, &theCell))
396n/a return NULL;
397n/a LRect(&cellRect,
398n/a theCell,
399n/a _self->ob_itself);
400n/a _res = Py_BuildValue("O&",
401n/a PyMac_BuildRect, &cellRect);
402n/a return _res;
403n/a}
404n/a
405n/astatic PyObject *ListObj_LSetCell(ListObject *_self, PyObject *_args)
406n/a{
407n/a PyObject *_res = NULL;
408n/a char *dataPtr__in__;
409n/a short dataPtr__len__;
410n/a int dataPtr__in_len__;
411n/a Point theCell;
412n/a if (!PyArg_ParseTuple(_args, "s#O&",
413n/a &dataPtr__in__, &dataPtr__in_len__,
414n/a PyMac_GetPoint, &theCell))
415n/a return NULL;
416n/a dataPtr__len__ = dataPtr__in_len__;
417n/a LSetCell(dataPtr__in__, dataPtr__len__,
418n/a theCell,
419n/a _self->ob_itself);
420n/a Py_INCREF(Py_None);
421n/a _res = Py_None;
422n/a return _res;
423n/a}
424n/a
425n/astatic PyObject *ListObj_LSetSelect(ListObject *_self, PyObject *_args)
426n/a{
427n/a PyObject *_res = NULL;
428n/a Boolean setIt;
429n/a Point theCell;
430n/a if (!PyArg_ParseTuple(_args, "bO&",
431n/a &setIt,
432n/a PyMac_GetPoint, &theCell))
433n/a return NULL;
434n/a LSetSelect(setIt,
435n/a theCell,
436n/a _self->ob_itself);
437n/a Py_INCREF(Py_None);
438n/a _res = Py_None;
439n/a return _res;
440n/a}
441n/a
442n/astatic PyObject *ListObj_LDraw(ListObject *_self, PyObject *_args)
443n/a{
444n/a PyObject *_res = NULL;
445n/a Point theCell;
446n/a if (!PyArg_ParseTuple(_args, "O&",
447n/a PyMac_GetPoint, &theCell))
448n/a return NULL;
449n/a LDraw(theCell,
450n/a _self->ob_itself);
451n/a Py_INCREF(Py_None);
452n/a _res = Py_None;
453n/a return _res;
454n/a}
455n/a
456n/astatic PyObject *ListObj_LGetCellDataLocation(ListObject *_self, PyObject *_args)
457n/a{
458n/a PyObject *_res = NULL;
459n/a short offset;
460n/a short len;
461n/a Point theCell;
462n/a if (!PyArg_ParseTuple(_args, "O&",
463n/a PyMac_GetPoint, &theCell))
464n/a return NULL;
465n/a LGetCellDataLocation(&offset,
466n/a &len,
467n/a theCell,
468n/a _self->ob_itself);
469n/a _res = Py_BuildValue("hh",
470n/a offset,
471n/a len);
472n/a return _res;
473n/a}
474n/a
475n/astatic PyObject *ListObj_GetListPort(ListObject *_self, PyObject *_args)
476n/a{
477n/a PyObject *_res = NULL;
478n/a CGrafPtr _rv;
479n/a if (!PyArg_ParseTuple(_args, ""))
480n/a return NULL;
481n/a _rv = GetListPort(_self->ob_itself);
482n/a _res = Py_BuildValue("O&",
483n/a GrafObj_New, _rv);
484n/a return _res;
485n/a}
486n/a
487n/astatic PyObject *ListObj_GetListVerticalScrollBar(ListObject *_self, PyObject *_args)
488n/a{
489n/a PyObject *_res = NULL;
490n/a ControlHandle _rv;
491n/a if (!PyArg_ParseTuple(_args, ""))
492n/a return NULL;
493n/a _rv = GetListVerticalScrollBar(_self->ob_itself);
494n/a _res = Py_BuildValue("O&",
495n/a CtlObj_New, _rv);
496n/a return _res;
497n/a}
498n/a
499n/astatic PyObject *ListObj_GetListHorizontalScrollBar(ListObject *_self, PyObject *_args)
500n/a{
501n/a PyObject *_res = NULL;
502n/a ControlHandle _rv;
503n/a if (!PyArg_ParseTuple(_args, ""))
504n/a return NULL;
505n/a _rv = GetListHorizontalScrollBar(_self->ob_itself);
506n/a _res = Py_BuildValue("O&",
507n/a CtlObj_New, _rv);
508n/a return _res;
509n/a}
510n/a
511n/astatic PyObject *ListObj_GetListActive(ListObject *_self, PyObject *_args)
512n/a{
513n/a PyObject *_res = NULL;
514n/a Boolean _rv;
515n/a if (!PyArg_ParseTuple(_args, ""))
516n/a return NULL;
517n/a _rv = GetListActive(_self->ob_itself);
518n/a _res = Py_BuildValue("b",
519n/a _rv);
520n/a return _res;
521n/a}
522n/a
523n/astatic PyObject *ListObj_GetListClickTime(ListObject *_self, PyObject *_args)
524n/a{
525n/a PyObject *_res = NULL;
526n/a SInt32 _rv;
527n/a if (!PyArg_ParseTuple(_args, ""))
528n/a return NULL;
529n/a _rv = GetListClickTime(_self->ob_itself);
530n/a _res = Py_BuildValue("l",
531n/a _rv);
532n/a return _res;
533n/a}
534n/a
535n/astatic PyObject *ListObj_GetListRefCon(ListObject *_self, PyObject *_args)
536n/a{
537n/a PyObject *_res = NULL;
538n/a SInt32 _rv;
539n/a if (!PyArg_ParseTuple(_args, ""))
540n/a return NULL;
541n/a _rv = GetListRefCon(_self->ob_itself);
542n/a _res = Py_BuildValue("l",
543n/a _rv);
544n/a return _res;
545n/a}
546n/a
547n/astatic PyObject *ListObj_GetListDefinition(ListObject *_self, PyObject *_args)
548n/a{
549n/a PyObject *_res = NULL;
550n/a Handle _rv;
551n/a if (!PyArg_ParseTuple(_args, ""))
552n/a return NULL;
553n/a _rv = GetListDefinition(_self->ob_itself);
554n/a _res = Py_BuildValue("O&",
555n/a ResObj_New, _rv);
556n/a return _res;
557n/a}
558n/a
559n/astatic PyObject *ListObj_GetListUserHandle(ListObject *_self, PyObject *_args)
560n/a{
561n/a PyObject *_res = NULL;
562n/a Handle _rv;
563n/a if (!PyArg_ParseTuple(_args, ""))
564n/a return NULL;
565n/a _rv = GetListUserHandle(_self->ob_itself);
566n/a _res = Py_BuildValue("O&",
567n/a ResObj_New, _rv);
568n/a return _res;
569n/a}
570n/a
571n/astatic PyObject *ListObj_GetListDataHandle(ListObject *_self, PyObject *_args)
572n/a{
573n/a PyObject *_res = NULL;
574n/a DataHandle _rv;
575n/a if (!PyArg_ParseTuple(_args, ""))
576n/a return NULL;
577n/a _rv = GetListDataHandle(_self->ob_itself);
578n/a _res = Py_BuildValue("O&",
579n/a ResObj_New, _rv);
580n/a return _res;
581n/a}
582n/a
583n/astatic PyObject *ListObj_GetListFlags(ListObject *_self, PyObject *_args)
584n/a{
585n/a PyObject *_res = NULL;
586n/a OptionBits _rv;
587n/a if (!PyArg_ParseTuple(_args, ""))
588n/a return NULL;
589n/a _rv = GetListFlags(_self->ob_itself);
590n/a _res = Py_BuildValue("l",
591n/a _rv);
592n/a return _res;
593n/a}
594n/a
595n/astatic PyObject *ListObj_GetListSelectionFlags(ListObject *_self, PyObject *_args)
596n/a{
597n/a PyObject *_res = NULL;
598n/a OptionBits _rv;
599n/a if (!PyArg_ParseTuple(_args, ""))
600n/a return NULL;
601n/a _rv = GetListSelectionFlags(_self->ob_itself);
602n/a _res = Py_BuildValue("l",
603n/a _rv);
604n/a return _res;
605n/a}
606n/a
607n/astatic PyObject *ListObj_as_Resource(ListObject *_self, PyObject *_args)
608n/a{
609n/a PyObject *_res = NULL;
610n/a Handle _rv;
611n/a if (!PyArg_ParseTuple(_args, ""))
612n/a return NULL;
613n/a _rv = as_Resource(_self->ob_itself);
614n/a _res = Py_BuildValue("O&",
615n/a ResObj_New, _rv);
616n/a return _res;
617n/a}
618n/a
619n/astatic PyMethodDef ListObj_methods[] = {
620n/a {"LAddColumn", (PyCFunction)ListObj_LAddColumn, 1,
621n/a PyDoc_STR("(short count, short colNum) -> (short _rv)")},
622n/a {"LAddRow", (PyCFunction)ListObj_LAddRow, 1,
623n/a PyDoc_STR("(short count, short rowNum) -> (short _rv)")},
624n/a {"LDelColumn", (PyCFunction)ListObj_LDelColumn, 1,
625n/a PyDoc_STR("(short count, short colNum) -> None")},
626n/a {"LDelRow", (PyCFunction)ListObj_LDelRow, 1,
627n/a PyDoc_STR("(short count, short rowNum) -> None")},
628n/a {"LGetSelect", (PyCFunction)ListObj_LGetSelect, 1,
629n/a PyDoc_STR("(Boolean next, Point theCell) -> (Boolean _rv, Point theCell)")},
630n/a {"LLastClick", (PyCFunction)ListObj_LLastClick, 1,
631n/a PyDoc_STR("() -> (Point _rv)")},
632n/a {"LNextCell", (PyCFunction)ListObj_LNextCell, 1,
633n/a PyDoc_STR("(Boolean hNext, Boolean vNext, Point theCell) -> (Boolean _rv, Point theCell)")},
634n/a {"LSize", (PyCFunction)ListObj_LSize, 1,
635n/a PyDoc_STR("(short listWidth, short listHeight) -> None")},
636n/a {"LSetDrawingMode", (PyCFunction)ListObj_LSetDrawingMode, 1,
637n/a PyDoc_STR("(Boolean drawIt) -> None")},
638n/a {"LScroll", (PyCFunction)ListObj_LScroll, 1,
639n/a PyDoc_STR("(short dCols, short dRows) -> None")},
640n/a {"LAutoScroll", (PyCFunction)ListObj_LAutoScroll, 1,
641n/a PyDoc_STR("() -> None")},
642n/a {"LUpdate", (PyCFunction)ListObj_LUpdate, 1,
643n/a PyDoc_STR("(RgnHandle theRgn) -> None")},
644n/a {"LActivate", (PyCFunction)ListObj_LActivate, 1,
645n/a PyDoc_STR("(Boolean act) -> None")},
646n/a {"LCellSize", (PyCFunction)ListObj_LCellSize, 1,
647n/a PyDoc_STR("(Point cSize) -> None")},
648n/a {"LClick", (PyCFunction)ListObj_LClick, 1,
649n/a PyDoc_STR("(Point pt, EventModifiers modifiers) -> (Boolean _rv)")},
650n/a {"LAddToCell", (PyCFunction)ListObj_LAddToCell, 1,
651n/a PyDoc_STR("(Buffer dataPtr, Point theCell) -> None")},
652n/a {"LClrCell", (PyCFunction)ListObj_LClrCell, 1,
653n/a PyDoc_STR("(Point theCell) -> None")},
654n/a {"LGetCell", (PyCFunction)ListObj_LGetCell, 1,
655n/a PyDoc_STR("(Buffer dataPtr, Point theCell) -> (Buffer dataPtr)")},
656n/a {"LRect", (PyCFunction)ListObj_LRect, 1,
657n/a PyDoc_STR("(Point theCell) -> (Rect cellRect)")},
658n/a {"LSetCell", (PyCFunction)ListObj_LSetCell, 1,
659n/a PyDoc_STR("(Buffer dataPtr, Point theCell) -> None")},
660n/a {"LSetSelect", (PyCFunction)ListObj_LSetSelect, 1,
661n/a PyDoc_STR("(Boolean setIt, Point theCell) -> None")},
662n/a {"LDraw", (PyCFunction)ListObj_LDraw, 1,
663n/a PyDoc_STR("(Point theCell) -> None")},
664n/a {"LGetCellDataLocation", (PyCFunction)ListObj_LGetCellDataLocation, 1,
665n/a PyDoc_STR("(Point theCell) -> (short offset, short len)")},
666n/a {"GetListPort", (PyCFunction)ListObj_GetListPort, 1,
667n/a PyDoc_STR("() -> (CGrafPtr _rv)")},
668n/a {"GetListVerticalScrollBar", (PyCFunction)ListObj_GetListVerticalScrollBar, 1,
669n/a PyDoc_STR("() -> (ControlHandle _rv)")},
670n/a {"GetListHorizontalScrollBar", (PyCFunction)ListObj_GetListHorizontalScrollBar, 1,
671n/a PyDoc_STR("() -> (ControlHandle _rv)")},
672n/a {"GetListActive", (PyCFunction)ListObj_GetListActive, 1,
673n/a PyDoc_STR("() -> (Boolean _rv)")},
674n/a {"GetListClickTime", (PyCFunction)ListObj_GetListClickTime, 1,
675n/a PyDoc_STR("() -> (SInt32 _rv)")},
676n/a {"GetListRefCon", (PyCFunction)ListObj_GetListRefCon, 1,
677n/a PyDoc_STR("() -> (SInt32 _rv)")},
678n/a {"GetListDefinition", (PyCFunction)ListObj_GetListDefinition, 1,
679n/a PyDoc_STR("() -> (Handle _rv)")},
680n/a {"GetListUserHandle", (PyCFunction)ListObj_GetListUserHandle, 1,
681n/a PyDoc_STR("() -> (Handle _rv)")},
682n/a {"GetListDataHandle", (PyCFunction)ListObj_GetListDataHandle, 1,
683n/a PyDoc_STR("() -> (DataHandle _rv)")},
684n/a {"GetListFlags", (PyCFunction)ListObj_GetListFlags, 1,
685n/a PyDoc_STR("() -> (OptionBits _rv)")},
686n/a {"GetListSelectionFlags", (PyCFunction)ListObj_GetListSelectionFlags, 1,
687n/a PyDoc_STR("() -> (OptionBits _rv)")},
688n/a {"as_Resource", (PyCFunction)ListObj_as_Resource, 1,
689n/a PyDoc_STR("() -> (Handle _rv)")},
690n/a {NULL, NULL, 0}
691n/a};
692n/a
693n/astatic PyObject *ListObj_get_listFlags(ListObject *self, void *closure)
694n/a{
695n/a return Py_BuildValue("l", (long)GetListFlags(self->ob_itself) & 0xff);
696n/a}
697n/a
698n/astatic int ListObj_set_listFlags(ListObject *self, PyObject *v, void *closure)
699n/a{
700n/a if (!PyArg_Parse(v, "B", &(*self->ob_itself)->listFlags)) return -1;
701n/a return 0;
702n/a}
703n/a
704n/astatic PyObject *ListObj_get_selFlags(ListObject *self, void *closure)
705n/a{
706n/a return Py_BuildValue("l", (long)GetListSelectionFlags(self->ob_itself) & 0xff);
707n/a}
708n/a
709n/astatic int ListObj_set_selFlags(ListObject *self, PyObject *v, void *closure)
710n/a{
711n/a if (!PyArg_Parse(v, "B", &(*self->ob_itself)->selFlags)) return -1;
712n/a return 0;
713n/a}
714n/a
715n/astatic PyObject *ListObj_get_cellSize(ListObject *self, void *closure)
716n/a{
717n/a return Py_BuildValue("O&", PyMac_BuildPoint, (*self->ob_itself)->cellSize);
718n/a}
719n/a
720n/astatic int ListObj_set_cellSize(ListObject *self, PyObject *v, void *closure)
721n/a{
722n/a if (!PyArg_Parse(v, "O&", PyMac_GetPoint, &(*self->ob_itself)->cellSize)) return -1;
723n/a return 0;
724n/a}
725n/a
726n/astatic PyGetSetDef ListObj_getsetlist[] = {
727n/a {"listFlags", (getter)ListObj_get_listFlags, (setter)ListObj_set_listFlags, NULL},
728n/a {"selFlags", (getter)ListObj_get_selFlags, (setter)ListObj_set_selFlags, NULL},
729n/a {"cellSize", (getter)ListObj_get_cellSize, (setter)ListObj_set_cellSize, NULL},
730n/a {NULL, NULL, NULL, NULL},
731n/a};
732n/a
733n/a
734n/a#define ListObj_compare NULL
735n/a
736n/a#define ListObj_repr NULL
737n/a
738n/a#define ListObj_hash NULL
739n/a#define ListObj_tp_init 0
740n/a
741n/a#define ListObj_tp_alloc PyType_GenericAlloc
742n/a
743n/astatic PyObject *ListObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
744n/a{
745n/a PyObject *_self;
746n/a ListHandle itself;
747n/a char *kw[] = {"itself", 0};
748n/a
749n/a if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, ListObj_Convert, &itself)) return NULL;
750n/a if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
751n/a ((ListObject *)_self)->ob_itself = itself;
752n/a return _self;
753n/a}
754n/a
755n/a#define ListObj_tp_free PyObject_Del
756n/a
757n/a
758n/aPyTypeObject List_Type = {
759n/a PyObject_HEAD_INIT(NULL)
760n/a 0, /*ob_size*/
761n/a "_List.List", /*tp_name*/
762n/a sizeof(ListObject), /*tp_basicsize*/
763n/a 0, /*tp_itemsize*/
764n/a /* methods */
765n/a (destructor) ListObj_dealloc, /*tp_dealloc*/
766n/a 0, /*tp_print*/
767n/a (getattrfunc)0, /*tp_getattr*/
768n/a (setattrfunc)0, /*tp_setattr*/
769n/a (cmpfunc) ListObj_compare, /*tp_compare*/
770n/a (reprfunc) ListObj_repr, /*tp_repr*/
771n/a (PyNumberMethods *)0, /* tp_as_number */
772n/a (PySequenceMethods *)0, /* tp_as_sequence */
773n/a (PyMappingMethods *)0, /* tp_as_mapping */
774n/a (hashfunc) ListObj_hash, /*tp_hash*/
775n/a 0, /*tp_call*/
776n/a 0, /*tp_str*/
777n/a PyObject_GenericGetAttr, /*tp_getattro*/
778n/a PyObject_GenericSetAttr, /*tp_setattro */
779n/a 0, /*tp_as_buffer*/
780n/a Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
781n/a 0, /*tp_doc*/
782n/a 0, /*tp_traverse*/
783n/a 0, /*tp_clear*/
784n/a 0, /*tp_richcompare*/
785n/a 0, /*tp_weaklistoffset*/
786n/a 0, /*tp_iter*/
787n/a 0, /*tp_iternext*/
788n/a ListObj_methods, /* tp_methods */
789n/a 0, /*tp_members*/
790n/a ListObj_getsetlist, /*tp_getset*/
791n/a 0, /*tp_base*/
792n/a 0, /*tp_dict*/
793n/a 0, /*tp_descr_get*/
794n/a 0, /*tp_descr_set*/
795n/a 0, /*tp_dictoffset*/
796n/a ListObj_tp_init, /* tp_init */
797n/a ListObj_tp_alloc, /* tp_alloc */
798n/a ListObj_tp_new, /* tp_new */
799n/a ListObj_tp_free, /* tp_free */
800n/a};
801n/a
802n/a/* ---------------------- End object type List ---------------------- */
803n/a
804n/a
805n/astatic PyObject *List_CreateCustomList(PyObject *_self, PyObject *_args)
806n/a{
807n/a PyObject *_res = NULL;
808n/a Rect rView;
809n/a Rect dataBounds;
810n/a Point cellSize;
811n/a
812n/a PyObject *listDefFunc;
813n/a ListDefSpec theSpec;
814n/a WindowPtr theWindow;
815n/a Boolean drawIt;
816n/a Boolean hasGrow;
817n/a Boolean scrollHoriz;
818n/a Boolean scrollVert;
819n/a ListHandle outList;
820n/a
821n/a if (!PyArg_ParseTuple(_args, "O&O&O&(iO)O&bbbb",
822n/a PyMac_GetRect, &rView,
823n/a PyMac_GetRect, &dataBounds,
824n/a PyMac_GetPoint, &cellSize,
825n/a &theSpec.defType, &listDefFunc,
826n/a WinObj_Convert, &theWindow,
827n/a &drawIt,
828n/a &hasGrow,
829n/a &scrollHoriz,
830n/a &scrollVert))
831n/a return NULL;
832n/a
833n/a
834n/a /* Carbon applications use the CreateCustomList API */
835n/a theSpec.u.userProc = myListDefFunctionUPP;
836n/a CreateCustomList(&rView,
837n/a &dataBounds,
838n/a cellSize,
839n/a &theSpec,
840n/a theWindow,
841n/a drawIt,
842n/a hasGrow,
843n/a scrollHoriz,
844n/a scrollVert,
845n/a &outList);
846n/a
847n/a
848n/a _res = ListObj_New(outList);
849n/a if (_res == NULL)
850n/a return NULL;
851n/a Py_INCREF(listDefFunc);
852n/a ((ListObject*)_res)->ob_ldef_func = listDefFunc;
853n/a return _res;
854n/a}
855n/a
856n/astatic PyObject *List_LNew(PyObject *_self, PyObject *_args)
857n/a{
858n/a PyObject *_res = NULL;
859n/a ListHandle _rv;
860n/a Rect rView;
861n/a Rect dataBounds;
862n/a Point cSize;
863n/a short theProc;
864n/a WindowPtr theWindow;
865n/a Boolean drawIt;
866n/a Boolean hasGrow;
867n/a Boolean scrollHoriz;
868n/a Boolean scrollVert;
869n/a if (!PyArg_ParseTuple(_args, "O&O&O&hO&bbbb",
870n/a PyMac_GetRect, &rView,
871n/a PyMac_GetRect, &dataBounds,
872n/a PyMac_GetPoint, &cSize,
873n/a &theProc,
874n/a WinObj_Convert, &theWindow,
875n/a &drawIt,
876n/a &hasGrow,
877n/a &scrollHoriz,
878n/a &scrollVert))
879n/a return NULL;
880n/a _rv = LNew(&rView,
881n/a &dataBounds,
882n/a cSize,
883n/a theProc,
884n/a theWindow,
885n/a drawIt,
886n/a hasGrow,
887n/a scrollHoriz,
888n/a scrollVert);
889n/a _res = Py_BuildValue("O&",
890n/a ListObj_New, _rv);
891n/a return _res;
892n/a}
893n/a
894n/astatic PyObject *List_SetListViewBounds(PyObject *_self, PyObject *_args)
895n/a{
896n/a PyObject *_res = NULL;
897n/a ListHandle list;
898n/a Rect view;
899n/a if (!PyArg_ParseTuple(_args, "O&O&",
900n/a ListObj_Convert, &list,
901n/a PyMac_GetRect, &view))
902n/a return NULL;
903n/a SetListViewBounds(list,
904n/a &view);
905n/a Py_INCREF(Py_None);
906n/a _res = Py_None;
907n/a return _res;
908n/a}
909n/a
910n/astatic PyObject *List_SetListPort(PyObject *_self, PyObject *_args)
911n/a{
912n/a PyObject *_res = NULL;
913n/a ListHandle list;
914n/a CGrafPtr port;
915n/a if (!PyArg_ParseTuple(_args, "O&O&",
916n/a ListObj_Convert, &list,
917n/a GrafObj_Convert, &port))
918n/a return NULL;
919n/a SetListPort(list,
920n/a port);
921n/a Py_INCREF(Py_None);
922n/a _res = Py_None;
923n/a return _res;
924n/a}
925n/a
926n/astatic PyObject *List_SetListCellIndent(PyObject *_self, PyObject *_args)
927n/a{
928n/a PyObject *_res = NULL;
929n/a ListHandle list;
930n/a Point indent;
931n/a if (!PyArg_ParseTuple(_args, "O&O&",
932n/a ListObj_Convert, &list,
933n/a PyMac_GetPoint, &indent))
934n/a return NULL;
935n/a SetListCellIndent(list,
936n/a &indent);
937n/a Py_INCREF(Py_None);
938n/a _res = Py_None;
939n/a return _res;
940n/a}
941n/a
942n/astatic PyObject *List_SetListClickTime(PyObject *_self, PyObject *_args)
943n/a{
944n/a PyObject *_res = NULL;
945n/a ListHandle list;
946n/a SInt32 time;
947n/a if (!PyArg_ParseTuple(_args, "O&l",
948n/a ListObj_Convert, &list,
949n/a &time))
950n/a return NULL;
951n/a SetListClickTime(list,
952n/a time);
953n/a Py_INCREF(Py_None);
954n/a _res = Py_None;
955n/a return _res;
956n/a}
957n/a
958n/astatic PyObject *List_SetListRefCon(PyObject *_self, PyObject *_args)
959n/a{
960n/a PyObject *_res = NULL;
961n/a ListHandle list;
962n/a SInt32 refCon;
963n/a if (!PyArg_ParseTuple(_args, "O&l",
964n/a ListObj_Convert, &list,
965n/a &refCon))
966n/a return NULL;
967n/a SetListRefCon(list,
968n/a refCon);
969n/a Py_INCREF(Py_None);
970n/a _res = Py_None;
971n/a return _res;
972n/a}
973n/a
974n/astatic PyObject *List_SetListUserHandle(PyObject *_self, PyObject *_args)
975n/a{
976n/a PyObject *_res = NULL;
977n/a ListHandle list;
978n/a Handle userHandle;
979n/a if (!PyArg_ParseTuple(_args, "O&O&",
980n/a ListObj_Convert, &list,
981n/a ResObj_Convert, &userHandle))
982n/a return NULL;
983n/a SetListUserHandle(list,
984n/a userHandle);
985n/a Py_INCREF(Py_None);
986n/a _res = Py_None;
987n/a return _res;
988n/a}
989n/a
990n/astatic PyObject *List_SetListFlags(PyObject *_self, PyObject *_args)
991n/a{
992n/a PyObject *_res = NULL;
993n/a ListHandle list;
994n/a OptionBits listFlags;
995n/a if (!PyArg_ParseTuple(_args, "O&l",
996n/a ListObj_Convert, &list,
997n/a &listFlags))
998n/a return NULL;
999n/a SetListFlags(list,
1000n/a listFlags);
1001n/a Py_INCREF(Py_None);
1002n/a _res = Py_None;
1003n/a return _res;
1004n/a}
1005n/a
1006n/astatic PyObject *List_SetListSelectionFlags(PyObject *_self, PyObject *_args)
1007n/a{
1008n/a PyObject *_res = NULL;
1009n/a ListHandle list;
1010n/a OptionBits selectionFlags;
1011n/a if (!PyArg_ParseTuple(_args, "O&l",
1012n/a ListObj_Convert, &list,
1013n/a &selectionFlags))
1014n/a return NULL;
1015n/a SetListSelectionFlags(list,
1016n/a selectionFlags);
1017n/a Py_INCREF(Py_None);
1018n/a _res = Py_None;
1019n/a return _res;
1020n/a}
1021n/a
1022n/astatic PyObject *List_as_List(PyObject *_self, PyObject *_args)
1023n/a{
1024n/a PyObject *_res = NULL;
1025n/a
1026n/a Handle h;
1027n/a ListObject *l;
1028n/a if (!PyArg_ParseTuple(_args, "O&", ResObj_Convert, &h))
1029n/a return NULL;
1030n/a l = (ListObject *)ListObj_New(as_List(h));
1031n/a l->ob_must_be_disposed = 0;
1032n/a _res = Py_BuildValue("O", l);
1033n/a return _res;
1034n/a
1035n/a}
1036n/a#endif /* __LP64__ */
1037n/a
1038n/astatic PyMethodDef List_methods[] = {
1039n/a#ifndef __LP64__
1040n/a {"CreateCustomList", (PyCFunction)List_CreateCustomList, 1,
1041n/a PyDoc_STR("(Rect rView, Rect dataBounds, Point cellSize, ListDefSpec theSpec, WindowPtr theWindow, Boolean drawIt, Boolean hasGrow, Boolean scrollHoriz, Boolean scrollVert) -> (ListHandle outList)")},
1042n/a {"LNew", (PyCFunction)List_LNew, 1,
1043n/a PyDoc_STR("(Rect rView, Rect dataBounds, Point cSize, short theProc, WindowPtr theWindow, Boolean drawIt, Boolean hasGrow, Boolean scrollHoriz, Boolean scrollVert) -> (ListHandle _rv)")},
1044n/a {"SetListViewBounds", (PyCFunction)List_SetListViewBounds, 1,
1045n/a PyDoc_STR("(ListHandle list, Rect view) -> None")},
1046n/a {"SetListPort", (PyCFunction)List_SetListPort, 1,
1047n/a PyDoc_STR("(ListHandle list, CGrafPtr port) -> None")},
1048n/a {"SetListCellIndent", (PyCFunction)List_SetListCellIndent, 1,
1049n/a PyDoc_STR("(ListHandle list, Point indent) -> None")},
1050n/a {"SetListClickTime", (PyCFunction)List_SetListClickTime, 1,
1051n/a PyDoc_STR("(ListHandle list, SInt32 time) -> None")},
1052n/a {"SetListRefCon", (PyCFunction)List_SetListRefCon, 1,
1053n/a PyDoc_STR("(ListHandle list, SInt32 refCon) -> None")},
1054n/a {"SetListUserHandle", (PyCFunction)List_SetListUserHandle, 1,
1055n/a PyDoc_STR("(ListHandle list, Handle userHandle) -> None")},
1056n/a {"SetListFlags", (PyCFunction)List_SetListFlags, 1,
1057n/a PyDoc_STR("(ListHandle list, OptionBits listFlags) -> None")},
1058n/a {"SetListSelectionFlags", (PyCFunction)List_SetListSelectionFlags, 1,
1059n/a PyDoc_STR("(ListHandle list, OptionBits selectionFlags) -> None")},
1060n/a {"as_List", (PyCFunction)List_as_List, 1,
1061n/a PyDoc_STR("(Resource)->List.\nReturns List object (which is not auto-freed!)")},
1062n/a#endif /* __LP64__ */
1063n/a {NULL, NULL, 0}
1064n/a};
1065n/a
1066n/a#ifndef __LP64__
1067n/a
1068n/a
1069n/astatic void myListDefFunction(SInt16 message,
1070n/a Boolean selected,
1071n/a Rect *cellRect,
1072n/a Cell theCell,
1073n/a SInt16 dataOffset,
1074n/a SInt16 dataLen,
1075n/a ListHandle theList)
1076n/a{
1077n/a PyObject *listDefFunc, *args, *rv=NULL;
1078n/a ListObject *self;
1079n/a
1080n/a self = (ListObject*)GetListRefCon(theList);
1081n/a if (self == NULL || self->ob_itself != theList)
1082n/a return; /* nothing we can do */
1083n/a listDefFunc = self->ob_ldef_func;
1084n/a if (listDefFunc == NULL)
1085n/a return; /* nothing we can do */
1086n/a args = Py_BuildValue("hbO&O&hhO", message,
1087n/a selected,
1088n/a PyMac_BuildRect, cellRect,
1089n/a PyMac_BuildPoint, theCell,
1090n/a dataOffset,
1091n/a dataLen,
1092n/a self);
1093n/a if (args != NULL) {
1094n/a rv = PyEval_CallObject(listDefFunc, args);
1095n/a Py_DECREF(args);
1096n/a }
1097n/a if (rv == NULL) {
1098n/a PySys_WriteStderr("error in list definition callback:\n");
1099n/a PyErr_Print();
1100n/a } else {
1101n/a Py_DECREF(rv);
1102n/a }
1103n/a}
1104n/a#endif /* __LP64__ */
1105n/a
1106n/a
1107n/avoid init_List(void)
1108n/a{
1109n/a PyObject *m;
1110n/a#ifndef __LP64__
1111n/a PyObject *d;
1112n/a
1113n/a
1114n/a
1115n/a myListDefFunctionUPP = NewListDefUPP((ListDefProcPtr)myListDefFunction);
1116n/a
1117n/a PyMac_INIT_TOOLBOX_OBJECT_NEW(ListHandle, ListObj_New);
1118n/a PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ListHandle, ListObj_Convert);
1119n/a#endif /* __LP64__ */
1120n/a
1121n/a
1122n/a m = Py_InitModule("_List", List_methods);
1123n/a#ifndef __LP64__
1124n/a d = PyModule_GetDict(m);
1125n/a List_Error = PyMac_GetOSErrException();
1126n/a if (List_Error == NULL ||
1127n/a PyDict_SetItemString(d, "Error", List_Error) != 0)
1128n/a return;
1129n/a List_Type.ob_type = &PyType_Type;
1130n/a if (PyType_Ready(&List_Type) < 0) return;
1131n/a Py_INCREF(&List_Type);
1132n/a PyModule_AddObject(m, "List", (PyObject *)&List_Type);
1133n/a /* Backward-compatible name */
1134n/a Py_INCREF(&List_Type);
1135n/a PyModule_AddObject(m, "ListType", (PyObject *)&List_Type);
1136n/a#endif /* __LP64__ */
1137n/a}
1138n/a
1139n/a/* ======================== End module _List ======================== */
1140n/a