size_t free_Segment2(SCM smob) { Segment2 * seg; scm_assert_smob_type(tag_Segment2, smob); seg = (Segment2 *)SCM_SMOB_DATA(smob); DB_PRINTF("free_Segment2\n"); free(seg); return (0); }
void init_Segment2(void) { DB_PRINTF("\ninit_Segment2()\n\n"); tag_Segment2 = scm_make_smob_type("gtSegment2", sizeof(Segment2)); scm_set_smob_mark (tag_Segment2, mark_Segment2); scm_set_smob_free (tag_Segment2, free_Segment2); scm_set_smob_print(tag_Segment2, print_Segment2); scm_c_define_gsubr("gt-segment2?", 1, 0, 0, is_Segment2); scm_c_define_gsubr("gt-make-line2", 4, 0, 0, make_Segment2_line); scm_c_define_gsubr("gt-make-arc2", 6, 0, 0, make_Segment2_arc); }
SCM make_Segment2_line(SCM X1, SCM Y1, SCM X2, SCM Y2) { SCM smob; Segment2 * seg; DB_PRINTF("make_Segment2_line\n"); seg = malloc(sizeof(Segment2)); seg->type = LINE; seg->s.line.start.x = scm_to_double(X1); seg->s.line.start.y = scm_to_double(Y1); seg->s.line.end.x = scm_to_double(X2); seg->s.line.end.y = scm_to_double(Y2); SCM_NEWSMOB( smob, tag_Segment2, seg); return smob; }
SCM make_Segment2_arc(SCM ROT, SCM X, SCM Y, SCM Radius, SCM startTheta, SCM endTheta) { SCM smob; Segment2 * seg; DB_PRINTF("make_Segment2_arc\n"); seg = malloc(sizeof(Segment2)); seg->type = ARC; seg->s.arc.angle.rot = scm_to_int16 (ROT ); seg->s.arc.angle.start = scm_to_double(startTheta); seg->s.arc.angle.end = scm_to_double(endTheta ); seg->s.arc.radius = scm_to_double(Radius ); seg->s.arc.center.x = scm_to_double(X ); seg->s.arc.center.y = scm_to_double(Y ); SCM_NEWSMOB( smob, tag_Segment2, seg); return smob; }
SCM mark_Segment2(SCM smob) { DB_PRINTF("mark_Segment2\n"); return SCM_BOOL_F; }
static INT32 contact_provider_insert(ContentProvider* thiz,ContentProviderDestination dest,const CHAR* col_list,INT32 col_num, ContentValues* values) { ContactProvider* sub_provider =(ContactProvider*) thiz->priv_data; const CHAR* table = NULL; ContentValuesItor itor; ContentValues *values_me, *values_ext; CHAR* values_ret = NULL; INT64 ID; INT32 db_ret=DB_OK; DatabaseStatement* stmt = NULL; DatabaseHandle* db_handle = contact_base_provider_obtain_db_handle(); UINT32 t1 = db_get_ticks(); UINT32 t2 = 0; return_val_if_fail(sub_provider&&db_handle, DB_ERROR); switch (dest) { case CONTACT_PROVIDER_DESTINATION_CONTACTS: table = CONTACT_ME_CONTACTS_TABLE_NAME; break; case CONTACT_PROVIDER_DESTINATION_GROUP: table = CONTACT_ME_GROUP_TABLE_NAME; break; case CONTACT_PROVIDER_DESTINATION_EXTENSION_NUMBER: table = CONTACT_EXTENSION_TABLE_NUMBER_NAME; break; case CONTACT_PROVIDER_DESTINATION_EXTENSION_OTHER: table = CONTACT_EXTENSION_TABLE_OTHER_NAME; break; case CONTACT_PROVIDER_DESTINATION_SIM: table = CONTACT_SIM_TABLE_NAME; break; } if (CONTACT_PROVIDER_DESTINATION_CONTACTS==dest) { INT64 value_group_id,value_main_num_tag; WCHAR* str_name=NULL; values_me = content_values_create(); content_values_get_int(values,"group_id",&value_group_id); content_values_delete_key(values,"group_id"); content_values_put_int(values_me,"group_id",value_group_id); content_values_get_int(values,"main_num_tag",&value_main_num_tag); content_values_delete_key(values,"main_num_tag"); content_values_put_int(values_me,"main_num_tag",value_main_num_tag); content_values_get_string16(values,"name",&str_name); content_values_delete_key(values,"name"); content_values_put_string_16(values_me,"name",str_name); db_ret = db_insert(db_handle,table,values_me); content_values_destroy(values_me); TG_FREE(str_name); ID = db_last_insert_rowid(db_handle); for (itor=content_values_first(values);itor;itor=content_values_next(values,itor)) { const CHAR* key = content_values_get_key(itor); content_values_get_string(values,key,&values_ret); values_ext = content_values_create(); if (0 == strcmp(key,"mobile")) { content_values_put_int(values_ext,"ID",ID); content_values_put_int(values_ext,"tag_id",CONTACT_EXTENSION_TAG_MOBILE); content_values_put_string(values_ext,"value",values_ret); db_ret |= db_insert(db_handle,CONTACT_EXTENSION_TABLE_NUMBER_NAME,values_ext); } else if (0 == strcmp(key,"home")) { content_values_put_int(values_ext,"ID",ID); content_values_put_int(values_ext,"tag_id",CONTACT_EXTENSION_TAG_HOME); content_values_put_string(values_ext,"value",values_ret); db_ret |= db_insert(db_handle,CONTACT_EXTENSION_TABLE_NUMBER_NAME,values_ext); } else if (0 == strcmp(key,"office")) { content_values_put_int(values_ext,"ID",ID); content_values_put_int(values_ext,"tag_id",CONTACT_EXTENSION_TAG_OFFICE); content_values_put_string(values_ext,"value",values_ret); db_ret |= db_insert(db_handle,CONTACT_EXTENSION_TABLE_NUMBER_NAME,values_ext); } else if (0 == strcmp(key,"email")) { content_values_put_int(values_ext,"ID",ID); content_values_put_int(values_ext,"tag_id",CONTACT_EXTENSION_TAG_EMAIL); content_values_put_string(values_ext,"value",values_ret); db_ret |= db_insert(db_handle,CONTACT_EXTENSION_TABLE_OTHER_NAME,values_ext); } content_values_destroy(values_ext); TG_FREE(values_ret); } if (DB_OK == db_ret) { db_ret = (INT32)ID; } else { db_ret = -1; } } else { stmt = db_stmt_build_insert_statement(db_handle,table,col_list,col_num); return_val_if_fail(stmt, DB_ERROR); db_ret= db_stmt_bind_content_values( stmt,(ContentValues*)values); if (db_ret==DB_OK) db_ret=db_stmt_step(stmt); db_stmt_finalize(stmt); } contact_base_provider_release_db_handle(); t2 = db_get_ticks(); DB_PRINTF("contact_provider_insert use %d\n",t2-t1); return db_ret; }