static void catch_resource_group_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { CatchResourceGroup *group = CATCH_RESOURCE_GROUP(object); switch (prop_id) { case PROP_FILTER: group->priv->filter = g_value_dup_object(value); g_object_notify_by_pspec(object, pspec); break; case PROP_GROUP: catch_resource_group_set_group(group, g_value_get_object(value)); break; case PROP_RESOURCE_TYPE: group->priv->resource_type = g_value_get_gtype(value); g_object_notify_by_pspec(object, pspec); break; case PROP_SESSION: group->priv->session = g_value_dup_object(value); g_object_notify_by_pspec(object, pspec); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } }
static void web_service_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { WebService *self = WEB_SERVICE (object); switch (property_id) { case PROP_SERVICE_NAME: _g_strset (&self->priv->service_name, g_value_get_string (value)); break; case PROP_SERVICE_ADDRESS: _g_strset (&self->priv->service_address, g_value_get_string (value)); break; case PROP_SERVICE_PROTOCOL: _g_strset (&self->priv->service_protocol, g_value_get_string (value)); break; case PROP_ACCOUNT_TYPE: self->priv->account_type = g_value_get_gtype (value); break; case PROP_CANCELLABLE: _g_object_unref (self->priv->cancellable); self->priv->cancellable = g_value_dup_object (value); break; case PROP_BROWSER: self->priv->browser = g_value_get_pointer (value); break; case PROP_DIALOG: self->priv->dialog = g_value_get_pointer (value); break; default: break; } }
static void ovirt_collection_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { OvirtCollection *collection = OVIRT_COLLECTION(object); switch (prop_id) { case PROP_HREF: collection->priv->href = g_value_dup_string(value); break; case PROP_RESOURCE_TYPE: collection->priv->resource_type = g_value_get_gtype(value); break; case PROP_COLLECTION_XML_NAME: collection->priv->collection_xml_name = g_value_dup_string(value); break; case PROP_RESOURCE_XML_NAME: collection->priv->resource_xml_name = g_value_dup_string(value); break; case PROP_RESOURCES: ovirt_collection_set_resources(collection, g_value_get_boxed(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } }
static void gtk_style_property_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtkStyleProperty *property = GTK_STYLE_PROPERTY (object); GtkStylePropertyClass *klass = GTK_STYLE_PROPERTY_GET_CLASS (property); switch (prop_id) { case PROP_NAME: property->name = g_value_dup_string (value); g_assert (property->name); g_assert (g_hash_table_lookup (klass->properties, property->name) == NULL); g_hash_table_insert (klass->properties, property->name, property); break; case PROP_VALUE_TYPE: property->value_type = g_value_get_gtype (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
void g_sql_result_set_property(GObject *object, guint property_id,const GValue *value, GParamSpec *pspec) { GSQLResult * mobj = (GSQLResult*) object; g_return_if_fail(IS_G_SQL_RESULT(mobj)); switch (property_id) { case G_SQL_RESULT_PROPERTY_TYPE: mobj->connector_type = g_value_get_gtype(value); break; case G_SQL_RESULT_PROPERTY_TYPE_INSTANCE: mobj->connector = g_value_get_object(value); break; case G_SQL_RESULT_PROPERTY_RESULT: mobj->result = g_value_get_pointer(value); break; case G_SQL_RESULT_PROPERTY_FIELDS: mobj->fields = g_value_get_int(value); break; default: g_warn_if_reached(); break; } }
static void gtk_css_node_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { GtkCssNode *cssnode = GTK_CSS_NODE (object); switch (property_id) { case PROP_CLASSES: gtk_css_node_set_classes (cssnode, g_value_get_boxed (value)); break; case PROP_ID: gtk_css_node_set_id (cssnode, g_value_get_string (value)); break; case PROP_STATE: gtk_css_node_set_state (cssnode, g_value_get_flags (value)); break; case PROP_VISIBLE: gtk_css_node_set_visible (cssnode, g_value_get_boolean (value)); break; case PROP_WIDGET_TYPE: gtk_css_node_set_widget_type (cssnode, g_value_get_gtype (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }
static void byzanz_session_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec * pspec) { ByzanzSession *session = BYZANZ_SESSION (object); switch (param_id) { case PROP_FILE: session->file = g_value_dup_object (value); break; case PROP_AREA: session->area = *(cairo_rectangle_int_t *) g_value_get_boxed (value); break; case PROP_WINDOW: session->window = g_value_dup_object (value); break; case PROP_AUDIO: session->record_audio = g_value_get_boolean (value); break; case PROP_ENCODER_TYPE: session->encoder_type = g_value_get_gtype (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } }
static void test_gtype_value (void) { GType type; GValue value = { 0, }; GValue copy = { 0, }; g_value_init (&value, G_TYPE_GTYPE); g_value_set_gtype (&value, G_TYPE_BOXED); type = g_value_get_gtype (&value); g_assert (type == G_TYPE_BOXED); g_value_init (©, G_TYPE_GTYPE); g_value_copy (&value, ©); type = g_value_get_gtype (©); g_assert (type == G_TYPE_BOXED); }
/** * gom_command_builder_set_property: * @object: (in): A #GObject. * @prop_id: (in): The property identifier. * @value: (in): The given property. * @pspec: (in): A #ParamSpec. * * Set a given #GObject property. */ static void gom_command_builder_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GomCommandBuilder *builder = GOM_COMMAND_BUILDER(object); switch (prop_id) { case PROP_ADAPTER: builder->priv->adapter = g_value_dup_object(value); g_object_notify_by_pspec(object, pspec); break; case PROP_FILTER: g_clear_object(&builder->priv->filter); builder->priv->filter = g_value_dup_object(value); g_object_notify_by_pspec(object, pspec); break; case PROP_LIMIT: builder->priv->limit = g_value_get_uint(value); g_object_notify_by_pspec(object, pspec); break; case PROP_M2M_TABLE: builder->priv->m2m_table = g_value_dup_string(value); g_object_notify_by_pspec(object, pspec); break; case PROP_M2M_TYPE: builder->priv->m2m_type = g_value_get_gtype(value); g_object_notify_by_pspec(object, pspec); break; case PROP_OFFSET: builder->priv->offset = g_value_get_uint(value); g_object_notify_by_pspec(object, pspec); break; case PROP_RESOURCE_TYPE: builder->priv->resource_type = g_value_get_gtype(value); g_object_notify_by_pspec(object, pspec); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } }
static void test_param_spec_gtype (void) { GParamSpec *pspec; GValue value = { 0, }; gboolean modified; pspec = g_param_spec_gtype ("gtype", "nick", "blurb", G_TYPE_PARAM, G_PARAM_READWRITE); g_value_init (&value, G_TYPE_GTYPE); g_value_set_gtype (&value, G_TYPE_PARAM); g_assert (g_param_value_defaults (pspec, &value)); g_value_set_gtype (&value, G_TYPE_INT); modified = g_param_value_validate (pspec, &value); g_assert (modified && g_value_get_gtype (&value) == G_TYPE_PARAM); g_value_set_gtype (&value, G_TYPE_PARAM_INT); modified = g_param_value_validate (pspec, &value); g_assert (!modified && g_value_get_gtype (&value) == G_TYPE_PARAM_INT); }
static void mex_proxy_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { MexProxy *proxy = MEX_PROXY (object); MexProxyPrivate *priv = proxy->priv; MexModel *new_model; switch (property_id) { case PROP_MODEL: new_model = g_value_get_object (value); if (priv->model) { GController *controller = mex_model_get_controller (priv->model); g_signal_handlers_disconnect_by_func (controller, mex_proxy_controller_changed_cb, proxy); g_object_unref (priv->model); } priv->model = new_model; if (new_model) g_object_ref (new_model); if (priv->started) { priv->started = FALSE; mex_proxy_start (proxy); } break; case PROP_TYPE: priv->object_type = g_value_get_gtype (value); break; case PROP_LIMIT: mex_proxy_set_limit (proxy, g_value_get_uint (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }
static void gnm_font_button_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec) { GnmFontButton *font_button = GNM_FONT_BUTTON (object); switch (param_id) { case GTK_FONT_CHOOSER_PROP_PREVIEW_TEXT: gnm_font_button_set_preview_text (font_button, g_value_get_string (value)); break; case GTK_FONT_CHOOSER_PROP_SHOW_PREVIEW_ENTRY: gnm_font_button_set_show_preview_entry (font_button, g_value_get_boolean (value)); break; case PROP_TITLE: gnm_font_button_set_title (font_button, g_value_get_string (value)); break; case GTK_FONT_CHOOSER_PROP_FONT_DESC: gnm_font_button_take_font_desc (font_button, g_value_dup_boxed (value)); break; case GTK_FONT_CHOOSER_PROP_FONT: case PROP_FONT_NAME: gnm_font_button_set_font_name (font_button, g_value_get_string (value)); break; case PROP_USE_FONT: gnm_font_button_set_use_font (font_button, g_value_get_boolean (value)); break; case PROP_USE_SIZE: gnm_font_button_set_use_size (font_button, g_value_get_boolean (value)); break; case PROP_SHOW_STYLE: gnm_font_button_set_show_style (font_button, g_value_get_boolean (value)); break; case PROP_SHOW_SIZE: gnm_font_button_set_show_size (font_button, g_value_get_boolean (value)); break; case PROP_DIALOG_TYPE: font_button->priv->dialog_type = g_value_get_gtype (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } }
static void _vala_daemon_helpers_list_helper_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { DaemonHelpersListHelper * self; self = DAEMON_HELPERS_LIST_HELPER (object); switch (property_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; case DAEMON_HELPERS_LIST_HELPER_T_TYPE: self->priv->t_type = g_value_get_gtype (value); break; case DAEMON_HELPERS_LIST_HELPER_T_DUP_FUNC: self->priv->t_dup_func = g_value_get_pointer (value); break; case DAEMON_HELPERS_LIST_HELPER_T_DESTROY_FUNC: self->priv->t_destroy_func = g_value_get_pointer (value); break; } }
static void ges_asset_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { GESAsset *asset = GES_ASSET (object); switch (property_id) { case PROP_TYPE: asset->priv->extractable_type = g_value_get_gtype (value); ges_extractable_register_metas (asset->priv->extractable_type, asset); break; case PROP_ID: asset->priv->id = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }
static void gimp_int_store_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { GimpIntStorePrivate *priv = GIMP_INT_STORE_GET_PRIVATE (object); switch (property_id) { case PROP_USER_DATA_TYPE: priv->user_data_type = g_value_get_gtype (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }
void ags_link_collection_editor_set_property(GObject *gobject, guint prop_id, const GValue *value, GParamSpec *param_spec) { AgsLinkCollectionEditor *link_collection_editor; link_collection_editor = AGS_LINK_COLLECTION_EDITOR(gobject); switch(prop_id){ case PROP_CHANNEL_TYPE: link_collection_editor->channel_type = g_value_get_gtype(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, param_spec); break; } }
static void gom_application_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GomApplication *self = GOM_APPLICATION (object); switch (prop_id) { case PROP_MINER_TYPE: self->miner_type = g_value_get_gtype (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void moto_enum_store_set_property(GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { MotoEnumStore *store = MOTO_ENUM_STORE(object); switch (property_id) { case PROP_ENUM_TYPE: g_return_if_fail(store->enum_class == NULL); store->enum_class = g_type_class_ref(g_value_get_gtype(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } }
static void _katze_array_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { KatzeArray *array = KATZE_ARRAY (object); switch (property_id) { case PROP_TYPE: array->priv->type = g_value_get_gtype (value); break; default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }
static void _vala_daemon_plugin_registrar_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { DaemonPluginRegistrar * self; self = DAEMON_PLUGIN_REGISTRAR (object); switch (property_id) { case DAEMON_PLUGIN_REGISTRAR_PATH: daemon_plugin_registrar_set_Path (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; case DAEMON_PLUGIN_REGISTRAR_T_TYPE: self->priv->t_type = g_value_get_gtype (value); break; case DAEMON_PLUGIN_REGISTRAR_T_DUP_FUNC: self->priv->t_dup_func = g_value_get_pointer (value); break; case DAEMON_PLUGIN_REGISTRAR_T_DESTROY_FUNC: self->priv->t_destroy_func = g_value_get_pointer (value); break; } }
static void ibus_server_set_property (IBusServer *server, guint prop_id, const GValue *value, GParamSpec *pspec) { IBusServerPrivate *priv; priv = IBUS_SERVER_GET_PRIVATE (server); switch (prop_id) { case PROP_CONNECTION_TYPE: { GType type; type = g_value_get_gtype (value); g_assert (g_type_is_a (type, IBUS_TYPE_CONNECTION)); priv->connection_type = type; break; } default: G_OBJECT_WARN_INVALID_PROPERTY_ID (server, prop_id, pspec); } }
static void impl_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { RBDisplayPageMenu *menu = RB_DISPLAY_PAGE_MENU (object); switch (prop_id) { case PROP_MODEL: menu->priv->model = g_value_get_object (value); break; case PROP_ROOT_PAGE: menu->priv->root_page = g_value_get_object (value); break; case PROP_PAGE_TYPE: menu->priv->page_type = g_value_get_gtype (value); break; case PROP_ACTION: menu->priv->action = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void peas_extension_set_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { PeasExtensionSet *set = PEAS_EXTENSION_SET (object); switch (prop_id) { case PROP_ENGINE: set->priv->engine = g_value_get_object (value); break; case PROP_EXTENSION_TYPE: set->priv->exten_type = g_value_get_gtype (value); break; case PROP_CONSTRUCT_PROPERTIES: set_construct_properties (set, g_value_get_pointer (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } }
static void nmt_device_entry_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { NmtDeviceEntry *deventry = NMT_DEVICE_ENTRY (object); NmtDeviceEntryPrivate *priv = NMT_DEVICE_ENTRY_GET_PRIVATE (deventry); const char *interface_name; const char *mac_address; switch (prop_id) { case PROP_LABEL: priv->label = g_value_dup_string (value); break; case PROP_WIDTH: nmt_newt_entry_set_width (priv->entry, g_value_get_int (value)); break; case PROP_HARDWARE_TYPE: priv->hardware_type = g_value_get_gtype (value); priv->arptype = (priv->hardware_type == NM_TYPE_DEVICE_INFINIBAND) ? ARPHRD_INFINIBAND : ARPHRD_ETHER; break; case PROP_INTERFACE_NAME: interface_name = g_value_get_string (value); if (nmt_device_entry_set_interface_name (deventry, interface_name)) update_entry (deventry); break; case PROP_MAC_ADDRESS: mac_address = g_value_get_string (value); if (nmt_device_entry_set_mac_address (deventry, mac_address)) update_entry (deventry); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void mx_list_view_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { switch (property_id) { case PROP_MODEL: mx_list_view_set_model ((MxListView*) object, (ClutterModel*) g_value_get_object (value)); break; case PROP_ITEM_TYPE: mx_list_view_set_item_type ((MxListView*) object, g_value_get_gtype (value)); break; case PROP_FACTORY: mx_list_view_set_factory ((MxListView*) object, (MxItemFactory*) g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }
void gy_value_push(GValue * pval, GITypeInfo * info, gy_Object* o) { GITypeTag tag = g_type_info_get_tag(info); GY_DEBUG("Pushing %s from GValue\n", g_type_tag_to_string(tag)); switch (tag) { /* basic types */ case GI_TYPE_TAG_VOID:{ GITypeInfo * cellinfo = g_type_info_get_param_type(info, 0); if (cellinfo) { GITypeTag ctag = g_type_info_get_tag(cellinfo); GY_DEBUG("void contains %s\n", g_type_tag_to_string(ctag)); g_base_info_unref(cellinfo); } ypush_nil(); break;} case GI_TYPE_TAG_BOOLEAN: *ypush_c(NULL) = g_value_get_boolean(pval); break; case GI_TYPE_TAG_INT8: *ypush_gint8(NULL) = g_value_get_schar(pval); break; case GI_TYPE_TAG_UINT8: *ypush_guint8(NULL)= g_value_get_uchar(pval); break; case GI_TYPE_TAG_INT16: case GI_TYPE_TAG_INT32: *ypush_gint32(NULL) = g_value_get_int(pval); break; case GI_TYPE_TAG_UINT16: case GI_TYPE_TAG_UINT32: *ypush_guint32(NULL) = g_value_get_uint(pval); break; case GI_TYPE_TAG_INT64: ypush_long(g_value_get_int64(pval)); break; case GI_TYPE_TAG_UINT64: ypush_long(g_value_get_uint64(pval)); break; case GI_TYPE_TAG_FLOAT: *ypush_f(NULL)=g_value_get_float(pval); break; case GI_TYPE_TAG_DOUBLE: ypush_double(g_value_get_double(pval)); break; case GI_TYPE_TAG_GTYPE: ypush_long(g_value_get_gtype(pval)); break; case GI_TYPE_TAG_UTF8: case GI_TYPE_TAG_FILENAME: *ypush_q(NULL) = p_strcpy(g_value_get_string(pval)); break; /* array types */ case GI_TYPE_TAG_ARRAY: y_error("array"); break; /* interface types */ case GI_TYPE_TAG_INTERFACE: { GIBaseInfo * itrf = g_type_info_get_interface (info); switch(g_base_info_get_type (itrf)) { case GI_INFO_TYPE_ENUM: ypush_long(g_value_get_enum(pval)); g_base_info_unref(itrf); break; case GI_INFO_TYPE_OBJECT: { GObject * prop=g_value_get_object(pval); g_object_ref_sink(prop); if (!prop) { g_base_info_unref(itrf); y_error("get property failed"); } GY_DEBUG("pushing result... "); ypush_check(1); gy_Object * out = ypush_gy_Object(); out->info=itrf; out->object=prop; out->repo=o->repo; } break; default: g_base_info_unref(itrf); y_error ("fix me: only properties of type object supported yet"); } break; } default: y_error("Unimplemented"); } }
static void set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { SoupSession *session = SOUP_SESSION (object); SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (session); SoupURI *uri; gboolean ca_file_changed = FALSE; const char *new_ca_file, *user_agent; switch (prop_id) { case PROP_PROXY_URI: uri = g_value_get_boxed (value); if (uri) { soup_session_remove_feature_by_type (session, SOUP_TYPE_PROXY_RESOLVER); priv->proxy_resolver = SOUP_PROXY_URI_RESOLVER (soup_proxy_resolver_static_new (uri)); soup_session_add_feature (session, SOUP_SESSION_FEATURE (priv->proxy_resolver)); g_object_unref (priv->proxy_resolver); } else if (priv->proxy_resolver && SOUP_IS_PROXY_RESOLVER_STATIC (priv->proxy_resolver)) soup_session_remove_feature_by_type (session, SOUP_TYPE_PROXY_RESOLVER); soup_session_abort (session); break; case PROP_MAX_CONNS: priv->max_conns = g_value_get_int (value); break; case PROP_MAX_CONNS_PER_HOST: priv->max_conns_per_host = g_value_get_int (value); break; case PROP_USE_NTLM: g_object_set_property (G_OBJECT (priv->auth_manager), SOUP_AUTH_MANAGER_NTLM_USE_NTLM, value); break; case PROP_SSL_CA_FILE: new_ca_file = g_value_get_string (value); if (!safe_str_equal (priv->ssl_ca_file, new_ca_file)) ca_file_changed = TRUE; g_free (priv->ssl_ca_file); priv->ssl_ca_file = g_strdup (new_ca_file); if (ca_file_changed && priv->ssl_creds) { soup_ssl_free_client_credentials (priv->ssl_creds); priv->ssl_creds = NULL; } break; case PROP_ASYNC_CONTEXT: priv->async_context = g_value_get_pointer (value); if (priv->async_context) g_main_context_ref (priv->async_context); break; case PROP_TIMEOUT: priv->io_timeout = g_value_get_uint (value); break; case PROP_USER_AGENT: g_free (priv->user_agent); user_agent = g_value_get_string (value); if (!user_agent) priv->user_agent = NULL; else if (!*user_agent) { priv->user_agent = g_strdup (SOUP_SESSION_USER_AGENT_BASE); } else if (g_str_has_suffix (user_agent, " ")) { priv->user_agent = g_strdup_printf ("%s%s", user_agent, SOUP_SESSION_USER_AGENT_BASE); } else priv->user_agent = g_strdup (user_agent); break; case PROP_IDLE_TIMEOUT: priv->idle_timeout = g_value_get_uint (value); break; case PROP_ADD_FEATURE: soup_session_add_feature (session, g_value_get_object (value)); break; case PROP_ADD_FEATURE_BY_TYPE: soup_session_add_feature_by_type (session, g_value_get_gtype (value)); break; case PROP_REMOVE_FEATURE_BY_TYPE: soup_session_remove_feature_by_type (session, g_value_get_gtype (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
void ags_recall_container_set_property(GObject *gobject, guint prop_id, const GValue *value, GParamSpec *param_spec) { AgsRecallContainer *recall_container; recall_container = AGS_RECALL_CONTAINER(gobject); switch(prop_id){ case PROP_RECALL_AUDIO_TYPE: { GType recall_audio_type; recall_audio_type = (GType) g_value_get_gtype(value); recall_container->recall_audio_type = recall_audio_type; } break; case PROP_RECALL_AUDIO: { AgsRecallAudio *recall_audio; recall_audio = (AgsRecallAudio *) g_value_get_object(value); if(recall_container->recall_audio == recall_audio) return; if(recall_container->recall_audio != NULL){ g_object_unref(G_OBJECT(recall_container->recall_audio)); } if(recall_audio != NULL){ g_object_ref(G_OBJECT(recall_audio)); } recall_container->recall_audio = recall_audio; } break; case PROP_RECALL_AUDIO_RUN_TYPE: { GType recall_audio_run_type; recall_audio_run_type = g_value_get_gtype(value); recall_container->recall_audio_run_type = recall_audio_run_type; } break; case PROP_RECALL_AUDIO_RUN: { AgsRecallAudioRun *recall_audio_run; recall_audio_run = (AgsRecallAudioRun *) g_value_get_object(value); if(recall_audio_run == NULL || g_list_find(recall_container->recall_audio_run, recall_audio_run) != NULL) return; if(recall_audio_run != NULL){ g_object_ref(G_OBJECT(recall_audio_run)); } recall_container->recall_audio_run = g_list_prepend(recall_container->recall_audio_run, recall_audio_run); } break; case PROP_RECALL_CHANNEL_TYPE: { GType recall_channel_type; recall_channel_type = (GType) g_value_get_gtype(value); recall_container->recall_channel_type = recall_channel_type; } break; case PROP_RECALL_CHANNEL: { AgsRecallChannel *recall_channel; recall_channel = (AgsRecallChannel *) g_value_get_object(value); if(recall_channel == NULL || g_list_find(recall_container->recall_channel, recall_channel) != NULL) return; g_object_ref(G_OBJECT(recall_channel)); recall_container->recall_channel = g_list_prepend(recall_container->recall_channel, recall_channel); } break; case PROP_RECALL_CHANNEL_RUN_TYPE: { GType recall_channel_run_type; recall_channel_run_type = (GType) g_value_get_gtype(value); recall_container->recall_channel_run_type = recall_channel_run_type; } break; case PROP_RECALL_CHANNEL_RUN: { AgsRecallChannelRun *recall_channel_run; recall_channel_run = (AgsRecallChannelRun *) g_value_get_object(value); if(recall_channel_run == NULL || g_list_find(recall_container->recall_channel_run, recall_channel_run) != NULL) return; g_object_ref(G_OBJECT(recall_channel_run)); recall_container->recall_channel_run = g_list_prepend(recall_container->recall_channel_run, recall_channel_run); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, param_spec); break; } }
static void test_collection (void) { GValue value = { 0, }; gchar *error; g_value_init (&value, G_TYPE_CHAR); error = collect (&value, 'c'); g_assert (error == NULL); g_assert (g_value_get_char (&value) == 'c'); g_value_unset (&value); g_value_init (&value, G_TYPE_UCHAR); error = collect (&value, 129); g_assert (error == NULL); g_assert (g_value_get_uchar (&value) == 129); g_value_unset (&value); g_value_init (&value, G_TYPE_BOOLEAN); error = collect (&value, TRUE); g_assert (error == NULL); g_assert (g_value_get_boolean (&value) == TRUE); g_value_unset (&value); g_value_init (&value, G_TYPE_INT); error = collect (&value, G_MAXINT); g_assert (error == NULL); g_assert (g_value_get_int (&value) == G_MAXINT); g_value_unset (&value); g_value_init (&value, G_TYPE_UINT); error = collect (&value, G_MAXUINT); g_assert (error == NULL); g_assert (g_value_get_uint (&value) == G_MAXUINT); g_value_unset (&value); g_value_init (&value, G_TYPE_LONG); error = collect (&value, G_MAXLONG); g_assert (error == NULL); g_assert (g_value_get_long (&value) == G_MAXLONG); g_value_unset (&value); g_value_init (&value, G_TYPE_ULONG); error = collect (&value, G_MAXULONG); g_assert (error == NULL); g_assert (g_value_get_ulong (&value) == G_MAXULONG); g_value_unset (&value); g_value_init (&value, G_TYPE_INT64); error = collect (&value, G_MAXINT64); g_assert (error == NULL); g_assert (g_value_get_int64 (&value) == G_MAXINT64); g_value_unset (&value); g_value_init (&value, G_TYPE_UINT64); error = collect (&value, G_MAXUINT64); g_assert (error == NULL); g_assert (g_value_get_uint64 (&value) == G_MAXUINT64); g_value_unset (&value); g_value_init (&value, G_TYPE_FLOAT); error = collect (&value, G_MAXFLOAT); g_assert (error == NULL); g_assert (g_value_get_float (&value) == G_MAXFLOAT); g_value_unset (&value); g_value_init (&value, G_TYPE_DOUBLE); error = collect (&value, G_MAXDOUBLE); g_assert (error == NULL); g_assert (g_value_get_double (&value) == G_MAXDOUBLE); g_value_unset (&value); g_value_init (&value, G_TYPE_STRING); error = collect (&value, "string ?"); g_assert (error == NULL); g_assert (strcmp (g_value_get_string (&value), "string ?") == 0); g_value_unset (&value); g_value_init (&value, G_TYPE_GTYPE); error = collect (&value, G_TYPE_BOXED); g_assert (error == NULL); g_assert (g_value_get_gtype (&value) == G_TYPE_BOXED); }
PyObject * pygi_get_property_value_real (PyGObject *instance, const gchar *attr_name) { GType g_type; GIPropertyInfo *property_info = NULL; char *property_name = g_strdup (attr_name); GParamSpec *pspec = NULL; GValue value = { 0, }; GIArgument arg = { 0, }; PyObject *py_value = NULL; GITypeInfo *type_info = NULL; GITransfer transfer; canonicalize_key (property_name); g_type = pyg_type_from_object ((PyObject *)instance); property_info = _pygi_lookup_property_from_g_type (g_type, property_name); if (property_info == NULL) goto out; pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (instance->obj), attr_name); if (pspec == NULL) goto out; g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); g_object_get_property (instance->obj, attr_name, &value); type_info = g_property_info_get_type (property_info); transfer = g_property_info_get_ownership_transfer (property_info); GITypeTag type_tag = g_type_info_get_tag (type_info); switch (type_tag) { case GI_TYPE_TAG_BOOLEAN: arg.v_boolean = g_value_get_boolean (&value); break; case GI_TYPE_TAG_INT8: arg.v_int8 = g_value_get_schar (&value); break; case GI_TYPE_TAG_INT16: case GI_TYPE_TAG_INT32: if (G_VALUE_HOLDS_LONG (&value)) arg.v_long = g_value_get_long (&value); else arg.v_int = g_value_get_int (&value); break; case GI_TYPE_TAG_INT64: if (G_VALUE_HOLDS_LONG (&value)) arg.v_long = g_value_get_long (&value); else arg.v_int64 = g_value_get_int64 (&value); break; case GI_TYPE_TAG_UINT8: arg.v_uint8 = g_value_get_uchar (&value); break; case GI_TYPE_TAG_UINT16: case GI_TYPE_TAG_UINT32: if (G_VALUE_HOLDS_ULONG (&value)) arg.v_ulong = g_value_get_ulong (&value); else arg.v_uint = g_value_get_uint (&value); break; case GI_TYPE_TAG_UINT64: if (G_VALUE_HOLDS_ULONG (&value)) arg.v_ulong = g_value_get_ulong (&value); else arg.v_uint64 = g_value_get_uint64 (&value); break; case GI_TYPE_TAG_FLOAT: arg.v_float = g_value_get_float (&value); break; case GI_TYPE_TAG_DOUBLE: arg.v_double = g_value_get_double (&value); break; case GI_TYPE_TAG_GTYPE: arg.v_size = g_value_get_gtype (&value); break; case GI_TYPE_TAG_UTF8: case GI_TYPE_TAG_FILENAME: arg.v_string = g_value_dup_string (&value); break; case GI_TYPE_TAG_INTERFACE: { GIBaseInfo *info; GIInfoType info_type; GType type; info = g_type_info_get_interface (type_info); type = g_registered_type_info_get_g_type (info); info_type = g_base_info_get_type (info); g_base_info_unref (info); switch (info_type) { case GI_INFO_TYPE_ENUM: arg.v_int32 = g_value_get_enum (&value); break; case GI_INFO_TYPE_INTERFACE: case GI_INFO_TYPE_OBJECT: arg.v_pointer = g_value_get_object (&value); break; case GI_INFO_TYPE_BOXED: case GI_INFO_TYPE_STRUCT: case GI_INFO_TYPE_UNION: if (g_type_is_a (type, G_TYPE_BOXED)) { arg.v_pointer = g_value_get_boxed (&value); } else if (g_type_is_a (type, G_TYPE_POINTER)) { arg.v_pointer = g_value_get_pointer (&value); } else { PyErr_Format (PyExc_NotImplementedError, "Retrieving properties of type '%s' is not implemented", g_type_name (type)); } break; default: PyErr_Format (PyExc_NotImplementedError, "Retrieving properties of type '%s' is not implemented", g_type_name (type)); goto out; } break; } case GI_TYPE_TAG_GHASH: arg.v_pointer = g_value_get_boxed (&value); break; case GI_TYPE_TAG_GLIST: arg.v_pointer = g_value_get_pointer (&value); break; case GI_TYPE_TAG_ARRAY: { gchar** strings; GArray *arg_items; int i; strings = g_value_get_boxed (&value); if (strings == NULL) arg.v_pointer = NULL; else { arg_items = g_array_sized_new (TRUE, TRUE, sizeof (GIArgument), g_strv_length (strings)); g_array_set_size (arg_items, g_strv_length (strings)); for (i = 0; strings[i] != NULL; ++i) { g_array_index (arg_items, GIArgument, i).v_string = strings[i]; } arg.v_pointer = arg_items; } break; } default: PyErr_Format (PyExc_NotImplementedError, "Retrieving properties of type %s is not implemented", g_type_tag_to_string (g_type_info_get_tag (type_info))); goto out; } py_value = _pygi_argument_to_object (&arg, type_info, transfer); out: g_free (property_name); if (property_info != NULL) g_base_info_unref (property_info); if (type_info != NULL) g_base_info_unref (type_info); return py_value; }