void kvp_frame_set_double(KvpFrame * frame, const char * path, double dval) { KvpValue *value; value = kvp_value_new_double (dval); frame = kvp_frame_set_value_nc (frame, path, value); if (!frame) kvp_value_delete (value); }
static void set_double_val( gpointer pObject, /*@ null @*/ gpointer pValue ) { slot_info_t* pInfo = (slot_info_t*)pObject; KvpValue *value = NULL; g_return_if_fail( pObject != NULL ); if ( pInfo->value_type != KVP_TYPE_DOUBLE || pValue == NULL ) return; value = kvp_value_new_double( *((double*)pValue) ); set_slot_from_value( pInfo, value ); }
KvpValue * kvp_value_copy(const KvpValue * value) { if (!value) return NULL; switch (value->type) { case KVP_TYPE_GINT64: return kvp_value_new_gint64(value->value.int64); break; case KVP_TYPE_DOUBLE: return kvp_value_new_double(value->value.dbl); break; case KVP_TYPE_NUMERIC: return kvp_value_new_gnc_numeric(value->value.numeric); break; case KVP_TYPE_STRING: return kvp_value_new_string(value->value.str); break; case KVP_TYPE_GUID: return kvp_value_new_guid(value->value.guid); break; case KVP_TYPE_GDATE: return kvp_value_new_gdate(value->value.gdate); break; case KVP_TYPE_TIMESPEC: return kvp_value_new_timespec(value->value.timespec); break; case KVP_TYPE_BINARY: return kvp_value_new_binary(value->value.binary.data, value->value.binary.datasize); break; case KVP_TYPE_GLIST: return kvp_value_new_glist(value->value.list); break; case KVP_TYPE_FRAME: return kvp_value_new_frame(value->value.frame); break; default: break; } return NULL; }
KvpValue* kvp_value_from_gvalue (const GValue *gval) { KvpValue *val = NULL; GType type = G_VALUE_TYPE (gval); g_return_val_if_fail (G_VALUE_TYPE (gval), NULL); if (type == G_TYPE_INT64) val = kvp_value_new_gint64 (g_value_get_int64 (gval)); else if (type == G_TYPE_DOUBLE) val = kvp_value_new_double (g_value_get_double (gval)); else if (type == GNC_TYPE_NUMERIC) val = kvp_value_new_numeric (*(gnc_numeric*)g_value_get_boxed (gval)); else if (type == G_TYPE_STRING) val = kvp_value_new_string (g_value_get_string (gval)); else if (type == GNC_TYPE_GUID) val = kvp_value_new_guid ((GncGUID*)g_value_get_boxed (gval)); else if (type == GNC_TYPE_TIMESPEC) val = kvp_value_new_timespec (*(Timespec*)g_value_get_boxed (gval)); else if (type == G_TYPE_DATE) val = kvp_value_new_gdate (*(GDate*)g_value_get_boxed (gval)); else if (type == GNC_TYPE_VALUE_LIST) { GList *gvalue_list = (GList*)g_value_get_boxed (gval); GList *kvp_list = NULL; g_list_foreach (gvalue_list, (GFunc)kvp_value_list_from_gvalue, &kvp_list); kvp_list = g_list_reverse (kvp_list); val = kvp_value_new_glist_nc (kvp_list); // g_list_free_full (gvalue_list, (GDestroyNotify)g_value_unset); // gvalue_list = NULL; } else PWARN ("Error! Don't know how to make a KvpValue from a %s", G_VALUE_TYPE_NAME (gval)); return val; }
void qof_backend_prepare_option(QofBackend *be, const QofBackendOption *option) { KvpValue *value; gchar *temp; gint count; g_return_if_fail(be || option); count = be->config_count; count++; value = NULL; switch (option->type) { case KVP_TYPE_GINT64 : { value = kvp_value_new_gint64(*(gint64*)option->value); break; } case KVP_TYPE_DOUBLE : { value = kvp_value_new_double(*(double*)option->value); break; } case KVP_TYPE_NUMERIC : { value = kvp_value_new_numeric(*(gnc_numeric*)option->value); break; } case KVP_TYPE_STRING : { value = kvp_value_new_string((const char*)option->value); break; } case KVP_TYPE_GUID : { break; /* unsupported */ } case KVP_TYPE_TIMESPEC : { value = kvp_value_new_timespec(*(Timespec*)option->value); break; } case KVP_TYPE_BINARY : { break; /* unsupported */ } case KVP_TYPE_GLIST : { break; /* unsupported */ } case KVP_TYPE_FRAME : { break; /* unsupported */ } case KVP_TYPE_GDATE : { break; /* unsupported */ } } if (value) { temp = g_strdup_printf("/%s", option->option_name); kvp_frame_set_value(be->backend_configuration, temp, value); g_free(temp); temp = g_strdup_printf("/%s/%s", QOF_CONFIG_DESC, option->option_name); kvp_frame_set_string(be->backend_configuration, temp, option->description); g_free(temp); temp = g_strdup_printf("/%s/%s", QOF_CONFIG_TIP, option->option_name); kvp_frame_set_string(be->backend_configuration, temp, option->tooltip); g_free(temp); /* only increment the counter if successful */ be->config_count = count; } }