annotate Modules/almodule.c @ 4566:6403c94de50d legacy-trunk

Added safeguard against failure in __del__.
author Guido van Rossum <guido@python.org>
date Wed, 27 Nov 1996 19:39:58 +0000
parents 65d2d8e67da3
children d36250aefb82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
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.
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 All Rights Reserved
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 2061
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: 2061
diff changeset
8 documentation for any purpose and without fee is hereby granted,
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
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: 2061
diff changeset
10 both that copyright notice and this permission notice appear in
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 supporting documentation, and that the names of Stichting Mathematisch
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 2061
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: 2061
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: 2061
diff changeset
14 distribution of the software without specific, written prior
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 2061
diff changeset
15 permission.
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 2061
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: 2061
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: 2061
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: 2061
diff changeset
20
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 2061
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: 2061
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: 2061
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: 2061
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: 2061
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: 2061
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: 2061
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: 2061
diff changeset
28 PERFORMANCE OF THIS SOFTWARE.
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 ******************************************************************/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31
864
e58f40c2f285 Mark's name is Callow, not Callows
Guido van Rossum <guido@python.org>
parents: 795
diff changeset
32 /* AL module -- interface to Mark Callow's Audio Library (AL). */
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
34 #include <audio.h>
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
36 /* Check which version audio library we have: */
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
37 #ifdef AL_ERROR_NUMBER
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
38 #define AL_405
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
39 /* XXXX 4.0.5 libaudio also allows us to provide better error
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
40 ** handling (with ALseterrorhandler). We should implement that
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
41 ** sometime.
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
42 */
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
43
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
44 #endif
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
45
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 #include "allobjects.h"
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 #include "import.h"
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 #include "modsupport.h"
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 #include "structmember.h"
947
260d96db112f Modified to allow other threads to run in a multithreaded environment.
Jack Jansen <jack.jansen@cwi.nl>
parents: 864
diff changeset
50 #include "ceval.h"
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
51
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 /* Config objects */
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 typedef struct {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 OB_HEAD
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 ALconfig ob_config;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 } configobject;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
60 staticforward typeobject Configtype;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 #define is_configobject(v) ((v)->ob_type == &Configtype)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
64 /* Forward */
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
65 static int getconfigarg PROTO((object *, ALconfig *));
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
66 static int getstrstrconfigarg PROTO((object *, char **, char **, ALconfig *));
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
67
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 setConfig (self, args, func)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 void (*func)(ALconfig, long);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 long par;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
75
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
76 if (!getlongarg (args, &par)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
77
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 (*func) (self-> ob_config, par);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
79
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 INCREF (None);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 return None;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 getConfig (self, args, func)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 long (*func)(ALconfig);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 long par;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
92 if (!getnoarg (args)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
93
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 par = (*func) (self-> ob_config);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
95
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 return newintobject (par);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 al_setqueuesize (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 return (setConfig (self, args, ALsetqueuesize));
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 al_getqueuesize (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 return (getConfig (self, args, ALgetqueuesize));
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 al_setwidth (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 return (setConfig (self, args, ALsetwidth));
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
122
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 al_getwidth (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 return (getConfig (self, args, ALgetwidth));
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
130
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 al_getchannels (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 return (getConfig (self, args, ALgetchannels));
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
138
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 al_setchannels (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 return (setConfig (self, args, ALsetchannels));
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
146
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
147 #ifdef AL_405
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
148
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
149 static object *
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
150 al_getsampfmt (self, args)
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
151 configobject *self;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
152 object *args;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
153 {
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
154 return (getConfig (self, args, ALgetsampfmt));
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
155 }
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
156
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
157 static object *
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
158 al_setsampfmt (self, args)
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
159 configobject *self;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
160 object *args;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
161 {
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
162 return (setConfig (self, args, ALsetsampfmt));
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
163 }
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
164
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
165 static object *
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
166 al_getfloatmax(self, args)
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
167 configobject *self;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
168 object *args;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
169 {
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
170 double arg;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
171
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
172 if ( !getnoarg(args) )
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
173 return 0;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
174 arg = ALgetfloatmax(self->ob_config);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
175 return newfloatobject(arg);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
176 }
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
177
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
178 static object *
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
179 al_setfloatmax(self, args)
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
180 configobject *self;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
181 object *args;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
182 {
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
183 double arg;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
184
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
185 if ( !getargs(args, "d", &arg) )
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
186 return 0;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
187 ALsetfloatmax(self->ob_config, arg);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
188 INCREF(None);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
189 return None;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
190 }
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
191 #endif /* AL_405 */
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
192
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 static struct methodlist config_methods[] = {
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
194 {"getqueuesize", (method)al_getqueuesize},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
195 {"setqueuesize", (method)al_setqueuesize},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
196 {"getwidth", (method)al_getwidth},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
197 {"setwidth", (method)al_setwidth},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
198 {"getchannels", (method)al_getchannels},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
199 {"setchannels", (method)al_setchannels},
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
200 #ifdef AL_405
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
201 {"getsampfmt", (method)al_getsampfmt},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
202 {"setsampfmt", (method)al_setsampfmt},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
203 {"getfloatmax", (method)al_getfloatmax},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
204 {"setfloatmax", (method)al_setfloatmax},
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
205 #endif /* AL_405 */
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
206 {NULL, NULL} /* sentinel */
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 };
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
208
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
209 static void
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
210 config_dealloc(self)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
213 ALfreeconfig(self->ob_config);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
214 DEL(self);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
215 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
216
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
217 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
218 config_getattr(self, name)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 configobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
220 char *name;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
221 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
222 return findmethod(config_methods, (object *)self, name);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
223 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
224
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
225 static typeobject Configtype = {
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
226 OB_HEAD_INIT(&Typetype)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
227 0, /*ob_size*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
228 "config", /*tp_name*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
229 sizeof(configobject), /*tp_size*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
230 0, /*tp_itemsize*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
231 /* methods */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
232 (destructor)config_dealloc, /*tp_dealloc*/
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
233 0, /*tp_print*/
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
234 (getattrfunc)config_getattr, /*tp_getattr*/
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
235 0, /*tp_setattr*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
236 0, /*tp_compare*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
237 0, /*tp_repr*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
238 };
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
239
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
240 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
241 newconfigobject(config)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
242 ALconfig config;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
243 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
244 configobject *p;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
245
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
246 p = NEWOBJ(configobject, &Configtype);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
247 if (p == NULL)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 return NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
249 p->ob_config = config;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
250 return (object *)p;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
251 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
252
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
253 /* Port objects */
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
254
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
255 typedef struct {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
256 OB_HEAD
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
257 ALport ob_port;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
258 } portobject;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
259
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
260 staticforward typeobject Porttype;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
261
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
262 #define is_portobject(v) ((v)->ob_type == &Porttype)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
263
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
264 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
265 al_closeport (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
266 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
267 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
268 {
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
269 if (!getnoarg (args)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
270
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
271 if (self->ob_port != NULL) {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
272 ALcloseport (self-> ob_port);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
273 self->ob_port = NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
274 /* XXX Using a closed port may dump core! */
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
275 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
276
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
277 INCREF (None);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
278 return None;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
279 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
280
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
281 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
282 al_getfd (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
283 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
284 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
285 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
286 int fd;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
287
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
288 if (!getnoarg (args)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
289
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 fd = ALgetfd (self-> ob_port);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
291
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
292 return newintobject (fd);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
293 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
294
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 al_getfilled (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
297 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
298 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
299 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
300 long count;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
301
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
302 if (!getnoarg (args)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
303
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
304 count = ALgetfilled (self-> ob_port);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
305
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
306 return newintobject (count);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
307 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
308
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
309 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
310 al_getfillable (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
311 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
312 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
313 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
314 long count;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
315
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
316 if (!getnoarg (args)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
317
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
318 count = ALgetfillable (self-> ob_port);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
319
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
320 return newintobject (count);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
322
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
323 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
324 al_readsamps (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
325 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
326 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
327 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
328 long count;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
329 object *v;
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
330 ALconfig c;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
331 int width;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
332
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
333 if (!getlongarg (args, &count)) return NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
334
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
335 if (count <= 0)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
336 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
337 err_setstr (RuntimeError, "al.readsamps : arg <= 0");
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
338 return NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
339 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
340
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
341 c = ALgetconfig(self->ob_port);
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
342 #ifdef AL_405
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
343 width = ALgetsampfmt(c);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
344 if ( width == AL_SAMPFMT_FLOAT )
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
345 width = sizeof(float);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
346 else if ( width == AL_SAMPFMT_DOUBLE )
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
347 width = sizeof(double);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
348 else
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
349 width = ALgetwidth(c);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
350 #else
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
351 width = ALgetwidth(c);
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
352 #endif /* AL_405 */
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
353 ALfreeconfig(c);
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
354 v = newsizedstringobject ((char *)NULL, width * count);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
355 if (v == NULL) return NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
356
947
260d96db112f Modified to allow other threads to run in a multithreaded environment.
Jack Jansen <jack.jansen@cwi.nl>
parents: 864
diff changeset
357 BGN_SAVE
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
358 ALreadsamps (self-> ob_port, (void *) getstringvalue(v), count);
947
260d96db112f Modified to allow other threads to run in a multithreaded environment.
Jack Jansen <jack.jansen@cwi.nl>
parents: 864
diff changeset
359 END_SAVE
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
360
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
361 return (v);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
362 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
363
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
364 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
365 al_writesamps (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
366 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
367 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
368 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
369 long count;
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
370 char *buf;
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
371 int size, width;
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
372 ALconfig c;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
373
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
374 if (!getargs (args, "s#", &buf, &size)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
375
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
376 c = ALgetconfig(self->ob_port);
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
377 #ifdef AL_405
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
378 width = ALgetsampfmt(c);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
379 if ( width == AL_SAMPFMT_FLOAT )
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
380 width = sizeof(float);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
381 else if ( width == AL_SAMPFMT_DOUBLE )
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
382 width = sizeof(double);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
383 else
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
384 width = ALgetwidth(c);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
385 #else
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
386 width = ALgetwidth(c);
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
387 #endif /* AL_405 */
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
388 ALfreeconfig(c);
947
260d96db112f Modified to allow other threads to run in a multithreaded environment.
Jack Jansen <jack.jansen@cwi.nl>
parents: 864
diff changeset
389 BGN_SAVE
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
390 ALwritesamps (self-> ob_port, (void *) buf, (long) size / width);
947
260d96db112f Modified to allow other threads to run in a multithreaded environment.
Jack Jansen <jack.jansen@cwi.nl>
parents: 864
diff changeset
391 END_SAVE
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
392
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
393 INCREF (None);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
394 return None;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
395 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
396
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
397 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
398 al_getfillpoint (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
399 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
400 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
401 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
402 long count;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
403
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
404 if (!getnoarg (args)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
405
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
406 count = ALgetfillpoint (self-> ob_port);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
407
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
408 return newintobject (count);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
409 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
410
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
411 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
412 al_setfillpoint (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
413 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
414 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
415 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
416 long count;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
417
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
418 if (!getlongarg (args, &count)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
419
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
420 ALsetfillpoint (self-> ob_port, count);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
421
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
422 INCREF (None);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
423 return (None);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
424 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
425
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
426 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
427 al_setconfig (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
428 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
429 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
430 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
431 ALconfig config;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
432
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
433 if (!getconfigarg (args, &config)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
434
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
435 ALsetconfig (self-> ob_port, config);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
436
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
437 INCREF (None);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
438 return (None);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
439 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
440
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
441 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
442 al_getconfig (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
443 portobject *self;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
444 object *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
445 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
446 ALconfig config;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
447
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
448 if (!getnoarg (args)) return NULL;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
449
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
450 config = ALgetconfig (self-> ob_port);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
451
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
452 return newconfigobject (config);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
453 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
454
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
455 #ifdef AL_405
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
456 static object *
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
457 al_getstatus (self, args)
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
458 portobject *self;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
459 object *args;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
460 {
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
461 object *list, *v;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
462 long *PVbuffer;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
463 long length;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
464 int i;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
465
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
466 if (!getargs(args, "O", &list))
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
467 return NULL;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
468 if (!is_listobject(list)) {
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
469 err_badarg();
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
470 return NULL;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
471 }
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
472 length = getlistsize(list);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
473 PVbuffer = NEW(long, length);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
474 if (PVbuffer == NULL)
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
475 return err_nomem();
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
476 for (i = 0; i < length; i++) {
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
477 v = getlistitem(list, i);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
478 if (!is_intobject(v)) {
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
479 DEL(PVbuffer);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
480 err_badarg();
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
481 return NULL;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
482 }
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
483 PVbuffer[i] = getintvalue(v);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
484 }
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
485
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
486 ALgetstatus(self->ob_port, PVbuffer, length);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
487
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
488 for (i = 0; i < length; i++)
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
489 setlistitem(list, i, newintobject(PVbuffer[i]));
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
490
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
491 DEL(PVbuffer);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
492
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
493 INCREF(None);
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
494 return None;
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
495 }
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
496 #endif /* AL_405 */
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
497
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
498 static struct methodlist port_methods[] = {
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
499 {"closeport", (method)al_closeport},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
500 {"getfd", (method)al_getfd},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
501 {"fileno", (method)al_getfd},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
502 {"getfilled", (method)al_getfilled},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
503 {"getfillable", (method)al_getfillable},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
504 {"readsamps", (method)al_readsamps},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
505 {"writesamps", (method)al_writesamps},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
506 {"setfillpoint", (method)al_setfillpoint},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
507 {"getfillpoint", (method)al_getfillpoint},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
508 {"setconfig", (method)al_setconfig},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
509 {"getconfig", (method)al_getconfig},
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
510 #ifdef AL_405
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
511 {"getstatus", (method)al_getstatus},
1214
416a8a886a82 Added new audio library functionality (getstatus, float sample fmts)
Jack Jansen <jack.jansen@cwi.nl>
parents: 973
diff changeset
512 #endif /* AL_405 */
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 {NULL, NULL} /* sentinel */
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
514 };
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
515
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
516 static void
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
517 port_dealloc(p)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
518 portobject *p;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
519 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
520 if (p->ob_port != NULL)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
521 ALcloseport(p->ob_port);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
522 DEL(p);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
523 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
524
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
525 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
526 port_getattr(p, name)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
527 portobject *p;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
528 char *name;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
529 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
530 return findmethod(port_methods, (object *)p, name);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
531 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
532
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
533 static typeobject Porttype = {
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
534 OB_HEAD_INIT(&Typetype)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
535 0, /*ob_size*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
536 "port", /*tp_name*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
537 sizeof(portobject), /*tp_size*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
538 0, /*tp_itemsize*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
539 /* methods */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
540 (destructor)port_dealloc, /*tp_dealloc*/
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
541 0, /*tp_print*/
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
542 (getattrfunc)port_getattr, /*tp_getattr*/
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
543 0, /*tp_setattr*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
544 0, /*tp_compare*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
545 0, /*tp_repr*/
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
546 };
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
547
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
548 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
549 newportobject(port)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
550 ALport port;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
551 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
552 portobject *p;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
553
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
554 p = NEWOBJ(portobject, &Porttype);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
555 if (p == NULL)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
556 return NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
557 p->ob_port = port;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
558 return (object *)p;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
559 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
560
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
561 /* the module al */
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
562
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
563 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
564 al_openport (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
565 object *self, *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
566 {
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
567 char *name, *dir;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
568 ALport port;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
569 ALconfig config = NULL;
384
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
570 int size;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
571
384
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
572 if (args == NULL || !is_tupleobject(args)) {
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
573 err_badarg ();
384
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
574 return NULL;
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
575 }
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
576 size = gettuplesize(args);
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
577 if (size == 2) {
1313
6ee380349c84 * Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
578 if (!getargs (args, "(ss)", &name, &dir))
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
579 return NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
580 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
581 else if (size == 3) {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
582 if (!getstrstrconfigarg (args, &name, &dir, &config))
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
583 return NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
584 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
585 else {
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
586 err_badarg ();
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
587 return NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
588 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
589
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
590 port = ALopenport(name, dir, config);
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
591
384
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
592 if (port == NULL) {
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
593 err_errno(RuntimeError);
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
594 return NULL;
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
595 }
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
596
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
597 return newportobject (port);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
598 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
599
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
600 static object *
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
601 al_newconfig (self, args)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
602 object *self, *args;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
603 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
604 ALconfig config;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
605
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
606 if (!getnoarg (args)) return NULL;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
607
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
608 config = ALnewconfig ();
384
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
609 if (config == NULL) {
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
610 err_errno(RuntimeError);
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
611 return NULL;
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
612 }
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
613
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
614 return newconfigobject (config);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
615 }
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
616
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
617 static object *
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
618 al_queryparams(self, args)
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
619 object *self, *args;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
620 {
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
621 long device;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
622 long length;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
623 long *PVbuffer;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
624 long PVdummy[2];
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
625 object *v;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
626 object *w;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
627
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
628 if (!getlongarg (args, &device))
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
629 return NULL;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
630 length = ALqueryparams(device, PVdummy, 2L);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
631 PVbuffer = NEW(long, length);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
632 if (PVbuffer == NULL)
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
633 return err_nomem();
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
634 (void) ALqueryparams(device, PVbuffer, length);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
635 v = newlistobject((int)length);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
636 if (v != NULL) {
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
637 int i;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
638 for (i = 0; i < length; i++)
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
639 setlistitem(v, i, newintobject(PVbuffer[i]));
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
640 }
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
641 DEL(PVbuffer);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
642 return v;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
643 }
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
644
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
645 static object *
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
646 doParams(args, func, modified)
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
647 object *args;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
648 void (*func)(long, long *, long);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
649 int modified;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
650 {
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
651 long device;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
652 object *list, *v;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
653 long *PVbuffer;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
654 long length;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
655 int i;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
656
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
657 if (!getargs(args, "(lO)", &device, &list))
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
658 return NULL;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
659 if (!is_listobject(list)) {
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
660 err_badarg();
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
661 return NULL;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
662 }
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
663 length = getlistsize(list);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
664 PVbuffer = NEW(long, length);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
665 if (PVbuffer == NULL)
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
666 return err_nomem();
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
667 for (i = 0; i < length; i++) {
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
668 v = getlistitem(list, i);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
669 if (!is_intobject(v)) {
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
670 DEL(PVbuffer);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
671 err_badarg();
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
672 return NULL;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
673 }
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
674 PVbuffer[i] = getintvalue(v);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
675 }
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
676
375
86828cc1c646 Call (*func), not ALgetparams!
Guido van Rossum <guido@python.org>
parents: 369
diff changeset
677 (*func)(device, PVbuffer, length);
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
678
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
679 if (modified) {
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
680 for (i = 0; i < length; i++)
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
681 setlistitem(list, i, newintobject(PVbuffer[i]));
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
682 }
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
683
384
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
684 DEL(PVbuffer);
a3d4d461d442 Added some error checks.
Guido van Rossum <guido@python.org>
parents: 375
diff changeset
685
369
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
686 INCREF(None);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
687 return None;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
688 }
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
689
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
690 static object *
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
691 al_getparams(self, args)
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
692 object *self, *args;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
693 {
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
694 return doParams(args, ALgetparams, 1);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
695 }
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
696
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
697 static object *
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
698 al_setparams(self, args)
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
699 object *self, *args;
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
700 {
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
701 return doParams(args, ALsetparams, 0);
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
702 }
46a656123a69 Added queryparams, get/setparams.
Guido van Rossum <guido@python.org>
parents: 367
diff changeset
703
973
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
704 static object *
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
705 al_getname(self, args)
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
706 object *self, *args;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
707 {
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
708 long device, descriptor;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
709 char *name;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
710 if (!getargs(args, "(ll)", &device, &descriptor))
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
711 return NULL;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
712 name = ALgetname(device, descriptor);
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
713 if (name == NULL) {
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
714 err_setstr(ValueError, "al.getname: bad descriptor");
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
715 return NULL;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
716 }
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
717 return newstringobject(name);
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
718 }
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
719
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
720 static object *
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
721 al_getdefault(self, args)
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
722 object *self, *args;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
723 {
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
724 long device, descriptor, value;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
725 if (!getargs(args, "(ll)", &device, &descriptor))
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
726 return NULL;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
727 value = ALgetdefault(device, descriptor);
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
728 return newlongobject(value);
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
729 }
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
730
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
731 static object *
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
732 al_getminmax(self, args)
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
733 object *self, *args;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
734 {
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
735 long device, descriptor, min, max;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
736 if (!getargs(args, "(ll)", &device, &descriptor))
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
737 return NULL;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
738 min = -1;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
739 max = -1;
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
740 ALgetminmax(device, descriptor, &min, &max);
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
741 return mkvalue("ll", min, max);
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
742 }
30a290257c31 added getname, getdefault and getminmax functions
Guido van Rossum <guido@python.org>
parents: 947
diff changeset
743
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
744 static struct methodlist al_methods[] = {
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
745 {"openport", (method)al_openport},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
746 {"newconfig", (method)al_newconfig},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
747 {"queryparams", (method)al_queryparams},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
748 {"getparams", (method)al_getparams},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
749 {"setparams", (method)al_setparams},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
750 {"getname", (method)al_getname},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
751 {"getdefault", (method)al_getdefault},
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1442
diff changeset
752 {"getminmax", (method)al_getminmax},
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
753 {NULL, NULL} /* sentinel */
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
754 };
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
755
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
756 void
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
757 inital()
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
758 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
759 initmodule("al", al_methods);
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
760 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
761
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
762 static int
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
763 getconfigarg(o, conf)
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
764 object *o;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
765 ALconfig *conf;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
766 {
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
767 if (o == NULL || !is_configobject(o))
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
768 return err_badarg ();
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
769
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
770 *conf = ((configobject *) o) -> ob_config;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
771
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
772 return 1;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
773 }
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
774
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
775 static int
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
776 getstrstrconfigarg(v, a, b, c)
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
777 object *v;
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
778 char **a;
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
779 char **b;
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
780 ALconfig *c;
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
781 {
635
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
782 object *o;
784a09a52375 Use getargs() function.
Guido van Rossum <guido@python.org>
parents: 384
diff changeset
783 return getargs(v, "(ssO)", a, b, &o) && getconfigarg(o, c);
367
a7d370f93f75 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
784 }