コード例 #1
0
ファイル: smobSegment2.c プロジェクト: pallagun/JustAwful
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);
}
コード例 #2
0
ファイル: smobSegment2.c プロジェクト: pallagun/JustAwful
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);
}
コード例 #3
0
ファイル: smobSegment2.c プロジェクト: pallagun/JustAwful
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;
}
コード例 #4
0
ファイル: smobSegment2.c プロジェクト: pallagun/JustAwful
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;
}
コード例 #5
0
ファイル: smobSegment2.c プロジェクト: pallagun/JustAwful
SCM mark_Segment2(SCM smob)
{
  DB_PRINTF("mark_Segment2\n");
  return SCM_BOOL_F;
}
コード例 #6
0
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;

}