From: Dan Winship Date: Thu, 19 May 2011 20:12:03 +0000 (-0400) Subject: Deprecate ErrorDomain X-Git-Tag: GOBJECT_INTROSPECTION_1_29_17~79 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4dabe20ed5753bccd2abf8ad02e95ce6ab53036c;p=platform%2Fupstream%2Fgobject-introspection.git Deprecate ErrorDomain The previous ErrorDomain blob was never actually scanned or used, and it was kind of a lame API conceptually. To keep some compatibility, rather than removing the enumeration values, rename them to _INVALID, and don't bump the typelib version. This should in theory allow a new libgirepository to read an old typelib. Based on a patch from Colin Walters https://bugzilla.gnome.org/show_bug.cgi?id=602516 --- diff --git a/Makefile-girepository.am b/Makefile-girepository.am index 3fbcac6..736efc5 100644 --- a/Makefile-girepository.am +++ b/Makefile-girepository.am @@ -5,7 +5,6 @@ girepo_HEADERS = \ girepository/gicallableinfo.h \ girepository/giconstantinfo.h \ girepository/gienuminfo.h \ - girepository/gierrordomaininfo.h \ girepository/gifieldinfo.h \ girepository/gifunctioninfo.h \ girepository/giinterfaceinfo.h \ @@ -51,7 +50,6 @@ libgirepository_1_0_la_SOURCES = \ girepository/gicallableinfo.c \ girepository/giconstantinfo.c \ girepository/gienuminfo.c \ - girepository/gierrordomaininfo.c \ girepository/gifieldinfo.c \ girepository/gifunctioninfo.c \ girepository/ginvoke.c \ diff --git a/girepository/gibaseinfo.c b/girepository/gibaseinfo.c index 057cde7..bfb7743 100644 --- a/girepository/gibaseinfo.c +++ b/girepository/gibaseinfo.c @@ -202,7 +202,6 @@ _g_type_info_init (GIBaseInfo *info, * +----GIArgInfo * +----GICallableInfo * +----GIConstantInfo - * +----GIErrorDomainInfo * +----GIFieldInfo * +----GIPropertyInfo * +----GIRegisteredTypeInfo @@ -299,7 +298,7 @@ g_base_info_get_name (GIBaseInfo *info) case GI_INFO_TYPE_OBJECT: case GI_INFO_TYPE_INTERFACE: case GI_INFO_TYPE_CONSTANT: - case GI_INFO_TYPE_ERROR_DOMAIN: + case GI_INFO_TYPE_INVALID_0: case GI_INFO_TYPE_UNION: { CommonBlob *blob = (CommonBlob *)&rinfo->typelib->data[rinfo->offset]; @@ -421,7 +420,7 @@ g_base_info_is_deprecated (GIBaseInfo *info) case GI_INFO_TYPE_OBJECT: case GI_INFO_TYPE_INTERFACE: case GI_INFO_TYPE_CONSTANT: - case GI_INFO_TYPE_ERROR_DOMAIN: + case GI_INFO_TYPE_INVALID_0: { CommonBlob *blob = (CommonBlob *)&rinfo->typelib->data[rinfo->offset]; diff --git a/girepository/gierrordomaininfo.c b/girepository/gierrordomaininfo.c deleted file mode 100644 index 86e40c5..0000000 --- a/girepository/gierrordomaininfo.c +++ /dev/null @@ -1,95 +0,0 @@ -/* GObject introspection: ErrorDomain implementation - * - * Copyright (C) 2005 Matthias Clasen - * Copyright (C) 2008,2009 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include - -#include -#include "girepository-private.h" -#include "gitypelib-internal.h" - -/** - * SECTION:gierrordomaininfo - * @Short_description: Struct representing an error domain - * @Title: GIErrorDomainInfo - * - * A GIErrorDomainInfo struct represents a domain of a #GError. - * An error domain is associated with a #GQuark and contains a pointer - * to an enum with all the error codes. - * - * - * Struct hierarchy - * - * GIBaseInfo - * +----GIErrorDomainInfo - * - * - */ - -/** - * g_error_domain_info_get_quark: - * @info: a #GIErrorDomainInfo - * - * Obtain a string representing the quark for this error domain. - * %NULL will be returned if the type tag is wrong or if a quark is - * missing in the typelib. - * - * Returns: the quark represented as a string or %NULL - */ -const gchar * -g_error_domain_info_get_quark (GIErrorDomainInfo *info) -{ - GIRealInfo *rinfo = (GIRealInfo *)info; - ErrorDomainBlob *blob; - - g_return_val_if_fail (info != NULL, NULL); - g_return_val_if_fail (GI_IS_ERROR_DOMAIN_INFO (info), NULL); - - blob = (ErrorDomainBlob *)&rinfo->typelib->data[rinfo->offset]; - - return g_typelib_get_string (rinfo->typelib, blob->get_quark); -} - -/** - * g_error_domain_info_get_codes: - * @info: a #GIErrorDomainInfo - * - * Obtain the enum containing all the error codes for this error domain. - * The return value will have a #GIInfoType of %GI_INFO_TYPE_ERROR_DOMAIN - * - * Returns: (transfer full): the error domain or %NULL if type tag is wrong, - * free the struct with g_base_info_unref() when done. - */ -GIInterfaceInfo * -g_error_domain_info_get_codes (GIErrorDomainInfo *info) -{ - GIRealInfo *rinfo = (GIRealInfo *)info; - ErrorDomainBlob *blob; - - g_return_val_if_fail (info != NULL, NULL); - g_return_val_if_fail (GI_IS_ERROR_DOMAIN_INFO (info), NULL); - - blob = (ErrorDomainBlob *)&rinfo->typelib->data[rinfo->offset]; - - return (GIInterfaceInfo *) _g_info_from_entry (rinfo->repository, - rinfo->typelib, blob->error_codes); -} - - diff --git a/girepository/gierrordomaininfo.h b/girepository/gierrordomaininfo.h deleted file mode 100644 index 9c2968b..0000000 --- a/girepository/gierrordomaininfo.h +++ /dev/null @@ -1,44 +0,0 @@ -/* GObject introspection: Error Domain - * - * Copyright (C) 2005 Matthias Clasen - * Copyright (C) 2008,2009 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GIERRORDOMAININFO_H__ -#define __GIERRORDOMAININFO_H__ - -#if !defined (__GIREPOSITORY_H_INSIDE__) && !defined (GI_COMPILATION) -#error "Only can be included directly." -#endif - -#include - -G_BEGIN_DECLS - -#define GI_IS_ERROR_DOMAIN_INFO(info) \ - (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ERROR_DOMAIN) - -const gchar * g_error_domain_info_get_quark (GIErrorDomainInfo *info); -GIInterfaceInfo * g_error_domain_info_get_codes (GIErrorDomainInfo *info); - - -G_END_DECLS - - -#endif /* __GIERRORDOMAININFO_H__ */ - diff --git a/girepository/gifieldinfo.c b/girepository/gifieldinfo.c index 17491a8..4197685 100644 --- a/girepository/gifieldinfo.c +++ b/girepository/gifieldinfo.c @@ -322,7 +322,7 @@ g_field_info_get_field (GIFieldInfo *field_info, case GI_INFO_TYPE_INTERFACE: case GI_INFO_TYPE_FUNCTION: case GI_INFO_TYPE_CONSTANT: - case GI_INFO_TYPE_ERROR_DOMAIN: + case GI_INFO_TYPE_INVALID_0: case GI_INFO_TYPE_VALUE: case GI_INFO_TYPE_SIGNAL: case GI_INFO_TYPE_PROPERTY: @@ -498,7 +498,7 @@ g_field_info_set_field (GIFieldInfo *field_info, case GI_INFO_TYPE_INTERFACE: case GI_INFO_TYPE_FUNCTION: case GI_INFO_TYPE_CONSTANT: - case GI_INFO_TYPE_ERROR_DOMAIN: + case GI_INFO_TYPE_INVALID_0: case GI_INFO_TYPE_VALUE: case GI_INFO_TYPE_SIGNAL: case GI_INFO_TYPE_PROPERTY: diff --git a/girepository/girepository.c b/girepository/girepository.c index c5c464b..1afba0c 100644 --- a/girepository/girepository.c +++ b/girepository/girepository.c @@ -1466,8 +1466,6 @@ g_info_type_to_string (GIInfoType type) return "interface"; case GI_INFO_TYPE_CONSTANT: return "constant"; - case GI_INFO_TYPE_ERROR_DOMAIN: - return "error domain"; case GI_INFO_TYPE_UNION: return "union"; case GI_INFO_TYPE_VALUE: diff --git a/girepository/girepository.h b/girepository/girepository.h index f14b1ad..fddcf8c 100644 --- a/girepository/girepository.h +++ b/girepository/girepository.h @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/girepository/girmodule.c b/girepository/girmodule.c index 49daaa6..f438a19 100644 --- a/girepository/girmodule.c +++ b/girepository/girmodule.c @@ -415,7 +415,7 @@ _g_ir_module_build_typelib (GIrModule *module) header->field_blob_size = sizeof (FieldBlob); header->value_blob_size = sizeof (ValueBlob); header->constant_blob_size = sizeof (ConstantBlob); - header->error_domain_blob_size = sizeof (ErrorDomainBlob); + header->error_domain_blob_size = 16; /* No longer used */ header->attribute_blob_size = sizeof (AttributeBlob); header->signature_blob_size = sizeof (SignatureBlob); header->enum_blob_size = sizeof (EnumBlob); diff --git a/girepository/girnode.c b/girepository/girnode.c index a56471e..1c51bfd 100644 --- a/girepository/girnode.c +++ b/girepository/girnode.c @@ -101,8 +101,6 @@ _g_ir_node_type_to_string (GIrNodeTypeId type) return "value"; case G_IR_NODE_CONSTANT: return "constant"; - case G_IR_NODE_ERROR_DOMAIN: - return "error-domain"; case G_IR_NODE_XREF: return "xref"; case G_IR_NODE_UNION: @@ -175,10 +173,6 @@ _g_ir_node_new (GIrNodeTypeId type, node = g_malloc0 (sizeof (GIrNodeConstant)); break; - case G_IR_NODE_ERROR_DOMAIN: - node = g_malloc0 (sizeof (GIrNodeErrorDomain)); - break; - case G_IR_NODE_XREF: node = g_malloc0 (sizeof (GIrNodeXRef)); break; @@ -379,16 +373,6 @@ _g_ir_node_free (GIrNode *node) } break; - case G_IR_NODE_ERROR_DOMAIN: - { - GIrNodeErrorDomain *domain = (GIrNodeErrorDomain *)node; - - g_free (node->name); - g_free (domain->getquark); - g_free (domain->codes); - } - break; - case G_IR_NODE_XREF: { GIrNodeXRef *xref = (GIrNodeXRef *)node; @@ -535,10 +519,6 @@ _g_ir_node_get_size (GIrNode *node) size = sizeof (ConstantBlob); break; - case G_IR_NODE_ERROR_DOMAIN: - size = sizeof (ErrorDomainBlob); - break; - case G_IR_NODE_XREF: size = 0; break; @@ -665,16 +645,7 @@ _g_ir_node_get_full_size_internal (GIrNode *parent, size += _g_ir_node_get_full_size_internal (node, (GIrNode *)type->parameter_type2); break; case GI_TYPE_TAG_ERROR: - { - gint n; - - if (type->errors) - n = g_strv_length (type->errors); - else - n = 0; - - size += sizeof (ErrorTypeBlob) + 2 * (n + n % 2); - } + size += sizeof (ErrorTypeBlob); break; default: g_error ("Unknown type tag %d\n", type->tag); @@ -844,16 +815,6 @@ _g_ir_node_get_full_size_internal (GIrNode *parent, } break; - case G_IR_NODE_ERROR_DOMAIN: - { - GIrNodeErrorDomain *domain = (GIrNodeErrorDomain *)node; - - size = sizeof (ErrorDomainBlob); - size += ALIGN_VALUE (strlen (node->name) + 1, 4); - size += ALIGN_VALUE (strlen (domain->getquark) + 1, 4); - } - break; - case G_IR_NODE_XREF: { GIrNodeXRef *xref = (GIrNodeXRef *)node; @@ -935,7 +896,7 @@ _g_ir_node_can_have_member (GIrNode *node) case G_IR_NODE_ENUM: case G_IR_NODE_FLAGS: case G_IR_NODE_CONSTANT: - case G_IR_NODE_ERROR_DOMAIN: + case G_IR_NODE_INVALID_0: case G_IR_NODE_PARAM: case G_IR_NODE_TYPE: case G_IR_NODE_PROPERTY: @@ -1559,21 +1520,14 @@ _g_ir_node_build_typelib (GIrNode *node, case GI_TYPE_TAG_ERROR: { ErrorTypeBlob *blob = (ErrorTypeBlob *)&data[*offset2]; - gint i; blob->pointer = 1; blob->reserved = 0; blob->tag = type->tag; blob->reserved2 = 0; - if (type->errors) - blob->n_domains = g_strv_length (type->errors); - else - blob->n_domains = 0; - - *offset2 = ALIGN_VALUE (*offset2 + G_STRUCT_OFFSET (ErrorTypeBlob, domains) - + 2 * blob->n_domains, 4); - for (i = 0; i < blob->n_domains; i++) - blob->domains[i] = find_entry (build, type->errors[i]); + blob->n_domains = 0; + + *offset2 += sizeof (ErrorTypeBlob); } break; @@ -2234,22 +2188,6 @@ _g_ir_node_build_typelib (GIrNode *node, } break; - case G_IR_NODE_ERROR_DOMAIN: - { - GIrNodeErrorDomain *domain = (GIrNodeErrorDomain *)node; - ErrorDomainBlob *blob = (ErrorDomainBlob *)&data[*offset]; - *offset += sizeof (ErrorDomainBlob); - - blob->blob_type = BLOB_TYPE_ERROR_DOMAIN; - blob->deprecated = domain->deprecated; - blob->reserved = 0; - blob->name = _g_ir_write_string (node->name, strings, data, offset2); - blob->get_quark = _g_ir_write_string (domain->getquark, strings, data, offset2); - blob->error_codes = find_entry (build, domain->codes); - blob->reserved2 = 0; - } - break; - case G_IR_NODE_CONSTANT: { GIrNodeConstant *constant = (GIrNodeConstant *)node; diff --git a/girepository/girnode.h b/girepository/girnode.h index 1f9102f..fb2616b 100644 --- a/girepository/girnode.h +++ b/girepository/girnode.h @@ -41,7 +41,6 @@ typedef struct _GIrNodeEnum GIrNodeEnum; typedef struct _GIrNodeBoxed GIrNodeBoxed; typedef struct _GIrNodeStruct GIrNodeStruct; typedef struct _GIrNodeConstant GIrNodeConstant; -typedef struct _GIrNodeErrorDomain GIrNodeErrorDomain; typedef struct _GIrNodeXRef GIrNodeXRef; typedef struct _GIrNodeUnion GIrNodeUnion; @@ -57,7 +56,7 @@ typedef enum G_IR_NODE_OBJECT = 7, G_IR_NODE_INTERFACE = 8, G_IR_NODE_CONSTANT = 9, - G_IR_NODE_ERROR_DOMAIN = 10, + G_IR_NODE_INVALID_0 = 10, /* DELETED - used to be ERROR_DOMAIN */ G_IR_NODE_UNION = 11, G_IR_NODE_PARAM = 12, G_IR_NODE_TYPE = 13, @@ -343,18 +342,6 @@ struct _GIrNodeUnion }; -struct _GIrNodeErrorDomain -{ - GIrNode node; - - gboolean deprecated; - - gchar *name; - gchar *getquark; - gchar *codes; -}; - - GIrNode * _g_ir_node_new (GIrNodeTypeId type, GIrModule *module); void _g_ir_node_free (GIrNode *node); diff --git a/girepository/girparser.c b/girepository/girparser.c index 02c0442..4e55272 100644 --- a/girepository/girparser.c +++ b/girepository/girparser.c @@ -68,13 +68,12 @@ typedef enum STATE_BOXED_FIELD, STATE_STRUCT, STATE_STRUCT_FIELD, - STATE_ERRORDOMAIN, /* 25 */ - STATE_UNION, + STATE_UNION, /* 25 */ STATE_UNION_FIELD, STATE_NAMESPACE_CONSTANT, STATE_CLASS_CONSTANT, - STATE_INTERFACE_CONSTANT, /* 30 */ - STATE_ALIAS, + STATE_INTERFACE_CONSTANT, + STATE_ALIAS, /* 30 */ STATE_TYPE, STATE_ATTRIBUTE, STATE_DOC, @@ -1615,68 +1614,6 @@ start_constant (GMarkupParseContext *context, } static gboolean -start_errordomain (GMarkupParseContext *context, - const gchar *element_name, - const gchar **attribute_names, - const gchar **attribute_values, - ParseContext *ctx, - GError **error) -{ - const gchar *name; - const gchar *getquark; - const gchar *codes; - const gchar *deprecated; - GIrNodeErrorDomain *domain; - - if (!(strcmp (element_name, "errordomain") == 0 && - ctx->state == STATE_NAMESPACE)) - return FALSE; - - if (!introspectable_prelude (context, attribute_names, attribute_values, ctx, STATE_ERRORDOMAIN)) - return TRUE; - - - name = find_attribute ("name", attribute_names, attribute_values); - getquark = find_attribute ("get-quark", attribute_names, attribute_values); - codes = find_attribute ("codes", attribute_names, attribute_values); - deprecated = find_attribute ("deprecated", attribute_names, attribute_values); - - if (name == NULL) - { - MISSING_ATTRIBUTE (context, error, element_name, "name"); - return FALSE; - } - else if (getquark == NULL) - { - MISSING_ATTRIBUTE (context, error, element_name, "getquark"); - return FALSE; - } - else if (codes == NULL) - { - MISSING_ATTRIBUTE (context, error, element_name, "codes"); - return FALSE; - } - - domain = (GIrNodeErrorDomain *) _g_ir_node_new (G_IR_NODE_ERROR_DOMAIN, - ctx->current_module); - - ((GIrNode *)domain)->name = g_strdup (name); - domain->getquark = g_strdup (getquark); - domain->codes = g_strdup (codes); - - if (deprecated) - domain->deprecated = TRUE; - else - domain->deprecated = FALSE; - - push_node (ctx, (GIrNode *) domain); - ctx->current_module->entries = - g_list_append (ctx->current_module->entries, domain); - - return TRUE; -} - -static gboolean start_interface (GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, @@ -2788,10 +2725,6 @@ start_element_handler (GMarkupParseContext *context, attribute_names, attribute_values, ctx, error)) goto out; - else if (start_errordomain (context, element_name, - attribute_names, attribute_values, - ctx, error)) - goto out; break; case 'f': @@ -3290,14 +3223,6 @@ end_element_handler (GMarkupParseContext *context, } break; - case STATE_ERRORDOMAIN: - if (require_end_element (context, ctx, "errordomain", element_name, error)) - { - pop_node (ctx); - state_switch (ctx, STATE_NAMESPACE); - } - break; - case STATE_INTERFACE_PROPERTY: if (strcmp ("type", element_name) == 0) break; diff --git a/girepository/girwriter.c b/girepository/girwriter.c index f6ab34e..2cdc9a1 100644 --- a/girepository/girwriter.c +++ b/girepository/girwriter.c @@ -212,7 +212,6 @@ write_type_info (const gchar *namespace, Xml *file) { gint tag; - gint i; GITypeInfo *type; gboolean is_pointer; @@ -329,24 +328,8 @@ write_type_info (const gchar *namespace, } else if (tag == GI_TYPE_TAG_ERROR) { - gint n; - xml_start_element (file, "type"); xml_printf (file, " name=\"GLib.Error\""); - - n = g_type_info_get_n_error_domains (info); - if (n > 0) - { - for (i = 0; i < n; i++) - { - GIErrorDomainInfo *ed = g_type_info_get_error_domain (info, i); - xml_start_element (file, "type"); - write_type_name_attribute (namespace, (GIBaseInfo *)ed, "name", file); - xml_end_element (file, "type"); - g_base_info_unref ((GIBaseInfo *)ed); - } - } - xml_end_element (file, "type"); } else @@ -1194,25 +1177,6 @@ write_interface_info (const gchar *namespace, } static void -write_error_domain_info (const gchar *namespace, - GIErrorDomainInfo *info, - Xml *file) -{ - GIBaseInfo *enum_; - const gchar *name, *quark; - - name = g_base_info_get_name ((GIBaseInfo *)info); - quark = g_error_domain_info_get_quark (info); - enum_ = (GIBaseInfo *)g_error_domain_info_get_codes (info); - xml_start_element (file, "errordomain"); - xml_printf (file, " name=\"%s\" get-quark=\"%s\"", - name, quark); - write_type_name_attribute (namespace, enum_, "codes", file); - xml_end_element (file, "errordomain"); - g_base_info_unref (enum_); -} - -static void write_union_info (const gchar *namespace, GIUnionInfo *info, Xml *file) @@ -1411,10 +1375,6 @@ gir_writer_write (const char *filename, write_interface_info (ns, (GIInterfaceInfo *)info, xml); break; - case GI_INFO_TYPE_ERROR_DOMAIN: - write_error_domain_info (ns, (GIErrorDomainInfo *)info, xml); - break; - default: g_error ("unknown info type %d\n", g_base_info_get_type (info)); } diff --git a/girepository/gitypeinfo.c b/girepository/gitypeinfo.c index 1bc9b0a..5864f82 100644 --- a/girepository/gitypeinfo.c +++ b/girepository/gitypeinfo.c @@ -340,72 +340,3 @@ g_type_info_get_array_type (GITypeInfo *info) return -1; } - -/** - * g_type_info_get_n_error_domains: - * @info: a #GITypeInfo - * - * Obtain the number of error domains for this type. The type tag - * must be a #GI_TYPE_TAG_ERROR or -1 will be returned. - * - * Returns: number of error domains or -1 - */ -gint -g_type_info_get_n_error_domains (GITypeInfo *info) -{ - GIRealInfo *rinfo = (GIRealInfo *)info; - SimpleTypeBlob *type; - - g_return_val_if_fail (info != NULL, 0); - g_return_val_if_fail (GI_IS_TYPE_INFO (info), 0); - - type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset]; - - if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0)) - { - ErrorTypeBlob *blob = (ErrorTypeBlob *)&rinfo->typelib->data[rinfo->offset]; - - if (blob->tag == GI_TYPE_TAG_ERROR) - return blob->n_domains; - } - - return 0; -} - -/** - * g_type_info_get_error_domain: - * @info: a #GITypeInfo - * @n: index of error domain - * - * Obtain the error domains at index @n for this type. The type tag - * must be a #GI_TYPE_TAG_ERROR or -1 will be returned. - * - * Returns: (transfer full): the error domain or %NULL if type tag is wrong, - * free the struct with g_base_info_unref() when done. - */ -GIErrorDomainInfo * -g_type_info_get_error_domain (GITypeInfo *info, - gint n) -{ - GIRealInfo *rinfo = (GIRealInfo *)info; - SimpleTypeBlob *type; - - g_return_val_if_fail (info != NULL, NULL); - g_return_val_if_fail (GI_IS_TYPE_INFO (info), NULL); - - type = (SimpleTypeBlob *)&rinfo->typelib->data[rinfo->offset]; - - if (!(type->flags.reserved == 0 && type->flags.reserved2 == 0)) - { - ErrorTypeBlob *blob = (ErrorTypeBlob *)&rinfo->typelib->data[rinfo->offset]; - - if (blob->tag == GI_TYPE_TAG_ERROR) - return (GIErrorDomainInfo *) _g_info_from_entry (rinfo->repository, - rinfo->typelib, - blob->domains[n]); - } - - return NULL; -} - - diff --git a/girepository/gitypeinfo.h b/girepository/gitypeinfo.h index 5c4fc83..56e7309 100644 --- a/girepository/gitypeinfo.h +++ b/girepository/gitypeinfo.h @@ -48,9 +48,6 @@ gint g_type_info_get_array_fixed_size(GITypeInfo *info); gboolean g_type_info_is_zero_terminated (GITypeInfo *info); GIArrayType g_type_info_get_array_type (GITypeInfo *info); -gint g_type_info_get_n_error_domains (GITypeInfo *info); -GIErrorDomainInfo *g_type_info_get_error_domain (GITypeInfo *info, - gint n); G_END_DECLS diff --git a/girepository/gitypelib-internal.h b/girepository/gitypelib-internal.h index 593c987..2bda8d9 100644 --- a/girepository/gitypelib-internal.h +++ b/girepository/gitypelib-internal.h @@ -57,7 +57,7 @@ G_BEGIN_DECLS * directory ::= list of entries * * entry ::= blob type, name, namespace, offset - * blob ::= function|callback|struct|boxed|enum|flags|object|interface|constant|errordomain|union + * blob ::= function|callback|struct|boxed|enum|flags|object|interface|constant|union * attributes ::= list of attributes, sorted by offset * attribute ::= offset, key, value * attributedata ::= string data for attributes @@ -156,7 +156,6 @@ Changes since 0.1: * @BLOB_TYPE_OBJECT: An #ObjectBlob * @BLOB_TYPE_INTERFACE: An #InterfaceBlob * @BLOB_TYPE_CONSTANT: A #ConstantBlob - * @BLOB_TYPE_ERROR_DOMAIN: A #ErrorDomainBlob * @BLOB_TYPE_UNION: A #UnionBlob * * The integral value of this enumeration appears in each "Blob" @@ -173,7 +172,7 @@ typedef enum { BLOB_TYPE_OBJECT, BLOB_TYPE_INTERFACE, BLOB_TYPE_CONSTANT, - BLOB_TYPE_ERROR_DOMAIN, + BLOB_TYPE_INVALID_0, /* DELETED - used to be ErrorDomain */ BLOB_TYPE_UNION } GTypelibBlobType; @@ -624,8 +623,6 @@ typedef struct { /** * ErrorTypeBlob: - * @n_domains: The number of domains to follow - * @domains: Indices of the directory entries for the error domains */ typedef struct { guint8 pointer :1; @@ -633,32 +630,12 @@ typedef struct { guint8 tag :5; guint8 reserved2; - guint16 n_domains; + guint16 n_domains; /* Must be 0 */ guint16 domains[]; } ErrorTypeBlob; /** - * ErrorDomainBlob: - * @get_quark: The symbol name of the function which must be called to obtain the - * GQuark for the error domain. - * @error_codes: Index of the InterfaceBlob describing the enumeration which lists - * the possible error codes. - */ -typedef struct { - guint16 blob_type; /* 10 */ - - guint16 deprecated : 1; - guint16 reserved :15; - - guint32 name; - - guint32 get_quark; - guint16 error_codes; - guint16 reserved2; -} ErrorDomainBlob; - -/** * ValueBlob: * @deprecated: Whether this value is deprecated * @unsigned_value: if set, value is a 32-bit unsigned integer cast to gint32 diff --git a/girepository/gitypelib.c b/girepository/gitypelib.c index 6d1333b..3869a6d 100644 --- a/girepository/gitypelib.c +++ b/girepository/gitypelib.c @@ -284,7 +284,6 @@ g_typelib_check_sanity (void) CHECK_SIZE (ArrayTypeBlob, 8); CHECK_SIZE (ParamTypeBlob, 4); CHECK_SIZE (ErrorTypeBlob, 4); - CHECK_SIZE (ErrorDomainBlob, 16); CHECK_SIZE (ValueBlob, 12); CHECK_SIZE (FieldBlob, 16); CHECK_SIZE (RegisteredTypeBlob, 16); @@ -446,7 +445,6 @@ validate_header_basic (const guint8 *memory, header->field_blob_size != sizeof (FieldBlob) || header->value_blob_size != sizeof (ValueBlob) || header->constant_blob_size != sizeof (ConstantBlob) || - header->error_domain_blob_size != sizeof (ErrorDomainBlob) || header->attribute_blob_size != sizeof (AttributeBlob) || header->signature_blob_size != sizeof (SignatureBlob) || header->enum_blob_size != sizeof (EnumBlob) || @@ -607,8 +605,6 @@ validate_error_type_blob (GITypelib *typelib, { ErrorTypeBlob *blob; Header *header; - gint i; - DirEntry *entry; blob = (ErrorTypeBlob*)&typelib->data[offset]; @@ -623,30 +619,6 @@ validate_error_type_blob (GITypelib *typelib, return FALSE; } - for (i = 0; i < blob->n_domains; i++) - { - if (blob->domains[i] == 0 || blob->domains[i] > header->n_entries) - { - g_set_error (error, - G_TYPELIB_ERROR, - G_TYPELIB_ERROR_INVALID_BLOB, - "Invalid directory index %d", blob->domains[i]); - return FALSE; - } - - entry = g_typelib_get_dir_entry (typelib, blob->domains[i]); - - if (entry->blob_type != BLOB_TYPE_ERROR_DOMAIN && - (entry->local || entry->blob_type != BLOB_TYPE_INVALID)) - { - g_set_error (error, - G_TYPELIB_ERROR, - G_TYPELIB_ERROR_INVALID_BLOB, - "Wrong blob type"); - return FALSE; - } - } - return TRUE; } @@ -1825,14 +1797,6 @@ validate_interface_blob (ValidateContext *ctx, } static gboolean -validate_errordomain_blob (GITypelib *typelib, - guint32 offset, - GError **error) -{ - return TRUE; -} - -static gboolean validate_union_blob (GITypelib *typelib, guint32 offset, GError **error) @@ -1891,10 +1855,6 @@ validate_blob (ValidateContext *ctx, if (!validate_constant_blob (typelib, offset, error)) return FALSE; break; - case BLOB_TYPE_ERROR_DOMAIN: - if (!validate_errordomain_blob (typelib, offset, error)) - return FALSE; - break; case BLOB_TYPE_UNION: if (!validate_union_blob (typelib, offset, error)) return FALSE; diff --git a/girepository/gitypes.h b/girepository/gitypes.h index d15b121..cbe4316 100644 --- a/girepository/gitypes.h +++ b/girepository/gitypes.h @@ -151,13 +151,6 @@ typedef GIBaseInfo GIArgInfo; typedef GIBaseInfo GITypeInfo; /** - * GIErrorDomainInfo: - * - * Represents a #GError error domain. - */ -typedef GIBaseInfo GIErrorDomainInfo; - -/** * GIUnresolvedInfo: * * Represents a unresolved type in a typelib. @@ -202,7 +195,6 @@ typedef union _GIArgument GIArgument; * @GI_INFO_TYPE_OBJECT: object, see #GIObjectInfo * @GI_INFO_TYPE_INTERFACE: interface, see #GIInterfaceInfo * @GI_INFO_TYPE_CONSTANT: contant, see #GIConstantInfo - * @GI_INFO_TYPE_ERROR_DOMAIN: error domain for a #GError, see #GIErrorDomainInfo * @GI_INFO_TYPE_UNION: union, see #GIUnionInfo * @GI_INFO_TYPE_VALUE: enum value, see #GIValueInfo * @GI_INFO_TYPE_SIGNAL: signal, see #GISignalInfo @@ -228,7 +220,7 @@ typedef enum GI_INFO_TYPE_OBJECT, GI_INFO_TYPE_INTERFACE, GI_INFO_TYPE_CONSTANT, - GI_INFO_TYPE_ERROR_DOMAIN, /* 10 */ + GI_INFO_TYPE_INVALID_0, /* 10 */ /** DELETED - used to be ERROR_DOMAIN **/ GI_INFO_TYPE_UNION, GI_INFO_TYPE_VALUE, GI_INFO_TYPE_SIGNAL,