void al_getsource3i( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { if (NULL == alGetSource3i) mogl_glunsupported("alGetSource3i"); alGetSource3i((ALuint)mxGetScalar(prhs[0]), (ALenum)mxGetScalar(prhs[1]), (ALint*)mxGetData(prhs[2]), (ALint*)mxGetData(prhs[3]), (ALint*)mxGetData(prhs[4])); }
value lime_al_get_source3i (value source, value param) { ALint val1, val2, val3; alGetSource3i (val_int (source), val_int (param), &val1, &val2, &val3); value result = alloc_array (3); val_array_set_i (result, 1, alloc_int (val1)); val_array_set_i (result, 2, alloc_int (val2)); val_array_set_i (result, 3, alloc_int (val3)); return result; }
static PyObject* _sources_getprop (PyObject *self, PyObject *args) { long bufnum; ALenum param; char *type; int size = 0, cnt; PropType ptype = INVALID; if (!CONTEXT_IS_CURRENT (((PySources*)self)->context)) { PyErr_SetString (PyExc_PyGameError, "source context is not current"); return NULL; } if (!PyArg_ParseTuple (args, "lls:get_prop", &bufnum, ¶m, &type)) { PyErr_Clear (); if (!PyArg_ParseTuple (args, "lls|i:get_prop", &bufnum, ¶m, &type, &size)) return NULL; if (size <= 0) { PyErr_SetString (PyExc_ValueError, "size must not smaller than 0"); return NULL; } } ptype = GetPropTypeFromStr (type); CLEAR_ALERROR_STATE (); switch (ptype) { case INT: { ALint val; alGetSourcei ((ALuint)bufnum, param, &val); if (SetALErrorException (alGetError (), 0)) return NULL; return PyLong_FromLong ((long)val); } case FLOAT: { ALfloat val; alGetSourcef ((ALuint)bufnum, param, &val); if (SetALErrorException (alGetError (), 0)) return NULL; return PyFloat_FromDouble ((double)val); } case INT3: { ALint val[3]; alGetSource3i ((ALuint)bufnum, param, &val[0], &val[1], &val[2]); if (SetALErrorException (alGetError (), 0)) return NULL; return Py_BuildValue ("(lll)", (long)val[0], (long)val[1], (long)val[2]); } case FLOAT3: { ALfloat val[3]; alGetSource3f ((ALuint)bufnum, param, &val[0], &val[1], &val[2]); if (SetALErrorException (alGetError (), 0)) return NULL; return Py_BuildValue ("(ddd)", (double)val[0], (double)val[1], (double)val[2]); } case INTARRAY: { PyObject *tuple, *item; ALint* val = PyMem_New (ALint, size); if (!val) return NULL; alGetSourceiv ((ALuint)bufnum, param, val); if (SetALErrorException (alGetError (), 0)) { PyMem_Free (val); return NULL; } tuple = PyTuple_New ((Py_ssize_t) size); if (!tuple) return NULL; for (cnt = 0; cnt < size; cnt++) { item = PyLong_FromLong ((long)val[cnt]); if (!item) { PyMem_Free (val); Py_DECREF (tuple); return NULL; } PyTuple_SET_ITEM (tuple, (Py_ssize_t) cnt, item); } return tuple; } case FLOATARRAY: { PyObject *tuple, *item; ALfloat* val = PyMem_New (ALfloat, size); if (!val) return NULL; alGetSourcefv ((ALuint)bufnum, param, val); if (SetALErrorException (alGetError (), 0)) { PyMem_Free (val); return NULL; } tuple = PyTuple_New ((Py_ssize_t) size); if (!tuple) return NULL; for (cnt = 0; cnt < size; cnt++) { item = PyFloat_FromDouble ((double)val[cnt]); if (!item || PyTuple_SET_ITEM (tuple, (Py_ssize_t) cnt, item) != 0) { PyMem_Free (val); Py_XDECREF (item); Py_DECREF (tuple); return NULL; } } return tuple; } default: PyErr_SetString (PyExc_ValueError, "invalid type specifier"); return NULL; } }
ALvoid CDECL wine_alGetSource3i(ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3) { alGetSource3i(sid, param, value1, value2, value3); }
//***************************************************************************** // alGetSource3i //***************************************************************************** // ALAPI ALvoid ALAPIENTRY alGetSource3i(ALuint sourceName, ALenum param, ALint* v1, ALint* v2, ALint* v3) { AL_VOID_FXN(alGetSource3i(sourceName, param, v1, v2, v3)); }