Mercurial > cpython-lru_cache-weakref
annotate Modules/cdmodule.c @ 6719:faebc1940432 legacy-trunk
Understand -Xlinker option.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 02 Dec 1997 20:38:11 +0000 |
| parents | 36405309397f |
| children | dc65c5f6ad7c |
| rev | line source |
|---|---|
| 820 | 1 /********************************************************** |
|
2061
172ba04a5191
Added 1995 to copyright message.
Guido van Rossum <guido@python.org>
parents:
1746
diff
changeset
|
2 Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, |
|
172ba04a5191
Added 1995 to copyright message.
Guido van Rossum <guido@python.org>
parents:
1746
diff
changeset
|
3 The Netherlands. |
| 820 | 4 |
| 5 All Rights Reserved | |
| 6 | |
|
4503
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
7 Permission to use, copy, modify, and distribute this software and its |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
8 documentation for any purpose and without fee is hereby granted, |
| 820 | 9 provided that the above copyright notice appear in all copies and that |
|
4503
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
10 both that copyright notice and this permission notice appear in |
| 820 | 11 supporting documentation, and that the names of Stichting Mathematisch |
|
4503
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
12 Centrum or CWI or Corporation for National Research Initiatives or |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
13 CNRI not be used in advertising or publicity pertaining to |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
14 distribution of the software without specific, written prior |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
15 permission. |
| 820 | 16 |
|
4503
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
17 While CWI is the initial source for this software, a modified version |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
18 is made available by the Corporation for National Research Initiatives |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
19 (CNRI) at the Internet address ftp://ftp.python.org. |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
20 |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
21 STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
22 REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
23 MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
24 CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
25 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
26 PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
27 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
|
65d2d8e67da3
New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents:
2603
diff
changeset
|
28 PERFORMANCE OF THIS SOFTWARE. |
| 820 | 29 |
| 30 ******************************************************************/ | |
| 31 | |
| 32 /* CD module -- interface to Mark Callow's and Roger Chickering's */ | |
| 33 /* CD Audio Library (CD). */ | |
| 34 | |
| 35 #include <sys/types.h> | |
| 36 #include <cdaudio.h> | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
37 #include "Python.h" |
| 820 | 38 |
| 39 #define NCALLBACKS 8 | |
| 40 | |
| 41 typedef struct { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
42 PyObject_HEAD |
| 820 | 43 CDPLAYER *ob_cdplayer; |
| 44 } cdplayerobject; | |
| 45 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
46 static PyObject *CdError; /* exception cd.error */ |
|
1063
aaa3bccb143a
Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents:
926
diff
changeset
|
47 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
48 static PyObject * |
| 820 | 49 CD_allowremoval(self, args) |
| 50 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
51 PyObject *args; |
| 820 | 52 { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
53 if (!PyArg_ParseTuple(args, "")) |
| 820 | 54 return NULL; |
| 55 | |
| 56 CDallowremoval(self->ob_cdplayer); | |
| 57 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
58 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
59 return Py_None; |
| 820 | 60 } |
| 61 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
62 static PyObject * |
| 820 | 63 CD_preventremoval(self, args) |
| 64 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
65 PyObject *args; |
| 820 | 66 { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
67 if (!PyArg_ParseTuple(args, "")) |
| 820 | 68 return NULL; |
| 69 | |
| 70 CDpreventremoval(self->ob_cdplayer); | |
| 71 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
72 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
73 return Py_None; |
| 820 | 74 } |
| 75 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
76 static PyObject * |
| 820 | 77 CD_bestreadsize(self, args) |
| 78 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
79 PyObject *args; |
| 820 | 80 { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
81 if (!PyArg_ParseTuple(args, "")) |
| 820 | 82 return NULL; |
| 83 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
84 return PyInt_FromLong((long) CDbestreadsize(self->ob_cdplayer)); |
| 820 | 85 } |
| 86 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
87 static PyObject * |
| 820 | 88 CD_close(self, args) |
| 89 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
90 PyObject *args; |
| 820 | 91 { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
92 if (!PyArg_ParseTuple(args, "")) |
| 820 | 93 return NULL; |
| 94 | |
| 95 if (!CDclose(self->ob_cdplayer)) { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
96 PyErr_SetFromErrno(CdError); /* XXX - ??? */ |
| 820 | 97 return NULL; |
| 98 } | |
| 99 self->ob_cdplayer = NULL; | |
| 100 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
101 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
102 return Py_None; |
| 820 | 103 } |
| 104 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
105 static PyObject * |
| 820 | 106 CD_eject(self, args) |
| 107 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
108 PyObject *args; |
| 820 | 109 { |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
110 CDSTATUS status; |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
111 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
112 if (!PyArg_ParseTuple(args, "")) |
| 820 | 113 return NULL; |
| 114 | |
| 115 if (!CDeject(self->ob_cdplayer)) { | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
116 if (CDgetstatus(self->ob_cdplayer, &status) && |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
117 status.state == CD_NODISC) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
118 PyErr_SetString(CdError, "no disc in player"); |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
119 else |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
120 PyErr_SetString(CdError, "eject failed"); |
| 820 | 121 return NULL; |
| 122 } | |
| 123 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
124 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
125 return Py_None; |
| 820 | 126 } |
| 127 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
128 static PyObject * |
| 820 | 129 CD_getstatus(self, args) |
| 130 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
131 PyObject *args; |
| 820 | 132 { |
| 133 CDSTATUS status; | |
| 134 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
135 if (!PyArg_ParseTuple(args, "")) |
| 820 | 136 return NULL; |
| 137 | |
| 138 if (!CDgetstatus(self->ob_cdplayer, &status)) { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
139 PyErr_SetFromErrno(CdError); /* XXX - ??? */ |
| 820 | 140 return NULL; |
| 141 } | |
| 142 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
143 return Py_BuildValue("(ii(iii)(iii)(iii)iiii)", status.state, |
|
830
ea5072de7427
Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents:
820
diff
changeset
|
144 status.track, status.min, status.sec, status.frame, |
|
ea5072de7427
Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents:
820
diff
changeset
|
145 status.abs_min, status.abs_sec, status.abs_frame, |
|
ea5072de7427
Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents:
820
diff
changeset
|
146 status.total_min, status.total_sec, status.total_frame, |
|
ea5072de7427
Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents:
820
diff
changeset
|
147 status.first, status.last, status.scsi_audio, |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
148 status.cur_block); |
| 820 | 149 } |
| 150 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
151 static PyObject * |
| 820 | 152 CD_gettrackinfo(self, args) |
| 153 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
154 PyObject *args; |
| 820 | 155 { |
| 156 int track; | |
| 157 CDTRACKINFO info; | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
158 CDSTATUS status; |
| 820 | 159 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
160 if (!PyArg_ParseTuple(args, "i", &track)) |
| 820 | 161 return NULL; |
| 162 | |
| 163 if (!CDgettrackinfo(self->ob_cdplayer, track, &info)) { | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
164 if (CDgetstatus(self->ob_cdplayer, &status) && |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
165 status.state == CD_NODISC) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
166 PyErr_SetString(CdError, "no disc in player"); |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
167 else |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
168 PyErr_SetString(CdError, "gettrackinfo failed"); |
| 820 | 169 return NULL; |
| 170 } | |
| 171 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
172 return Py_BuildValue("((iii)(iii))", |
| 820 | 173 info.start_min, info.start_sec, info.start_frame, |
| 174 info.total_min, info.total_sec, info.total_frame); | |
| 175 } | |
| 176 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
177 static PyObject * |
| 820 | 178 CD_msftoblock(self, args) |
| 179 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
180 PyObject *args; |
| 820 | 181 { |
| 182 int min, sec, frame; | |
| 183 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
184 if (!PyArg_ParseTuple(args, "iii", &min, &sec, &frame)) |
| 820 | 185 return NULL; |
| 186 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
187 return PyInt_FromLong((long) CDmsftoblock(self->ob_cdplayer, |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
188 min, sec, frame)); |
| 820 | 189 } |
| 190 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
191 static PyObject * |
| 820 | 192 CD_play(self, args) |
| 193 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
194 PyObject *args; |
| 820 | 195 { |
| 196 int start, play; | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
197 CDSTATUS status; |
| 820 | 198 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
199 if (!PyArg_ParseTuple(args, "ii", &start, &play)) |
| 820 | 200 return NULL; |
| 201 | |
| 202 if (!CDplay(self->ob_cdplayer, start, play)) { | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
203 if (CDgetstatus(self->ob_cdplayer, &status) && |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
204 status.state == CD_NODISC) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
205 PyErr_SetString(CdError, "no disc in player"); |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
206 else |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
207 PyErr_SetString(CdError, "play failed"); |
| 820 | 208 return NULL; |
| 209 } | |
| 210 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
211 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
212 return Py_None; |
| 820 | 213 } |
| 214 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
215 static PyObject * |
| 820 | 216 CD_playabs(self, args) |
| 217 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
218 PyObject *args; |
| 820 | 219 { |
| 220 int min, sec, frame, play; | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
221 CDSTATUS status; |
| 820 | 222 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
223 if (!PyArg_ParseTuple(args, "iiii", &min, &sec, &frame, &play)) |
| 820 | 224 return NULL; |
| 225 | |
| 226 if (!CDplayabs(self->ob_cdplayer, min, sec, frame, play)) { | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
227 if (CDgetstatus(self->ob_cdplayer, &status) && |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
228 status.state == CD_NODISC) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
229 PyErr_SetString(CdError, "no disc in player"); |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
230 else |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
231 PyErr_SetString(CdError, "playabs failed"); |
| 820 | 232 return NULL; |
| 233 } | |
| 234 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
235 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
236 return Py_None; |
| 820 | 237 } |
| 238 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
239 static PyObject * |
| 820 | 240 CD_playtrack(self, args) |
| 241 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
242 PyObject *args; |
| 820 | 243 { |
| 244 int start, play; | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
245 CDSTATUS status; |
| 820 | 246 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
247 if (!PyArg_ParseTuple(args, "ii", &start, &play)) |
| 820 | 248 return NULL; |
| 249 | |
| 250 if (!CDplaytrack(self->ob_cdplayer, start, play)) { | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
251 if (CDgetstatus(self->ob_cdplayer, &status) && |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
252 status.state == CD_NODISC) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
253 PyErr_SetString(CdError, "no disc in player"); |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
254 else |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
255 PyErr_SetString(CdError, "playtrack failed"); |
| 820 | 256 return NULL; |
| 257 } | |
| 258 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
259 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
260 return Py_None; |
| 820 | 261 } |
| 262 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
263 static PyObject * |
| 820 | 264 CD_playtrackabs(self, args) |
| 265 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
266 PyObject *args; |
| 820 | 267 { |
| 268 int track, min, sec, frame, play; | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
269 CDSTATUS status; |
| 820 | 270 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
271 if (!PyArg_ParseTuple(args, "iiiii", &track, &min, &sec, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
272 &frame, &play)) |
| 820 | 273 return NULL; |
| 274 | |
| 275 if (!CDplaytrackabs(self->ob_cdplayer, track, min, sec, frame, play)) { | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
276 if (CDgetstatus(self->ob_cdplayer, &status) && |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
277 status.state == CD_NODISC) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
278 PyErr_SetString(CdError, "no disc in player"); |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
279 else |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
280 PyErr_SetString(CdError, "playtrackabs failed"); |
| 820 | 281 return NULL; |
| 282 } | |
| 283 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
284 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
285 return Py_None; |
| 820 | 286 } |
| 287 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
288 static PyObject * |
| 820 | 289 CD_readda(self, args) |
| 290 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
291 PyObject *args; |
| 820 | 292 { |
| 293 int numframes, n; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
294 PyObject *result; |
| 820 | 295 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
296 if (!PyArg_ParseTuple(args, "i", &numframes)) |
| 820 | 297 return NULL; |
| 298 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
299 result = PyString_FromStringAndSize(NULL, numframes * sizeof(CDFRAME)); |
| 820 | 300 if (result == NULL) |
| 301 return NULL; | |
| 302 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
303 n = CDreadda(self->ob_cdplayer, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
304 (CDFRAME *) PyString_AsString(result), numframes); |
| 820 | 305 if (n == -1) { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
306 Py_DECREF(result); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
307 PyErr_SetFromErrno(CdError); |
| 820 | 308 return NULL; |
| 309 } | |
| 310 if (n < numframes) | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
311 if (_PyString_Resize(&result, n * sizeof(CDFRAME))) |
| 820 | 312 return NULL; |
| 313 | |
| 314 return result; | |
| 315 } | |
| 316 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
317 static PyObject * |
| 820 | 318 CD_seek(self, args) |
| 319 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
320 PyObject *args; |
| 820 | 321 { |
| 322 int min, sec, frame; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
323 long PyTryBlock; |
| 820 | 324 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
325 if (!PyArg_ParseTuple(args, "iii", &min, &sec, &frame)) |
| 820 | 326 return NULL; |
| 327 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
328 PyTryBlock = CDseek(self->ob_cdplayer, min, sec, frame); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
329 if (PyTryBlock == -1) { |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
330 PyErr_SetFromErrno(CdError); |
| 820 | 331 return NULL; |
| 332 } | |
| 333 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
334 return PyInt_FromLong(PyTryBlock); |
| 820 | 335 } |
| 336 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
337 static PyObject * |
| 820 | 338 CD_seektrack(self, args) |
| 339 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
340 PyObject *args; |
| 820 | 341 { |
| 342 int track; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
343 long PyTryBlock; |
| 820 | 344 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
345 if (!PyArg_ParseTuple(args, "i", &track)) |
| 820 | 346 return NULL; |
| 347 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
348 PyTryBlock = CDseektrack(self->ob_cdplayer, track); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
349 if (PyTryBlock == -1) { |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
350 PyErr_SetFromErrno(CdError); |
| 820 | 351 return NULL; |
| 352 } | |
| 353 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
354 return PyInt_FromLong(PyTryBlock); |
| 820 | 355 } |
| 356 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
357 static PyObject * |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
358 CD_seekblock(self, args) |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
359 cdplayerobject *self; |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
360 PyObject *args; |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
361 { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
362 unsigned long PyTryBlock; |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
363 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
364 if (!PyArg_ParseTuple(args, "l", &PyTryBlock)) |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
365 return NULL; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
366 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
367 PyTryBlock = CDseekblock(self->ob_cdplayer, PyTryBlock); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
368 if (PyTryBlock == (unsigned long) -1) { |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
369 PyErr_SetFromErrno(CdError); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
370 return NULL; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
371 } |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
372 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
373 return PyInt_FromLong(PyTryBlock); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
374 } |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
375 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
376 static PyObject * |
| 820 | 377 CD_stop(self, args) |
| 378 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
379 PyObject *args; |
| 820 | 380 { |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
381 CDSTATUS status; |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
382 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
383 if (!PyArg_ParseTuple(args, "")) |
| 820 | 384 return NULL; |
| 385 | |
| 386 if (!CDstop(self->ob_cdplayer)) { | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
387 if (CDgetstatus(self->ob_cdplayer, &status) && |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
388 status.state == CD_NODISC) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
389 PyErr_SetString(CdError, "no disc in player"); |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
390 else |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
391 PyErr_SetString(CdError, "stop failed"); |
| 820 | 392 return NULL; |
| 393 } | |
| 394 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
395 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
396 return Py_None; |
| 820 | 397 } |
| 398 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
399 static PyObject * |
| 820 | 400 CD_togglepause(self, args) |
| 401 cdplayerobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
402 PyObject *args; |
| 820 | 403 { |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
404 CDSTATUS status; |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
405 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
406 if (!PyArg_ParseTuple(args, "")) |
| 820 | 407 return NULL; |
| 408 | |
| 409 if (!CDtogglepause(self->ob_cdplayer)) { | |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
410 if (CDgetstatus(self->ob_cdplayer, &status) && |
|
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
411 status.state == CD_NODISC) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
412 PyErr_SetString(CdError, "no disc in player"); |
|
849
fe6a5f2640a2
Wanneer er geen disk in de speler zit falen sommige routines. De
Guido van Rossum <guido@python.org>
parents:
848
diff
changeset
|
413 else |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
414 PyErr_SetString(CdError, "togglepause failed"); |
| 820 | 415 return NULL; |
| 416 } | |
| 417 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
418 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
419 return Py_None; |
| 820 | 420 } |
| 421 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
422 static PyMethodDef cdplayer_methods[] = { |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
423 {"allowremoval", (PyCFunction)CD_allowremoval, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
424 {"bestreadsize", (PyCFunction)CD_bestreadsize, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
425 {"close", (PyCFunction)CD_close, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
426 {"eject", (PyCFunction)CD_eject, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
427 {"getstatus", (PyCFunction)CD_getstatus, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
428 {"gettrackinfo", (PyCFunction)CD_gettrackinfo, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
429 {"msftoblock", (PyCFunction)CD_msftoblock, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
430 {"play", (PyCFunction)CD_play, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
431 {"playabs", (PyCFunction)CD_playabs, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
432 {"playtrack", (PyCFunction)CD_playtrack, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
433 {"playtrackabs", (PyCFunction)CD_playtrackabs, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
434 {"preventremoval", (PyCFunction)CD_preventremoval, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
435 {"readda", (PyCFunction)CD_readda, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
436 {"seek", (PyCFunction)CD_seek, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
437 {"seekblock", (PyCFunction)CD_seekblock, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
438 {"seektrack", (PyCFunction)CD_seektrack, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
439 {"stop", (PyCFunction)CD_stop, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
440 {"togglepause", (PyCFunction)CD_togglepause, 1}, |
| 820 | 441 {NULL, NULL} /* sentinel */ |
| 442 }; | |
| 443 | |
| 444 static void | |
| 445 cdplayer_dealloc(self) | |
| 446 cdplayerobject *self; | |
| 447 { | |
| 448 if (self->ob_cdplayer != NULL) | |
| 449 CDclose(self->ob_cdplayer); | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
450 PyMem_DEL(self); |
| 820 | 451 } |
| 452 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
453 static PyObject * |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
454 cdplayer_getattr(self, name) |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
455 cdplayerobject *self; |
| 820 | 456 char *name; |
| 457 { | |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
458 if (self->ob_cdplayer == NULL) { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
459 PyErr_SetString(PyExc_RuntimeError, "no player active"); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
460 return NULL; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
461 } |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
462 return Py_FindMethod(cdplayer_methods, (PyObject *)self, name); |
| 820 | 463 } |
| 464 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
465 PyTypeObject CdPlayertype = { |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
466 PyObject_HEAD_INIT(&PyType_Type) |
| 820 | 467 0, /*ob_size*/ |
| 468 "cdplayer", /*tp_name*/ | |
| 469 sizeof(cdplayerobject), /*tp_size*/ | |
| 470 0, /*tp_itemsize*/ | |
| 471 /* methods */ | |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1313
diff
changeset
|
472 (destructor)cdplayer_dealloc, /*tp_dealloc*/ |
| 820 | 473 0, /*tp_print*/ |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1313
diff
changeset
|
474 (getattrfunc)cdplayer_getattr, /*tp_getattr*/ |
| 820 | 475 0, /*tp_setattr*/ |
| 476 0, /*tp_compare*/ | |
| 477 0, /*tp_repr*/ | |
| 478 }; | |
| 479 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
480 static PyObject * |
| 820 | 481 newcdplayerobject(cdp) |
| 482 CDPLAYER *cdp; | |
| 483 { | |
| 484 cdplayerobject *p; | |
| 485 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
486 p = PyObject_NEW(cdplayerobject, &CdPlayertype); |
| 820 | 487 if (p == NULL) |
| 488 return NULL; | |
| 489 p->ob_cdplayer = cdp; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
490 return (PyObject *) p; |
| 820 | 491 } |
| 492 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
493 static PyObject * |
| 820 | 494 CD_open(self, args) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
495 PyObject *self, *args; |
| 820 | 496 { |
| 497 char *dev, *direction; | |
| 498 CDPLAYER *cdp; | |
| 499 | |
| 500 /* | |
| 501 * Variable number of args. | |
| 502 * First defaults to "None", second defaults to "r". | |
| 503 */ | |
| 504 dev = NULL; | |
| 505 direction = "r"; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
506 if (!PyArg_ParseTuple(args, "|zs", &dev, &direction)) |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
507 return NULL; |
| 820 | 508 |
| 509 cdp = CDopen(dev, direction); | |
| 510 if (cdp == NULL) { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
511 PyErr_SetFromErrno(CdError); |
| 820 | 512 return NULL; |
| 513 } | |
| 514 | |
| 515 return newcdplayerobject(cdp); | |
| 516 } | |
| 517 | |
| 518 typedef struct { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
519 PyObject_HEAD |
| 820 | 520 CDPARSER *ob_cdparser; |
| 521 struct { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
522 PyObject *ob_cdcallback; |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
523 PyObject *ob_cdcallbackarg; |
| 820 | 524 } ob_cdcallbacks[NCALLBACKS]; |
| 525 } cdparserobject; | |
| 526 | |
| 527 static void | |
| 528 CD_callback(arg, type, data) | |
| 529 void *arg; | |
| 530 CDDATATYPES type; | |
| 531 void *data; | |
| 532 { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
533 PyObject *result, *args, *v = NULL; |
| 820 | 534 char *p; |
| 535 int i; | |
| 536 cdparserobject *self; | |
| 537 | |
| 538 self = (cdparserobject *) arg; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
539 args = PyTuple_New(3); |
| 820 | 540 if (args == NULL) |
| 541 return; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
542 Py_INCREF(self->ob_cdcallbacks[type].ob_cdcallbackarg); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
543 PyTuple_SetItem(args, 0, self->ob_cdcallbacks[type].ob_cdcallbackarg); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
544 PyTuple_SetItem(args, 1, PyInt_FromLong((long) type)); |
| 820 | 545 switch (type) { |
| 546 case cd_audio: | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
547 v = PyString_FromStringAndSize(data, CDDA_DATASIZE); |
| 820 | 548 break; |
| 549 case cd_pnum: | |
| 550 case cd_index: | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
551 v = PyInt_FromLong(((CDPROGNUM *) data)->value); |
| 820 | 552 break; |
| 553 case cd_ptime: | |
| 554 case cd_atime: | |
|
830
ea5072de7427
Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents:
820
diff
changeset
|
555 #define ptr ((struct cdtimecode *) data) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
556 v = Py_BuildValue("(iii)", |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
557 ptr->mhi * 10 + ptr->mlo, |
|
830
ea5072de7427
Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents:
820
diff
changeset
|
558 ptr->shi * 10 + ptr->slo, |
|
ea5072de7427
Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents:
820
diff
changeset
|
559 ptr->fhi * 10 + ptr->flo); |
|
ea5072de7427
Return more structured data in some cases
Guido van Rossum <guido@python.org>
parents:
820
diff
changeset
|
560 #undef ptr |
| 820 | 561 break; |
| 562 case cd_catalog: | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
563 v = PyString_FromStringAndSize(NULL, 13); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
564 p = PyString_AsString(v); |
| 820 | 565 for (i = 0; i < 13; i++) |
| 566 *p++ = ((char *) data)[i] + '0'; | |
| 567 break; | |
| 568 case cd_ident: | |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
569 #define ptr ((struct cdident *) data) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
570 v = PyString_FromStringAndSize(NULL, 12); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
571 p = PyString_AsString(v); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
572 CDsbtoa(p, ptr->country, 2); |
| 820 | 573 p += 2; |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
574 CDsbtoa(p, ptr->owner, 3); |
| 820 | 575 p += 3; |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
576 *p++ = ptr->year[0] + '0'; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
577 *p++ = ptr->year[1] + '0'; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
578 *p++ = ptr->serial[0] + '0'; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
579 *p++ = ptr->serial[1] + '0'; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
580 *p++ = ptr->serial[2] + '0'; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
581 *p++ = ptr->serial[3] + '0'; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
582 *p++ = ptr->serial[4] + '0'; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
583 #undef ptr |
| 820 | 584 break; |
| 585 case cd_control: | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
586 v = PyInt_FromLong((long) *((unchar *) data)); |
| 820 | 587 break; |
| 588 } | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
589 PyTuple_SetItem(args, 2, v); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
590 if (PyErr_Occurred()) { |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
591 Py_DECREF(args); |
| 820 | 592 return; |
| 593 } | |
| 594 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
595 result = PyEval_CallObject(self->ob_cdcallbacks[type].ob_cdcallback, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
596 args); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
597 Py_DECREF(args); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
598 Py_XDECREF(result); |
| 820 | 599 } |
| 600 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
601 static PyObject * |
| 820 | 602 CD_deleteparser(self, args) |
| 603 cdparserobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
604 PyObject *args; |
| 820 | 605 { |
| 606 int i; | |
| 607 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
608 if (!PyArg_ParseTuple(args, "")) |
| 820 | 609 return NULL; |
| 610 | |
| 611 CDdeleteparser(self->ob_cdparser); | |
| 612 self->ob_cdparser = NULL; | |
| 613 | |
| 614 /* no sense in keeping the callbacks, so remove them */ | |
| 615 for (i = 0; i < NCALLBACKS; i++) { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
616 Py_XDECREF(self->ob_cdcallbacks[i].ob_cdcallback); |
| 820 | 617 self->ob_cdcallbacks[i].ob_cdcallback = NULL; |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
618 Py_XDECREF(self->ob_cdcallbacks[i].ob_cdcallbackarg); |
| 820 | 619 self->ob_cdcallbacks[i].ob_cdcallbackarg = NULL; |
| 620 } | |
| 621 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
622 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
623 return Py_None; |
| 820 | 624 } |
| 625 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
626 static PyObject * |
| 820 | 627 CD_parseframe(self, args) |
| 628 cdparserobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
629 PyObject *args; |
| 820 | 630 { |
| 631 char *cdfp; | |
| 632 int length; | |
| 633 CDFRAME *p; | |
| 634 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
635 if (!PyArg_ParseTuple(args, "s#", &cdfp, &length)) |
| 820 | 636 return NULL; |
| 637 | |
| 638 if (length % sizeof(CDFRAME) != 0) { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
639 PyErr_SetString(PyExc_TypeError, "bad length"); |
| 820 | 640 return NULL; |
| 641 } | |
| 642 | |
| 643 p = (CDFRAME *) cdfp; | |
| 644 while (length > 0) { | |
| 645 CDparseframe(self->ob_cdparser, p); | |
| 646 length -= sizeof(CDFRAME); | |
| 647 p++; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
648 if (PyErr_Occurred()) |
| 820 | 649 return NULL; |
| 650 } | |
| 651 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
652 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
653 return Py_None; |
| 820 | 654 } |
| 655 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
656 static PyObject * |
| 820 | 657 CD_removecallback(self, args) |
| 658 cdparserobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
659 PyObject *args; |
| 820 | 660 { |
| 661 int type; | |
| 662 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
663 if (!PyArg_ParseTuple(args, "i", &type)) |
| 820 | 664 return NULL; |
| 665 | |
|
921
8078834996ec
cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents:
849
diff
changeset
|
666 if (type < 0 || type >= NCALLBACKS) { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
667 PyErr_SetString(PyExc_TypeError, "bad type"); |
|
921
8078834996ec
cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents:
849
diff
changeset
|
668 return NULL; |
|
8078834996ec
cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents:
849
diff
changeset
|
669 } |
|
8078834996ec
cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents:
849
diff
changeset
|
670 |
| 820 | 671 CDremovecallback(self->ob_cdparser, (CDDATATYPES) type); |
| 672 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
673 Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallback); |
| 820 | 674 self->ob_cdcallbacks[type].ob_cdcallback = NULL; |
| 675 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
676 Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg); |
| 820 | 677 self->ob_cdcallbacks[type].ob_cdcallbackarg = NULL; |
| 678 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
679 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
680 return Py_None; |
| 820 | 681 } |
| 682 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
683 static PyObject * |
| 820 | 684 CD_resetparser(self, args) |
| 685 cdparserobject *self; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
686 PyObject *args; |
| 820 | 687 { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
688 if (!PyArg_ParseTuple(args, "")) |
| 820 | 689 return NULL; |
| 690 | |
| 691 CDresetparser(self->ob_cdparser); | |
| 692 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
693 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
694 return Py_None; |
| 820 | 695 } |
| 696 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
697 static PyObject * |
|
921
8078834996ec
cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents:
849
diff
changeset
|
698 CD_addcallback(self, args) |
| 820 | 699 cdparserobject *self; |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
700 PyObject *args; |
| 820 | 701 { |
| 702 int type; | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
703 PyObject *func, *funcarg; |
| 820 | 704 |
| 705 /* XXX - more work here */ | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
706 if (!PyArg_ParseTuple(args, "iOO", &type, &func, &funcarg)) |
| 820 | 707 return NULL; |
| 708 | |
| 709 if (type < 0 || type >= NCALLBACKS) { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
710 PyErr_SetString(PyExc_TypeError, "argument out of range"); |
| 820 | 711 return NULL; |
| 712 } | |
| 713 | |
|
1071
2291da05f178
Changed an ifdef from IRIX_405 to CDsetcallback.
Sjoerd Mullender <sjoerd@acm.org>
parents:
1063
diff
changeset
|
714 #ifdef CDsetcallback |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
715 CDaddcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
716 (void *) self); |
|
921
8078834996ec
cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents:
849
diff
changeset
|
717 #else |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
718 CDsetcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
719 (void *) self); |
|
921
8078834996ec
cdmodule.c: 2 minor changes by Sjoerd.
Guido van Rossum <guido@python.org>
parents:
849
diff
changeset
|
720 #endif |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
721 Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallback); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
722 Py_INCREF(func); |
|
1313
6ee380349c84
* Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents:
1257
diff
changeset
|
723 self->ob_cdcallbacks[type].ob_cdcallback = func; |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
724 Py_XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
725 Py_INCREF(funcarg); |
|
1313
6ee380349c84
* Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents:
1257
diff
changeset
|
726 self->ob_cdcallbacks[type].ob_cdcallbackarg = funcarg; |
| 820 | 727 |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
728 /* |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
729 if (type == cd_audio) { |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
730 sigfpe_[_UNDERFL].repls = _ZERO; |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
731 handle_sigfpes(_ON, _EN_UNDERFL, NULL, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
732 _ABORT_ON_ERROR, NULL); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
733 } |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
734 */ |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
735 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
736 Py_INCREF(Py_None); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
737 return Py_None; |
| 820 | 738 } |
| 739 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
740 static PyMethodDef cdparser_methods[] = { |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
741 {"addcallback", (PyCFunction)CD_addcallback, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
742 {"deleteparser", (PyCFunction)CD_deleteparser, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
743 {"parseframe", (PyCFunction)CD_parseframe, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
744 {"removecallback", (PyCFunction)CD_removecallback, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
745 {"resetparser", (PyCFunction)CD_resetparser, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
746 /* backward compatibility */ |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
747 {"setcallback", (PyCFunction)CD_addcallback, 1}, |
| 820 | 748 {NULL, NULL} /* sentinel */ |
| 749 }; | |
| 750 | |
| 751 static void | |
| 752 cdparser_dealloc(self) | |
| 753 cdparserobject *self; | |
| 754 { | |
| 755 int i; | |
| 756 | |
| 757 for (i = 0; i < NCALLBACKS; i++) { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
758 Py_XDECREF(self->ob_cdcallbacks[i].ob_cdcallback); |
| 820 | 759 self->ob_cdcallbacks[i].ob_cdcallback = NULL; |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
760 Py_XDECREF(self->ob_cdcallbacks[i].ob_cdcallbackarg); |
| 820 | 761 self->ob_cdcallbacks[i].ob_cdcallbackarg = NULL; |
| 762 } | |
| 763 CDdeleteparser(self->ob_cdparser); | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
764 PyMem_DEL(self); |
| 820 | 765 } |
| 766 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
767 static PyObject * |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
768 cdparser_getattr(self, name) |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
769 cdparserobject *self; |
| 820 | 770 char *name; |
| 771 { | |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
772 if (self->ob_cdparser == NULL) { |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
773 PyErr_SetString(PyExc_RuntimeError, "no parser active"); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
774 return NULL; |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
775 } |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
776 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
777 return Py_FindMethod(cdparser_methods, (PyObject *)self, name); |
| 820 | 778 } |
| 779 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
780 PyTypeObject CdParsertype = { |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
781 PyObject_HEAD_INIT(&PyType_Type) |
| 820 | 782 0, /*ob_size*/ |
| 783 "cdparser", /*tp_name*/ | |
| 784 sizeof(cdparserobject), /*tp_size*/ | |
| 785 0, /*tp_itemsize*/ | |
| 786 /* methods */ | |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1313
diff
changeset
|
787 (destructor)cdparser_dealloc, /*tp_dealloc*/ |
| 820 | 788 0, /*tp_print*/ |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1313
diff
changeset
|
789 (getattrfunc)cdparser_getattr, /*tp_getattr*/ |
| 820 | 790 0, /*tp_setattr*/ |
| 791 0, /*tp_compare*/ | |
| 792 0, /*tp_repr*/ | |
| 793 }; | |
| 794 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
795 static PyObject * |
| 820 | 796 newcdparserobject(cdp) |
| 797 CDPARSER *cdp; | |
| 798 { | |
| 799 cdparserobject *p; | |
| 800 int i; | |
| 801 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
802 p = PyObject_NEW(cdparserobject, &CdParsertype); |
| 820 | 803 if (p == NULL) |
| 804 return NULL; | |
| 805 p->ob_cdparser = cdp; | |
| 806 for (i = 0; i < NCALLBACKS; i++) { | |
| 807 p->ob_cdcallbacks[i].ob_cdcallback = NULL; | |
| 808 p->ob_cdcallbacks[i].ob_cdcallbackarg = NULL; | |
| 809 } | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
810 return (PyObject *) p; |
| 820 | 811 } |
| 812 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
813 static PyObject * |
| 820 | 814 CD_createparser(self, args) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
815 PyObject *self, *args; |
| 820 | 816 { |
| 817 CDPARSER *cdp; | |
| 818 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
819 if (!PyArg_ParseTuple(args, "")) |
| 820 | 820 return NULL; |
| 821 cdp = CDcreateparser(); | |
| 822 if (cdp == NULL) { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
823 PyErr_SetString(CdError, "createparser failed"); |
| 820 | 824 return NULL; |
| 825 } | |
| 826 | |
| 827 return newcdparserobject(cdp); | |
| 828 } | |
| 829 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
830 static PyObject * |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
831 CD_msftoframe(self, args) |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
832 PyObject *self, *args; |
| 820 | 833 { |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
834 int min, sec, frame; |
| 820 | 835 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
836 if (!PyArg_ParseTuple(args, "iii", &min, &sec, &frame)) |
| 820 | 837 return NULL; |
| 838 | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
839 return PyInt_FromLong((long) CDmsftoframe(min, sec, frame)); |
| 820 | 840 } |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
841 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
842 static PyMethodDef CD_methods[] = { |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
843 {"open", (PyCFunction)CD_open, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
844 {"createparser", (PyCFunction)CD_createparser, 1}, |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
845 {"msftoframe", (PyCFunction)CD_msftoframe, 1}, |
| 820 | 846 {NULL, NULL} /* Sentinel */ |
| 847 }; | |
| 848 | |
| 849 void | |
| 850 initcd() | |
| 851 { | |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
852 PyObject *m, *d; |
|
1063
aaa3bccb143a
Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents:
926
diff
changeset
|
853 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
854 m = Py_InitModule("cd", CD_methods); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
855 d = PyModule_GetDict(m); |
|
1063
aaa3bccb143a
Defined exception cd.error which is used for errors other than
Sjoerd Mullender <sjoerd@acm.org>
parents:
926
diff
changeset
|
856 |
| 6370 | 857 CdError = PyErr_NewException("cd.error", NULL, NULL); |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
858 PyDict_SetItemString(d, "error", CdError); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
859 |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
860 /* Identifiers for the different types of callbacks from the parser */ |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
861 PyDict_SetItemString(d, "audio", PyInt_FromLong((long) cd_audio)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
862 PyDict_SetItemString(d, "pnum", PyInt_FromLong((long) cd_pnum)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
863 PyDict_SetItemString(d, "index", PyInt_FromLong((long) cd_index)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
864 PyDict_SetItemString(d, "ptime", PyInt_FromLong((long) cd_ptime)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
865 PyDict_SetItemString(d, "atime", PyInt_FromLong((long) cd_atime)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
866 PyDict_SetItemString(d, "catalog", PyInt_FromLong((long) cd_catalog)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
867 PyDict_SetItemString(d, "ident", PyInt_FromLong((long) cd_ident)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
868 PyDict_SetItemString(d, "control", PyInt_FromLong((long) cd_control)); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
869 |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
870 /* Block size information for digital audio data */ |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
871 PyDict_SetItemString(d, "DATASIZE", |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
872 PyInt_FromLong((long) CDDA_DATASIZE)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
873 PyDict_SetItemString(d, "BLOCKSIZE", |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
874 PyInt_FromLong((long) CDDA_BLOCKSIZE)); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
875 |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
876 /* Possible states for the cd player */ |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
877 PyDict_SetItemString(d, "ERROR", PyInt_FromLong((long) CD_ERROR)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
878 PyDict_SetItemString(d, "NODISC", PyInt_FromLong((long) CD_NODISC)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
879 PyDict_SetItemString(d, "READY", PyInt_FromLong((long) CD_READY)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
880 PyDict_SetItemString(d, "PLAYING", PyInt_FromLong((long) CD_PLAYING)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
881 PyDict_SetItemString(d, "PAUSED", PyInt_FromLong((long) CD_PAUSED)); |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
882 PyDict_SetItemString(d, "STILL", PyInt_FromLong((long) CD_STILL)); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
883 #ifdef CD_CDROM /* only newer versions of the library */ |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
884 PyDict_SetItemString(d, "CDROM", PyInt_FromLong((long) CD_CDROM)); |
|
2603
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
885 #endif |
|
4084ecf276cf
Use newgetargs instead of getargs.
Sjoerd Mullender <sjoerd@acm.org>
parents:
2061
diff
changeset
|
886 |
|
4892
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
887 if (PyErr_Occurred()) |
|
1c089c5b66e9
Renamed but not well tested.
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
4600
diff
changeset
|
888 Py_FatalError("can't initialize module cd"); |
| 820 | 889 } |
