gboolean eab_merging_book_modify_contact (ESourceRegistry *registry, EBookClient *book_client, EContact *contact, EABMergingAsyncCallback cb, gpointer closure) { EContactMergingLookup *lookup; g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), FALSE); lookup = g_new (EContactMergingLookup, 1); lookup->op = E_CONTACT_MERGING_COMMIT; lookup->registry = g_object_ref (registry); lookup->book_client = g_object_ref (book_client); lookup->contact = g_object_ref (contact); lookup->cb = cb; lookup->closure = closure; lookup->avoid = g_list_append (NULL, contact); lookup->match = NULL; add_lookup (lookup); return TRUE; }
void visit_form(Process *process, Obj *env, Obj *bytecodeObj, int *position, Obj *form) { if(eval_error) { return; } else if(form->tag == 'C') { if(form->car->car == NULL) { add_literal(bytecodeObj, position, nil); } else if(HEAD_EQ("quote")) { add_literal(bytecodeObj, position, form->car); } else if(HEAD_EQ("if")) { add_if(process, env, bytecodeObj, position, form); } else if(HEAD_EQ("while")) { add_while(process, env, bytecodeObj, position, form); } else if(HEAD_EQ("do")) { add_do(process, env, bytecodeObj, position, form); } else if(HEAD_EQ("let")) { add_let(process, env, bytecodeObj, position, form); } else if(HEAD_EQ("def")) { add_def(process, env, bytecodeObj, position, form); } else if(HEAD_EQ("reset!")) { add_reset(process, env, bytecodeObj, position, form); } else if(HEAD_EQ("ref")) { add_ref(process, env, bytecodeObj, position, form); } /* else if(HEAD_EQ("or")) { */ /* add_or(process, env, bytecodeObj, position, form); */ /* } */ else if(HEAD_EQ("not")) { add_not(process, env, bytecodeObj, position, form); } else if(HEAD_EQ("fn")) { Obj *lambda = obj_new_lambda(form->cdr->car, form_to_bytecode(process, env, form->cdr->cdr->car), env, form); add_literal(bytecodeObj, position, lambda); } else { add_call(process, env, bytecodeObj, position, form); } } else if(form->tag == 'Y') { add_lookup(bytecodeObj, position, form); } else { add_literal(bytecodeObj, position, form); } /* else { */ /* printf("Bytecode can't handle form: "); */ /* obj_print_cout(form); */ /* exit(1); */ /* } */ }
gboolean eab_merging_book_find_contact (ESourceRegistry *registry, EBookClient *book_client, EContact *contact, EABMergingContactAsyncCallback cb, gpointer closure) { EContactMergingLookup *lookup; lookup = g_new (EContactMergingLookup, 1); lookup->op = E_CONTACT_MERGING_FIND; lookup->registry = g_object_ref (registry); lookup->book_client = g_object_ref (book_client); lookup->contact = g_object_ref (contact); lookup->c_cb = cb; lookup->closure = closure; lookup->avoid = g_list_append (NULL, contact); lookup->match = NULL; add_lookup (lookup); return TRUE; }