// Convert C-string to a Ruby instance of Ruby type "type" static VALUE typecast(const char *value, long length, const VALUE type, int encoding) { if(NULL == value) { return Qnil; } if (type == rb_cInteger) { return rb_cstr2inum(value, 10); } else if (type == rb_cString) { return DO_STR_NEW(value, length, encoding); } else if (type == rb_cFloat) { return rb_float_new(rb_cstr_to_dbl(value, Qfalse)); } else if (type == rb_cBigDecimal) { return rb_funcall(rb_cBigDecimal, ID_NEW, 1, rb_str_new(value, length)); } else if (type == rb_cDate) { return parse_date(value); } else if (type == rb_cDateTime) { return parse_date_time(value); } else if (type == rb_cTime) { return parse_time(value); } else if (type == rb_cTrueClass) { return (0 == value || 0 == strcmp("0", value)) ? Qfalse : Qtrue; } else if (type == rb_cByteArray) { return rb_funcall(rb_cByteArray, ID_NEW, 1, rb_str_new(value, length)); } else if (type == rb_cClass) { return rb_funcall(mDO, rb_intern("full_const_get"), 1, rb_str_new(value, length)); } else if (type == rb_cObject) { return rb_marshal_load(rb_str_new(value, length)); } else if (type == rb_cNilClass) { return Qnil; } else { return DO_STR_NEW(value, length, encoding); } }
static VALUE typecast(const char *value, long length, const VALUE type, int encoding) { if (type == rb_cInteger) { return rb_cstr2inum(value, 10); } else if (type == rb_cString) { return DO_STR_NEW(value, length, encoding); } else if (type == rb_cFloat) { return rb_float_new(rb_cstr_to_dbl(value, Qfalse)); } else if (type == rb_cBigDecimal) { return rb_funcall(rb_cBigDecimal, ID_NEW, 1, rb_str_new(value, length)); } else if (type == rb_cDate) { return parse_date(value); } else if (type == rb_cDateTime) { return parse_date_time(value); } else if (type == rb_cTime) { return parse_time(value); } else if (type == rb_cTrueClass) { return *value == 't' ? Qtrue : Qfalse; } else if (type == rb_cByteArray) { size_t new_length = 0; char* unescaped = (char *)PQunescapeBytea((unsigned char*)value, &new_length); VALUE byte_array = rb_funcall(rb_cByteArray, ID_NEW, 1, rb_str_new(unescaped, new_length)); PQfreemem(unescaped); return byte_array; } else if (type == rb_cClass) { return rb_funcall(rb_cObject, rb_intern("full_const_get"), 1, rb_str_new(value, length)); } else if (type == rb_cObject) { return rb_marshal_load(rb_str_new(value, length)); } else if (type == rb_cNilClass) { return Qnil; } else { return DO_STR_NEW(value, length, encoding); } }
static gboolean parse_review (AsReview *review, const gchar *our_username, JsonNode *node) { JsonObject *object; gint64 star_rating; g_autofree gchar *id_string = NULL; if (!JSON_NODE_HOLDS_OBJECT (node)) return FALSE; object = json_node_get_object (node); if (g_strcmp0 (our_username, json_object_get_string_member (object, "reviewer_username")) == 0) as_review_add_flags (review, AS_REVIEW_FLAG_SELF); as_review_set_reviewer_name (review, json_object_get_string_member (object, "reviewer_displayname")); as_review_set_summary (review, json_object_get_string_member (object, "summary")); as_review_set_description (review, json_object_get_string_member (object, "review_text")); as_review_set_version (review, json_object_get_string_member (object, "version")); star_rating = json_object_get_int_member (object, "rating"); if (star_rating > 0) as_review_set_rating (review, (gint) (star_rating * 20 - 10)); as_review_set_date (review, parse_date_time (json_object_get_string_member (object, "date_created"))); id_string = g_strdup_printf ("%" G_GINT64_FORMAT, json_object_get_int_member (object, "id")); as_review_add_metadata (review, "ubuntu-id", id_string); return TRUE; }
// Convert C-string to a Ruby instance of Ruby type "type" static VALUE typecast(const char* value, unsigned long length, char* type) { if (NULL == value) return Qnil; if ( strcmp(type, "Class") == 0) { return rb_funcall(mDO, rb_intern("find_const"), 1, TAINTED_STRING(value, length)); } else if ( strcmp(type, "Integer") == 0 || strcmp(type, "Fixnum") == 0 || strcmp(type, "Bignum") == 0 ) { return rb_cstr2inum(value, 10); } else if (0 == strcmp("String", type)) { return TAINTED_STRING(value, length); } else if (0 == strcmp("Float", type) ) { return rb_float_new(rb_cstr_to_dbl(value, Qfalse)); } else if (0 == strcmp("BigDecimal", type) ) { return rb_funcall(rb_cBigDecimal, ID_NEW, 1, TAINTED_STRING(value, length)); } else if (0 == strcmp("TrueClass", type) || 0 == strcmp("FalseClass", type)) { return (0 == value || 0 == strcmp("0", value)) ? Qfalse : Qtrue; } else if (0 == strcmp("Date", type)) { return parse_date(value); } else if (0 == strcmp("DateTime", type)) { return parse_date_time(value); } else if (0 == strcmp("Time", type)) { return parse_time(value); } else { return TAINTED_STRING(value, length); } }
static VALUE typecast(VALUE r_value, const VALUE type) { VALUE r_data; if (type == rb_cInteger) { return TYPE(r_value) == T_FIXNUM || TYPE(r_value) == T_BIGNUM ? r_value : rb_funcall(r_value, DO_ID_TO_I, 0); } else if (type == rb_cString) { if (TYPE(r_value) == T_STRING) return r_value; else if (rb_obj_class(r_value) == cOCI8_CLOB) return rb_funcall(r_value, DO_ID_READ, 0); else return rb_funcall(r_value, DO_ID_TO_S, 0); } else if (type == rb_cFloat) { return TYPE(r_value) == T_FLOAT ? r_value : rb_funcall(r_value, DO_ID_TO_F, 0); } else if (type == rb_cBigDecimal) { VALUE r_string = TYPE(r_value) == T_STRING ? r_value : rb_funcall(r_value, DO_ID_TO_S, 0); return rb_funcall(rb_cBigDecimal, DO_ID_NEW, 1, r_string); } else if (type == rb_cDate) { return parse_date(r_value); } else if (type == rb_cDateTime) { return parse_date_time(r_value); } else if (type == rb_cTime) { return parse_time(r_value); } else if (type == rb_cTrueClass) { return parse_boolean(r_value); } else if (type == rb_cByteArray) { if (rb_obj_class(r_value) == cOCI8_BLOB) r_data = rb_funcall(r_value, DO_ID_READ, 0); else r_data = r_value; return rb_funcall(rb_cByteArray, DO_ID_NEW, 1, r_data); } else if (type == rb_cClass) { return rb_funcall(mDO, DO_ID_FULL_CONST_GET, 1, r_value); } else if (type == rb_cNilClass) { return Qnil; } else { if (rb_obj_class(r_value) == cOCI8_CLOB) return rb_funcall(r_value, DO_ID_READ, 0); else return r_value; } }
static VALUE typecast(sqlite3_stmt *stmt, int i, VALUE ruby_class) { const char *ruby_type; VALUE ruby_value = Qnil; int original_type = sqlite3_column_type(stmt, i); int length = sqlite3_column_bytes(stmt, i); if ( original_type == SQLITE_NULL ) { return ruby_value; } if ( original_type == SQLITE_BLOB ) { return TAINTED_STRING((char*)sqlite3_column_blob(stmt, i), length); } if(ruby_class == Qnil) { switch(original_type) { case SQLITE_INTEGER: { ruby_type = "Integer"; break; } case SQLITE_FLOAT: { ruby_type = "Float"; break; } default: { ruby_type = "String"; break; } } } else { ruby_type = rb_class2name(ruby_class); } if ( strcmp(ruby_type, "Class") == 0) { return rb_funcall(rb_cObject, rb_intern("full_const_get"), 1, TAINTED_STRING((char*)sqlite3_column_text(stmt, i), length)); } else if ( strcmp(ruby_type, "Object") == 0 ) { return rb_marshal_load(rb_str_new2((char*)sqlite3_column_text(stmt, i))); } else if ( strcmp(ruby_type, "TrueClass") == 0 ) { return strcmp((char*)sqlite3_column_text(stmt, i), "t") == 0 ? Qtrue : Qfalse; } else if ( strcmp(ruby_type, "Integer") == 0 || strcmp(ruby_type, "Fixnum") == 0 || strcmp(ruby_type, "Bignum") == 0 ) { return LL2NUM(sqlite3_column_int64(stmt, i)); } else if ( strcmp(ruby_type, "BigDecimal") == 0 ) { return rb_funcall(rb_cBigDecimal, ID_NEW, 1, TAINTED_STRING((char*)sqlite3_column_text(stmt, i), length)); } else if ( strcmp(ruby_type, "Float") == 0 ) { return rb_float_new(sqlite3_column_double(stmt, i)); } else if ( strcmp(ruby_type, "Date") == 0 ) { return parse_date((char*)sqlite3_column_text(stmt, i)); } else if ( strcmp(ruby_type, "DateTime") == 0 ) { return parse_date_time((char*)sqlite3_column_text(stmt, i)); } else if ( strcmp(ruby_type, "Time") == 0 ) { return parse_time((char*)sqlite3_column_text(stmt, i)); } else { return TAINTED_STRING((char*)sqlite3_column_text(stmt, i), length); } }
void change_c::parse_value() { switch (m_property.m_type) { case property_element_c::EBMLT_STRING: parse_ascii_string(); break; case property_element_c::EBMLT_USTRING: parse_unicode_string(); break; case property_element_c::EBMLT_UINT: parse_unsigned_integer(); break; case property_element_c::EBMLT_INT: parse_signed_integer(); break; case property_element_c::EBMLT_BOOL: parse_boolean(); break; case property_element_c::EBMLT_BINARY: parse_binary(); break; case property_element_c::EBMLT_FLOAT: parse_floating_point_number(); break; case property_element_c::EBMLT_DATE: parse_date_time(); break; default: assert(false); } }
int main (int argc, char *argv[]) { time_t t; struct tm tm1; int fmt; if (argc != 3 && argc != 1) error1 ("use: parse_date <fmt-number> <time string>"); if (argc == 3) { fmt = atoi (argv[1]); fprintf (stdout, "format number: %d\ntime string: %s\n", fmt, argv[2]); t = parse_date_time (fmt, argv[2], NULL); } else { t = time (NULL); } fprintf (stdout, "input time: %lu\n", t); tm1 = *gmtime (&t); fprintf (stdout, "%2u:%02u:%02u %2u/%2u/%4u\n", tm1.tm_hour, tm1.tm_min, tm1.tm_sec, tm1.tm_mday, tm1.tm_mon+1, tm1.tm_year+1900); t = local2gm (t); fprintf (stdout, "converted to GM from local: %lu\n", t); tm1 = *gmtime (&t); fprintf (stdout, "%2u:%02u:%02u %2u/%2u/%4u\n", tm1.tm_hour, tm1.tm_min, tm1.tm_sec, tm1.tm_mday, tm1.tm_mon+1, tm1.tm_year+1900); t = gm2local (t); fprintf (stdout, "converted to local from GM: %lu\n", t); tm1 = *gmtime (&t); fprintf (stdout, "%2u:%02u:%02u %2u/%2u/%4u\n", tm1.tm_hour, tm1.tm_min, tm1.tm_sec, tm1.tm_mday, tm1.tm_mon+1, tm1.tm_year+1900); return 0; }
void _camera_import_dialog_run(_camera_import_dialog_t *data) { gtk_widget_show_all(data->dialog); // Populate store // Setup a listener for previews of all files on camera // then initiate fetch of all previews from camera if(data->params->camera!=NULL) { /* setup a camctl listener */ dt_camctl_listener_t listener= {0}; listener.data=data; listener.control_status=_control_status; listener.camera_storage_image_filename=_camera_storage_image_filename; dt_job_t job; dt_camera_get_previews_job_init(&job,data->params->camera, &listener, CAMCTL_IMAGE_PREVIEW_DATA); dt_control_job_set_state_callback(&job,_preview_job_state_changed,data); dt_control_add_job(darktable.control, &job); } else return; // Lets run dialog gtk_label_set_text(GTK_LABEL(data->import.info),_("select the images from the list below that you want to import into a new filmroll")); gboolean all_good=FALSE; g_signal_connect(G_OBJECT(data->dialog),"delete-event",G_CALLBACK(_dialog_close),data); while(!all_good) { gint result = gtk_dialog_run (GTK_DIALOG (data->dialog)); if( result == GTK_RESPONSE_ACCEPT) { GtkTreeIter iter; all_good=TRUE; GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtk_bin_get_child(GTK_BIN(data->import.treeview)))); // Now build up result from store into GList **result if(data->params->result) g_list_free(data->params->result); data->params->result=NULL; GtkTreeModel *model=GTK_TREE_MODEL(data->store); GList *sp= gtk_tree_selection_get_selected_rows(selection,&model); if( sp ) { do { GValue value = { 0, }; gtk_tree_model_get_iter(GTK_TREE_MODEL (data->store),&iter,(GtkTreePath*)sp->data); gtk_tree_model_get_value(GTK_TREE_MODEL (data->store),&iter,1,&value); if (G_VALUE_HOLDS_STRING (&value)) data->params->result = g_list_append(data->params->result,g_strdup(g_value_get_string(&value)) ); } while( (sp=g_list_next(sp)) ); } /* get jobcode from import dialog */ data->params->jobcode = data->import.jobname->value; /* get time override if used */ data->params->time_override = 0; if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->settings.general.date_override))) data->params->time_override = parse_date_time(gtk_entry_get_text(GTK_ENTRY(data->settings.general.date_entry))); if( data->params->jobcode == NULL || data->params->jobcode[0] == '\0' ) { g_free(data->params->jobcode); // might just be a string of length 0 data->params->jobcode = dt_conf_get_string("plugins/capture/camera/import/jobcode"); } else if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->settings.general.date_override)) && data->params->time_override == 0) { GtkWidget *dialog=gtk_message_dialog_new(NULL,GTK_DIALOG_DESTROY_WITH_PARENT,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("please use YYYY-MM-DD format for date override")); g_signal_connect_swapped (dialog, "response",G_CALLBACK (gtk_widget_destroy),dialog); gtk_dialog_run (GTK_DIALOG (dialog)); all_good=FALSE; } } else { data->params->result=NULL; all_good=TRUE; } } // Destroy and quit gtk_widget_destroy (data->dialog); }