void printinstparams (int format) { int i, *iarray; long instParamCount; instParamCount = afQueryLong(AF_QUERYTYPE_INSTPARAM, AF_QUERY_ID_COUNT, format, 0, 0); DEBG("instrument parameter query: id count: %ld\n", instParamCount); iarray = afQueryPointer(AF_QUERYTYPE_INSTPARAM, AF_QUERY_IDS, format, 0, 0); if (iarray == NULL) printf("AF_QUERYTYPE_INSTPARAM failed for format %d\n", format); for (i=0; i<instParamCount; i++) { int paramType; AUpvlist defaultValue; DEBG("instrument parameter query: id: %d\n", iarray[i]); paramType = afQueryLong(AF_QUERYTYPE_INSTPARAM, AF_QUERY_TYPE, format, iarray[i], 0); DEBG("\ttype of parameter: %s\n", paramtypename(paramType)); DEBG("\tname of parameter: %s\n", (char *) afQueryPointer(AF_QUERYTYPE_INSTPARAM, AF_QUERY_NAME, format, iarray[i], 0)); defaultValue = afQuery(AF_QUERYTYPE_INSTPARAM, AF_QUERY_DEFAULT, format, iarray[i], 0); if (paramType == AU_PVTYPE_LONG) { long ldefault; AUpvgetval(defaultValue, 0, &ldefault); DEBG("\tdefault value: %ld\n", ldefault); } else if (paramType == AU_PVTYPE_DOUBLE) { double ddefault; AUpvgetval(defaultValue, 0, &ddefault); DEBG("\tdefault value: %f\n", ddefault); } else if (paramType == AU_PVTYPE_PTR) { void *vdefault; AUpvgetval(defaultValue, 0, &vdefault); DEBG("\tdefault value: %p\n", vdefault); } } free(iarray); }
int main (int ac, char **av) { AUpvlist formatlist; int *flist; long lvalue; int i, formatcount; formatlist = afQuery(AF_QUERYTYPE_FILEFMT, AF_QUERY_IDS, 0, 0, 0); formatcount = afQueryLong(AF_QUERYTYPE_FILEFMT, AF_QUERY_ID_COUNT, 0, 0, 0); DEBG("formatcount = %d\n", formatcount); AUpvgetval(formatlist, 0, &flist); AUpvfree(formatlist); for (i=0; i<formatcount; i++) { int format; char *formatstring; format = flist[i]; DEBG("format = %d\n", format); formatstring = afQueryPointer(AF_QUERYTYPE_FILEFMT, AF_QUERY_NAME, format, 0, 0); DEBG("format = %s\n", formatstring); lvalue = afQueryLong(AF_QUERYTYPE_INST, AF_QUERY_SUPPORTED, format, 0, 0); DEBG("instrument query: supported: %ld\n", lvalue); lvalue = afQueryLong(AF_QUERYTYPE_INST, AF_QUERY_MAX_NUMBER, format, 0, 0); DEBG("instrument query: maximum number: %ld\n", lvalue); lvalue = afQueryLong(AF_QUERYTYPE_INSTPARAM, AF_QUERY_SUPPORTED, format, 0, 0); DEBG("instrument parameter query: supported: %ld\n", lvalue); /* Print instrument parameter information only if instrument parameters are supported. */ if (lvalue) printinstparams(format); } free(flist); return 0; }
double afQueryDouble (int querytype, int arg1, int arg2, int arg3, int arg4) { AUpvlist list; int type; double value; list = afQuery(querytype, arg1, arg2, arg3, arg4); if (list == AU_NULL_PVLIST) return -1; AUpvgetvaltype(list, 0, &type); if (type != AU_PVTYPE_DOUBLE) return -1; AUpvgetval(list, 0, &value); AUpvfree(list); return value; }
void *afQueryPointer (int querytype, int arg1, int arg2, int arg3, int arg4) { AUpvlist list; int type; void *value; list = afQuery(querytype, arg1, arg2, arg3, arg4); if (list == AU_NULL_PVLIST) return NULL; AUpvgetvaltype(list, 0, &type); if (type != AU_PVTYPE_PTR) return NULL; AUpvgetval(list, 0, &value); AUpvfree(list); return value; }
long afQueryLong (int querytype, int arg1, int arg2, int arg3, int arg4) { AUpvlist list; int type; long value; list = afQuery(querytype, arg1, arg2, arg3, arg4); if (list == AU_NULL_PVLIST) return -1; AUpvgetvaltype(list, 0, &type); if (type != AU_PVTYPE_LONG) return -1; AUpvgetval(list, 0, &value); AUpvfree(list); return value; }