From 3c06dac7a5ed5f45a8180ce932d919fa43b5d995 Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Sun, 2 Mar 2008 13:11:19 +0000 Subject: [PATCH] support errordomain metadata attribute 2008-03-02 Juerg Billeter * vapigen/valagidlparser.vala: support errordomain metadata attribute * vapi/packages/gio-2.0/: mark GIOError as errordomain, update to glib 2.15.6 * vapi/gio-2.0.vapi: regenerated svn path=/trunk/; revision=1089 --- ChangeLog | 9 ++++ vapi/gio-2.0.vapi | 81 ++++++++++++++++++++-------------- vapi/packages/gio-2.0/gio-2.0.gi | 80 +++++++++++++++++++++++++++------ vapi/packages/gio-2.0/gio-2.0.metadata | 2 +- vapigen/valagidlparser.vala | 30 +++++++++++-- 5 files changed, 149 insertions(+), 53 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2bdb5bd..a959c03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2008-03-02 Jürg Billeter + * vapigen/valagidlparser.vala: support errordomain metadata attribute + + * vapi/packages/gio-2.0/: mark GIOError as errordomain, + update to glib 2.15.6 + + * vapi/gio-2.0.vapi: regenerated + +2008-03-02 Jürg Billeter + * vapi/glib-2.0.vapi: add binding for fflush 2008-03-02 Jürg Billeter diff --git a/vapi/gio-2.0.vapi b/vapi/gio-2.0.vapi index e038c0b..ec21f25 100644 --- a/vapi/gio-2.0.vapi +++ b/vapi/gio-2.0.vapi @@ -53,39 +53,11 @@ namespace GLib { SHORTCUT, MOUNTABLE, } - [CCode (cprefix = "G_IO_ERROR_", cheader_filename = "gio/gio.h")] - public enum IOError { - FAILED, - NOT_FOUND, - EXISTS, - IS_DIRECTORY, - NOT_DIRECTORY, - NOT_EMPTY, - NOT_REGULAR_FILE, - NOT_SYMBOLIC_LINK, - NOT_MOUNTABLE_FILE, - FILENAME_TOO_LONG, - INVALID_FILENAME, - TOO_MANY_LINKS, - NO_SPACE, - INVALID_ARGUMENT, - PERMISSION_DENIED, - NOT_SUPPORTED, - NOT_MOUNTED, - ALREADY_MOUNTED, - CLOSED, - CANCELLED, - PENDING, - READ_ONLY, - CANT_CREATE_BACKUP, - WRONG_ETAG, - TIMED_OUT, - WOULD_RECURSE, - BUSY, - WOULD_BLOCK, - HOST_NOT_FOUND, - WOULD_MERGE, - FAILED_HANDLED, + [CCode (cprefix = "G_FILESYSTEM_PREVIEW_TYPE_", cheader_filename = "gio/gio.h")] + public enum FilesystemPreviewType { + IF_ALWAYS, + IF_LOCAL, + NEVER, } [CCode (cprefix = "G_MOUNT_MOUNT_", cheader_filename = "gio/gio.h")] public enum MountMountFlags { @@ -167,6 +139,40 @@ namespace GLib { CLOSE_SOURCE, CLOSE_TARGET, } + [CCode (cprefix = "G_IO_ERROR_", cheader_filename = "gio/gio.h")] + public errordomain IOError { + FAILED, + NOT_FOUND, + EXISTS, + IS_DIRECTORY, + NOT_DIRECTORY, + NOT_EMPTY, + NOT_REGULAR_FILE, + NOT_SYMBOLIC_LINK, + NOT_MOUNTABLE_FILE, + FILENAME_TOO_LONG, + INVALID_FILENAME, + TOO_MANY_LINKS, + NO_SPACE, + INVALID_ARGUMENT, + PERMISSION_DENIED, + NOT_SUPPORTED, + NOT_MOUNTED, + ALREADY_MOUNTED, + CLOSED, + CANCELLED, + PENDING, + READ_ONLY, + CANT_CREATE_BACKUP, + WRONG_ETAG, + TIMED_OUT, + WOULD_RECURSE, + BUSY, + WOULD_BLOCK, + HOST_NOT_FOUND, + WOULD_MERGE, + FAILED_HANDLED, + } [CCode (cheader_filename = "gio/gio.h")] public class FileAttributeInfo { public weak string name; @@ -564,6 +570,7 @@ namespace GLib { } [CCode (cheader_filename = "gio/gio.h")] public class ThemedIcon : GLib.Object, GLib.Icon { + public void append_name (string iconname); public weak string get_names (); public ThemedIcon (string iconname); public ThemedIcon.from_names (string[] iconnames, int len); @@ -658,6 +665,7 @@ namespace GLib { public bool copy_attributes (GLib.File destination, GLib.FileCopyFlags flags, GLib.Cancellable cancellable) throws GLib.Error; public bool @delete (GLib.Cancellable cancellable) throws GLib.Error; public weak GLib.File get_child (string name); + public bool has_prefix (GLib.File prefix); public bool load_contents (GLib.Cancellable cancellable, out weak string contents, ulong length, out weak string etag_out) throws GLib.Error; public void load_contents_async (GLib.Cancellable cancellable, GLib.AsyncReadyCallback callback); public bool load_contents_finish (GLib.AsyncResult res, out weak string contents, ulong length, out weak string etag_out) throws GLib.Error; @@ -682,7 +690,6 @@ namespace GLib { public abstract weak GLib.FileOutputStream append_to (GLib.FileCreateFlags flags, GLib.Cancellable cancellable) throws GLib.Error; public abstract void append_to_async (GLib.FileCreateFlags flags, int io_priority, GLib.Cancellable cancellable, GLib.AsyncReadyCallback callback); public abstract weak GLib.FileOutputStream append_to_finish (GLib.AsyncResult res) throws GLib.Error; - public abstract bool contains_file (GLib.File descendant); public abstract bool copy (GLib.File destination, GLib.FileCopyFlags flags, GLib.Cancellable cancellable, GLib.FileProgressCallback progress_callback, pointer progress_callback_data) throws GLib.Error; public abstract void copy_async (GLib.File destination, GLib.FileCopyFlags flags, int io_priority, GLib.Cancellable cancellable, GLib.FileProgressCallback progress_callback, pointer progress_callback_data, GLib.AsyncReadyCallback callback); public abstract bool copy_finish (GLib.AsyncResult res) throws GLib.Error; @@ -723,7 +730,11 @@ namespace GLib { public abstract void mount_mountable (GLib.MountMountFlags flags, GLib.MountOperation mount_operation, GLib.Cancellable cancellable, GLib.AsyncReadyCallback callback); public abstract weak GLib.File mount_mountable_finish (GLib.AsyncResult _result) throws GLib.Error; public abstract bool move (GLib.File destination, GLib.FileCopyFlags flags, GLib.Cancellable cancellable, GLib.FileProgressCallback progress_callback, pointer progress_callback_data) throws GLib.Error; + [NoWrapper] + public abstract bool prefix_matches (GLib.File file); public abstract weak GLib.FileInfo query_filesystem_info (string attributes, GLib.Cancellable cancellable) throws GLib.Error; + public abstract void query_filesystem_info_async (string attributes, int io_priority, GLib.Cancellable cancellable, GLib.AsyncReadyCallback callback); + public abstract weak GLib.FileInfo query_filesystem_info_finish (GLib.AsyncResult res) throws GLib.Error; public abstract weak GLib.FileInfo query_info (string attributes, GLib.FileQueryInfoFlags flags, GLib.Cancellable cancellable) throws GLib.Error; public abstract void query_info_async (string attributes, GLib.FileQueryInfoFlags flags, int io_priority, GLib.Cancellable cancellable, GLib.AsyncReadyCallback callback); public abstract weak GLib.FileInfo query_info_finish (GLib.AsyncResult res) throws GLib.Error; @@ -834,6 +845,7 @@ namespace GLib { public const string FILE_ATTRIBUTE_FILESYSTEM_READONLY; public const string FILE_ATTRIBUTE_FILESYSTEM_SIZE; public const string FILE_ATTRIBUTE_FILESYSTEM_TYPE; + public const string FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW; public const string FILE_ATTRIBUTE_GVFS_BACKEND; public const string FILE_ATTRIBUTE_ID_FILE; public const string FILE_ATTRIBUTE_ID_FILESYSTEM; @@ -873,6 +885,7 @@ namespace GLib { public const string FILE_ATTRIBUTE_TIME_CREATED_USEC; public const string FILE_ATTRIBUTE_TIME_MODIFIED; public const string FILE_ATTRIBUTE_TIME_MODIFIED_USEC; + public const string FILE_ATTRIBUTE_TRASH_ITEM_COUNT; public const string FILE_ATTRIBUTE_UNIX_BLOCKS; public const string FILE_ATTRIBUTE_UNIX_BLOCK_SIZE; public const string FILE_ATTRIBUTE_UNIX_DEVICE; diff --git a/vapi/packages/gio-2.0/gio-2.0.gi b/vapi/packages/gio-2.0/gio-2.0.gi index 4950afb..7ae1a2f 100644 --- a/vapi/packages/gio-2.0/gio-2.0.gi +++ b/vapi/packages/gio-2.0/gio-2.0.gi @@ -389,6 +389,11 @@ + + + + + @@ -2611,6 +2616,13 @@ + + + + + + + @@ -3431,13 +3443,6 @@ - - - - - - - @@ -3663,6 +3668,13 @@ + + + + + + + @@ -3849,6 +3861,25 @@ + + + + + + + + + + + + + + + + + + + @@ -4188,13 +4219,6 @@ - - - - - - - @@ -4507,6 +4531,13 @@ + + + + + + + @@ -4516,6 +4547,25 @@ + + + + + + + + + + + + + + + + + + + @@ -5348,6 +5398,7 @@ + @@ -5387,6 +5438,7 @@ + diff --git a/vapi/packages/gio-2.0/gio-2.0.metadata b/vapi/packages/gio-2.0/gio-2.0.metadata index 1ac91ad..0927354 100644 --- a/vapi/packages/gio-2.0/gio-2.0.metadata +++ b/vapi/packages/gio-2.0/gio-2.0.metadata @@ -9,4 +9,4 @@ g_themed_icon_new_from_names.iconnames is_array="1" g_input_stream_read_all.bytes_read is_out="1" g_data_input_stream_read_line.length is_out="1" g_data_input_stream_read_until.length is_out="1" -GIOErrorEnum rename_to="IOError" +GIOErrorEnum rename_to="IOError" errordomain="1" diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index ea210bb..87edd2d 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -238,10 +238,14 @@ public class Vala.GIdlParser : CodeVisitor { continue; } en.name = fix_type_name (en.name, ns); - ns.add_enum (en); + if (en is ErrorDomain) { + ns.add_error_domain (en as ErrorDomain); + } else { + ns.add_enum (en as Enum); + } current_source_file.add_node (en); } else if (node.type == IdlNodeTypeId.FLAGS) { - var en = parse_enum ((IdlNodeEnum) node); + var en = parse_enum ((IdlNodeEnum) node) as Enum; if (en == null) { continue; } @@ -703,7 +707,7 @@ public class Vala.GIdlParser : CodeVisitor { } } - private Enum parse_enum (IdlNodeEnum! en_node) { + private Typesymbol parse_enum (IdlNodeEnum! en_node) { weak IdlNode node = (IdlNode) en_node; var en = new Enum (node.name, current_source_reference); @@ -730,6 +734,8 @@ public class Vala.GIdlParser : CodeVisitor { } } + bool is_errordomain = false; + var en_attributes = get_attributes (node.name); if (en_attributes != null) { foreach (string attr in en_attributes) { @@ -744,6 +750,10 @@ public class Vala.GIdlParser : CodeVisitor { } } else if (nv[0] == "rename_to") { en.name = eval (nv[1]); + } else if (nv[0] == "errordomain") { + if (eval (nv[1]) == "1") { + is_errordomain = true; + } } } } @@ -754,7 +764,19 @@ public class Vala.GIdlParser : CodeVisitor { var ev = new EnumValue (value2.name.offset (common_prefix.len ())); en.add_value (ev); } - + + if (is_errordomain) { + var ed = new ErrorDomain (en.name); + ed.access = SymbolAccessibility.PUBLIC; + ed.set_cprefix (common_prefix); + + foreach (EnumValue ev in en.get_values ()) { + ed.add_code (new ErrorCode (ev.name)); + } + + return ed; + } + return en; } -- 2.7.4