Lines Matching refs:instance

26 	struct alisp_object * (*func) (struct alisp_instance *instance, struct acall_table * item, struct alisp_object * args);
64 static unsigned int get_flags(struct alisp_instance * instance,
95 delete_tree(instance, car(obj));
97 delete_object(instance, n);
102 static const void *get_ptr(struct alisp_instance * instance,
111 delete_tree(instance, obj);
115 delete_tree(instance, obj);
119 delete_tree(instance, obj);
123 static struct alisp_object * new_lexpr(struct alisp_instance * instance, int err)
127 lexpr = new_object(instance, ALISP_OBJ_CONS);
130 lexpr->value.c.car = new_integer(instance, err);
132 delete_object(instance, lexpr);
135 lexpr->value.c.cdr = new_object(instance, ALISP_OBJ_CONS);
137 delete_object(instance, lexpr->value.c.car);
138 delete_object(instance, lexpr);
144 static struct alisp_object * add_cons(struct alisp_instance * instance,
152 delete_tree(instance, obj);
156 p1 = lexpr->value.c.cdr = new_object(instance, ALISP_OBJ_CONS);
158 p1 = lexpr->value.c.car = new_object(instance, ALISP_OBJ_CONS);
162 delete_tree(instance, obj);
165 p1->value.c.car = new_object(instance, ALISP_OBJ_CONS);
168 p2->value.c.car = new_string(instance, id);
175 delete_tree(instance, p1);
176 delete_tree(instance, obj);
183 static struct alisp_object * add_cons2(struct alisp_instance * instance,
190 delete_tree(instance, obj);
194 p1 = lexpr->value.c.cdr = new_object(instance, ALISP_OBJ_CONS);
196 p1 = lexpr->value.c.car = new_object(instance, ALISP_OBJ_CONS);
200 delete_tree(instance, obj);
207 static struct alisp_object * new_result1(struct alisp_instance * instance,
214 lexpr = new_object(instance, ALISP_OBJ_CONS);
217 lexpr->value.c.car = new_integer(instance, err);
219 delete_object(instance, lexpr);
222 p1 = add_cons(instance, lexpr, 1, ptr_id, new_pointer(instance, ptr));
224 delete_object(instance, lexpr);
230 static struct alisp_object * new_result2(struct alisp_instance * instance,
237 lexpr = new_lexpr(instance, err);
241 p1->value.c.car = new_integer(instance, val);
243 delete_object(instance, lexpr);
249 static struct alisp_object * new_result3(struct alisp_instance * instance,
256 lexpr = new_lexpr(instance, err);
260 p1->value.c.car = new_string(instance, str);
262 delete_object(instance, lexpr);
285 static struct alisp_object * FA_int_pp_strp_int(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
298 name = get_string(p1 = eval(instance, car(args)), NULL);
301 mode = get_flags(instance, p2 = eval(instance, car(cdr(args))), flags, 0);
302 delete_tree(instance, cdr(cdr(args)));
303 delete_object(instance, cdr(args));
304 delete_object(instance, args);
305 delete_tree(instance, p2);
307 delete_tree(instance, p1);
308 return new_result1(instance, err, item->prefix, handle);
311 static struct alisp_object * FA_int_pp_p(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
321 delete_tree(instance, args);
324 p1 = eval(instance, car(args));
325 delete_tree(instance, cdr(args));
326 delete_object(instance, args);
327 handle = (void *)get_ptr(instance, p1, prefix1);
331 return new_result1(instance, err, item->prefix, handle);
334 static struct alisp_object * FA_p_p(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
348 delete_tree(instance, args);
351 p1 = eval(instance, car(args));
352 delete_tree(instance, cdr(args));
353 delete_object(instance, args);
354 handle = (void *)get_ptr(instance, p1, item->prefix);
358 return new_cons_pointer(instance, prefix1, handle);
361 static struct alisp_object * FA_int_p(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
366 p1 = eval(instance, car(args));
367 delete_tree(instance, cdr(args));
368 delete_object(instance, args);
369 handle = (void *)get_ptr(instance, p1, item->prefix);
372 return new_integer(instance, ((snd_int_p_t)item->xfunc)(handle));
375 static struct alisp_object * FA_str_p(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
380 p1 = eval(instance, car(args));
381 delete_tree(instance, cdr(args));
382 delete_object(instance, args);
383 handle = (void *)get_ptr(instance, p1, item->prefix);
386 return new_string(instance, ((snd_str_p_t)item->xfunc)(handle));
389 static struct alisp_object * FA_int_intp(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
394 p1 = eval(instance, car(args));
395 delete_tree(instance, cdr(args));
396 delete_object(instance, args);
398 delete_tree(instance, p1);
402 delete_tree(instance, p1);
404 return new_result2(instance, err, val);
407 static struct alisp_object * FA_int_str(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
412 p1 = eval(instance, car(args));
413 delete_tree(instance, cdr(args));
414 delete_object(instance, args);
417 delete_tree(instance, p1);
421 delete_tree(instance, p1);
422 return new_integer(instance, err);
425 static struct alisp_object * FA_int_int_strp(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
432 p1 = eval(instance, car(args));
433 delete_tree(instance, cdr(args));
434 delete_object(instance, args);
436 delete_tree(instance, p1);
440 delete_tree(instance, p1);
442 return new_result3(instance, err, str);
445 static struct alisp_object * FA_card_info(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
452 p1 = eval(instance, car(args));
453 delete_tree(instance, cdr(args));
454 delete_object(instance, args);
455 handle = (snd_ctl_t *)get_ptr(instance, p1, item->prefix);
459 lexpr = new_lexpr(instance, err);
462 p1 = add_cons(instance, lexpr->value.c.cdr, 0, "id", new_string(instance, snd_ctl_card_info_get_id(&info)));
463 p1 = add_cons(instance, p1, 1, "driver", new_string(instance, snd_ctl_card_info_get_driver(&info)));
464 p1 = add_cons(instance, p1, 1, "name", new_string(instance, snd_ctl_card_info_get_name(&info)));
465 p1 = add_cons(instance, p1, 1, "longname", new_string(instance, snd_ctl_card_info_get_longname(&info)));
466 p1 = add_cons(instance, p1, 1, "mixername", new_string(instance, snd_ctl_card_info_get_mixername(&info)));
467 p1 = add_cons(instance, p1, 1, "components", new_string(instance, snd_ctl_card_info_get_components(&info)));
469 delete_tree(instance, lexpr);
475 static struct alisp_object * create_ctl_elem_id(struct alisp_instance * instance, snd_ctl_elem_id_t * id, struct alisp_object * cons)
477 cons = add_cons(instance, cons, 0, "numid", new_integer(instance, snd_ctl_elem_id_get_numid(id)));
478 cons = add_cons(instance, cons, 1, "iface", new_string(instance, snd_ctl_elem_iface_name(snd_ctl_elem_id_get_interface(id))));
479 cons = add_cons(instance, cons, 1, "dev", new_integer(instance, snd_ctl_elem_id_get_device(id)));
480 cons = add_cons(instance, cons, 1, "subdev", new_integer(instance, snd_ctl_elem_id_get_subdevice(id)));
481 cons = add_cons(instance, cons, 1, "name", new_string(instance, snd_ctl_elem_id_get_name(id)));
482 cons = add_cons(instance, cons, 1, "index", new_integer(instance, snd_ctl_elem_id_get_index(id)));
486 static int parse_ctl_elem_id(struct alisp_instance * instance,
517 delete_tree(instance, p1);
519 delete_object(instance, p1);
524 static struct alisp_object * FA_hctl_find_elem(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
530 handle = (snd_hctl_t *)get_ptr(instance, car(args), item->prefix);
532 delete_tree(instance, cdr(args));
533 delete_object(instance, args);
537 delete_tree(instance, cdr(cdr(args)));
538 delete_object(instance, cdr(args));
539 delete_object(instance, args);
540 if (parse_ctl_elem_id(instance, eval(instance, p1), &id) < 0)
542 return new_cons_pointer(instance, "hctl_elem", snd_hctl_find_elem(handle, &id));
545 static struct alisp_object * FA_hctl_elem_info(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
554 p1 = eval(instance, car(args));
555 delete_tree(instance, cdr(args));
556 delete_object(instance, args);
557 handle = (snd_hctl_elem_t *)get_ptr(instance, p1, item->prefix);
561 lexpr = new_lexpr(instance, err);
565 p1 = add_cons(instance, lexpr->value.c.cdr, 0, "id", p2 = new_object(instance, ALISP_OBJ_CONS));
567 if (create_ctl_elem_id(instance, &id, p2) == NULL) {
568 delete_tree(instance, lexpr);
571 p1 = add_cons(instance, p1, 1, "type", new_string(instance, snd_ctl_elem_type_name(type)));
572 p1 = add_cons(instance, p1, 1, "readable", new_integer(instance, snd_ctl_elem_info_is_readable(&info)));
573 p1 = add_cons(instance, p1, 1, "writable", new_integer(instance, snd_ctl_elem_info_is_writable(&info)));
574 p1 = add_cons(instance, p1, 1, "volatile", new_integer(instance, snd_ctl_elem_info_is_volatile(&info)));
575 p1 = add_cons(instance, p1, 1, "inactive", new_integer(instance, snd_ctl_elem_info_is_inactive(&info)));
576 p1 = add_cons(instance, p1, 1, "locked", new_integer(instance, snd_ctl_elem_info_is_locked(&info)));
577 p1 = add_cons(instance, p1, 1, "isowner", new_integer(instance, snd_ctl_elem_info_is_owner(&info)));
578 p1 = add_cons(instance, p1, 1, "owner", new_integer(instance, snd_ctl_elem_info_get_owner(&info)));
579 p1 = add_cons(instance, p1, 1, "count", new_integer(instance, snd_ctl_elem_info_get_count(&info)));
583 p1 = add_cons(instance, p1, 1, "dimensions", p2 = new_object(instance, ALISP_OBJ_CONS));
585 p2 = add_cons2(instance, p2, idx > 0, new_integer(instance, INTERNAL(snd_ctl_elem_info_get_dimension)(&info, idx)));
591 p1 = add_cons(instance, p1, 1, "items", p2 = new_object(instance, ALISP_OBJ_CONS));
596 p2 = add_cons2(instance, p2, item, &alsa_lisp_nil);
598 p2 = add_cons2(instance, p2, item, new_string(instance, snd_ctl_elem_info_get_item_name(&info)));
604 p1 = add_cons(instance, p1, 1, "min", new_integer(instance, snd_ctl_elem_info_get_min(&info)));
605 p1 = add_cons(instance, p1, 1, "max", new_integer(instance, snd_ctl_elem_info_get_max(&info)));
606 p1 = add_cons(instance, p1, 1, "step", new_integer(instance, snd_ctl_elem_info_get_step(&info)));
609 p1 = add_cons(instance, p1, 1, "min64", new_float(instance, snd_ctl_elem_info_get_min64(&info)));
610 p1 = add_cons(instance, p1, 1, "max64", new_float(instance, snd_ctl_elem_info_get_max64(&info)));
611 p1 = add_cons(instance, p1, 1, "step64", new_float(instance, snd_ctl_elem_info_get_step64(&info)));
617 delete_tree(instance, lexpr);
623 static struct alisp_object * FA_hctl_elem_read(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
633 p1 = eval(instance, car(args));
634 delete_tree(instance, cdr(args));
635 delete_object(instance, args);
636 handle = (snd_hctl_elem_t *)get_ptr(instance, p1, item->prefix);
642 lexpr = new_lexpr(instance, err);
654 obj = new_integer(instance, snd_ctl_elem_value_get_boolean(&value, idx));
657 obj = new_integer(instance, snd_ctl_elem_value_get_integer(&value, idx));
660 obj = new_integer(instance, snd_ctl_elem_value_get_integer64(&value, idx));
663 obj = new_integer(instance, snd_ctl_elem_value_get_enumerated(&value, idx));
666 obj = new_integer(instance, snd_ctl_elem_value_get_byte(&value, idx));
673 p1 = add_cons2(instance, lexpr->value.c.cdr, 0, obj);
675 p1 = add_cons2(instance, p1, 1, obj);
679 delete_tree(instance, lexpr);
685 static struct alisp_object * FA_hctl_elem_write(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
696 obj = eval(instance, car(args));
697 delete_tree(instance, cdr(cdr(args)));
698 delete_object(instance, cdr(args));
699 delete_object(instance, args);
700 handle = (snd_hctl_elem_t *)get_ptr(instance, obj, item->prefix);
702 delete_tree(instance, p1);
707 delete_tree(instance, p1);
708 return new_integer(instance, err);
719 delete_tree(instance, p1);
742 delete_tree(instance, obj);
744 delete_object(instance, obj);
747 return new_integer(instance, err);
750 static struct alisp_object * FA_pcm_info(struct alisp_instance * instance, struct acall_table * item, struct alisp_object * args)
757 p1 = eval(instance, car(args));
758 delete_tree(instance, cdr(args));
759 delete_object(instance, args);
760 handle = (snd_pcm_t *)get_ptr(instance, p1, item->prefix);
764 lexpr = new_lexpr(instance, err);
767 p1 = add_cons(instance, lexpr->value.c.cdr, 0, "card", new_integer(instance, snd_pcm_info_get_card(&info)));
768 p1 = add_cons(instance, p1, 1, "device", new_integer(instance, snd_pcm_info_get_device(&info)));
769 p1 = add_cons(instance, p1, 1, "subdevice", new_integer(instance, snd_pcm_info_get_subdevice(&info)));
770 p1 = add_cons(instance, p1, 1, "id", new_string(instance, snd_pcm_info_get_id(&info)));
771 p1 = add_cons(instance, p1, 1, "name", new_string(instance, snd_pcm_info_get_name(&info)));
772 p1 = add_cons(instance, p1, 1, "subdevice_name", new_string(instance, snd_pcm_info_get_subdevice_name(&info)));
773 p1 = add_cons(instance, p1, 1, "class", new_integer(instance, snd_pcm_info_get_class(&info)));
774 p1 = add_cons(instance, p1, 1, "subclass", new_integer(instance, snd_pcm_info_get_subclass(&info)));
775 p1 = add_cons(instance, p1, 1, "subdevices_count", new_integer(instance, snd_pcm_info_get_subdevices_count(&info)));
776 p1 = add_cons(instance, p1, 1, "subdevices_avail", new_integer(instance, snd_pcm_info_get_subdevices_avail(&info)));
777 //p1 = add_cons(instance, p1, 1, "sync", new_string(instance, snd_pcm_info_get_sync(&info)));
817 static struct alisp_object * F_acall(struct alisp_instance *instance, struct alisp_object * args)
822 p1 = eval(instance, car(args));
824 delete_object(instance, args);
827 delete_tree(instance, p2);
834 delete_tree(instance, p1);
835 return item->func(instance, item, p2);
837 delete_tree(instance, p1);
838 delete_tree(instance, p2);
839 lisp_warn(instance, "acall function %s' is undefined", p1->value.s);
843 static struct alisp_object * F_ahandle(struct alisp_instance *instance, struct alisp_object * args)
847 p1 = eval(instance, car(args));
848 delete_tree(instance, cdr(args));
849 delete_object(instance, args);
851 delete_tree(instance, cdr(cdr(p1)));
852 delete_object(instance, cdr(p1));
853 delete_tree(instance, car(p1));
854 delete_object(instance, p1);
858 static struct alisp_object * F_aerror(struct alisp_instance *instance, struct alisp_object * args)
862 p1 = eval(instance, car(args));
863 delete_tree(instance, cdr(args));
864 delete_object(instance, args);
867 delete_tree(instance, p1);
868 return new_integer(instance, SND_ERROR_ALISP_NIL);
870 delete_tree(instance, cdr(p1));
871 delete_object(instance, p1);
876 static int common_error(snd_output_t **rout, struct alisp_instance *instance, struct alisp_object * args)
884 delete_tree(instance, args);
889 p1 = eval(instance, car(p));
894 delete_tree(instance, p1);
896 delete_object(instance, p1);
903 static struct alisp_object * F_snderr(struct alisp_instance *instance, struct alisp_object * args)
908 if (common_error(&out, instance, args) < 0)
916 static struct alisp_object * F_syserr(struct alisp_instance *instance, struct alisp_object * args)
921 if (common_error(&out, instance, args) < 0)