Hi guys

I am trying to use GIRepository (version 1.38) to retrieve Enumeration details 
and 
I'm wondering how to retrieve C-name of Enum. For example, I have GIEnumInfo 
instance for  GBookmarkFileError 
(https://developer.gnome.org/glib/2.38/glib-Bookmark-file-parser.html#GBookmarkFileError).
Calling /g_base_info_get_name/ gives me BookmarkFileError, not 
GBookmarkFileError.
After looking at *.gir file contents for GLib, I've found that required value 
is stored 
in c:type attribute:

    <enumeration name="BookmarkFileError"
                 c:type="GBookmarkFileError"
                 glib:error-quark="g_bookmark_file_error_quark">
        ...
    </enumeration>

so I expected to be able to get the name using /g_base_info_get_attribute/, 
however, checking available attributes with /g_base_info_iterate_attributes/ 
produced no results. Code used to check attributes (no attribute names/values 
are printed):

// print available attributes, taken from GIRepository manual page
void print_attributes(GIBaseInfo *info)
{
        GIAttributeIter iter = { 0, };
        char * name;
        char * value;
        *while* (g_base_info_iterate_attributes (info, &iter, &name, &value)) {
                g_print ("attribute name: %s value: %s", name, value);
        }
}

int main(int argc, char ** argv)
{
        GIRepository *repo = g_irepository_get_default();
        g_irepository_require(repo, "GLib", NULL, 0, NULL);
        
        gint count = g_irepository_get_n_infos(repo, "GLib");
        
        // find first enum
        int i;
        GIBaseInfo * info = NULL;
        *for* (i = 0; i < count; i++) {
                info = g_irepository_get_info(repo, "GLib", i);
                GIInfoType type = g_base_info_get_type(info);
                *if* (type == GI_INFO_TYPE_ENUM) *break*;
        }

        const gchar * name = g_base_info_get_name(info);
        
        printf("Enum: %s\n", name);
        print_attributes(info);

        *return* 0;
} 
Could you please advise on how is it possible to get C-type name for enum (e.g. 
GBookmarkFileError).
_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to