vala r1726 - in trunk: . gobject vala vapi vapi/packages/gnome-vfs-2.0 vapigen
- From: jaredm svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r1726 - in trunk: . gobject vala vapi vapi/packages/gnome-vfs-2.0 vapigen
- Date: Wed, 23 Jul 2008 09:28:04 +0000 (UTC)
Author: jaredm
Date: Wed Jul 23 09:28:04 2008
New Revision: 1726
URL: http://svn.gnome.org/viewvc/vala?rev=1726&view=rev
Log:
2008-07-23 Jared Moore <jaredm svn gnome org>
* vala/valainterfacewriter.vala:
* vala/valaclass.vala:
* gobject/valaccodeinterfacebinding.vala:
* gobject/valaccodeclassbinding.vala:
* gobject/valaccodegenerator.vala:
Add [CCode (type_check_function = "BLAH_IS_FOO")] for classes.
* vapigen/valagidlparser.vala:
Add type_check_function metadata.
* vapi/packages/gnome-vfs-2.0/gnome-vfs-2.0.metadata:
Set type_check_function for GnomeVFSDrive, GnomeVFSVolume,
GnomeVFSVolumeMonitor, fixes bug 543693.
* vapi/gnome-vfs-2.0.vapi: regenerated
Modified:
trunk/ChangeLog
trunk/gobject/valaccodeclassbinding.vala
trunk/gobject/valaccodegenerator.vala
trunk/gobject/valaccodeinterfacebinding.vala
trunk/vala/valaclass.vala
trunk/vala/valainterfacewriter.vala
trunk/vapi/gnome-vfs-2.0.vapi
trunk/vapi/packages/gnome-vfs-2.0/gnome-vfs-2.0.metadata
trunk/vapigen/valagidlparser.vala
Modified: trunk/gobject/valaccodeclassbinding.vala
==============================================================================
--- trunk/gobject/valaccodeclassbinding.vala (original)
+++ trunk/gobject/valaccodeclassbinding.vala Wed Jul 23 09:28:04 2008
@@ -89,10 +89,10 @@
decl_frag.append (new CCodeMacroReplacement ("%s_CLASS(klass)".printf (cl.get_upper_case_cname (null)), macro));
macro = "(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))".printf (cl.get_type_id ());
- decl_frag.append (new CCodeMacroReplacement ("%s(obj)".printf (cl.get_upper_case_cname ("IS_")), macro));
+ decl_frag.append (new CCodeMacroReplacement ("%s(obj)".printf (codegen.get_type_check_function (cl)), macro));
macro = "(G_TYPE_CHECK_CLASS_TYPE ((klass), %s))".printf (cl.get_type_id ());
- decl_frag.append (new CCodeMacroReplacement ("%s_CLASS(klass)".printf (cl.get_upper_case_cname ("IS_")), macro));
+ decl_frag.append (new CCodeMacroReplacement ("%s_CLASS(klass)".printf (codegen.get_type_check_function (cl)), macro));
macro = "(G_TYPE_INSTANCE_GET_CLASS ((obj), %s, %sClass))".printf (cl.get_type_id (), cl.get_cname ());
decl_frag.append (new CCodeMacroReplacement ("%s_GET_CLASS(obj)".printf (cl.get_upper_case_cname (null)), macro));
Modified: trunk/gobject/valaccodegenerator.vala
==============================================================================
--- trunk/gobject/valaccodegenerator.vala (original)
+++ trunk/gobject/valaccodegenerator.vala Wed Jul 23 09:28:04 2008
@@ -3506,8 +3506,17 @@
expr.ccodenode = new CCodeBinaryExpression (op, cleft, cright);
}
- static CCodeFunctionCall create_type_check (CCodeNode ccodenode, TypeSymbol type) {
- var ccheck = new CCodeFunctionCall (new CCodeIdentifier (type.get_upper_case_cname ("IS_")));
+ public string get_type_check_function (TypeSymbol type) {
+ var cl = type as Class;
+ if (cl != null && cl.type_check_function != null) {
+ return cl.type_check_function;
+ } else {
+ return type.get_upper_case_cname ("IS_");
+ }
+ }
+
+ CCodeFunctionCall create_type_check (CCodeNode ccodenode, TypeSymbol type) {
+ var ccheck = new CCodeFunctionCall (new CCodeIdentifier (get_type_check_function (type)));
ccheck.add_argument ((CCodeExpression) ccodenode);
return ccheck;
}
@@ -4014,7 +4023,7 @@
var ccheck = new CCodeFunctionCall ();
if ((t is Class && ((Class) t).is_subtype_of (gobject_type)) || t is Interface) {
- var ctype_check = new CCodeFunctionCall (new CCodeIdentifier (t.get_upper_case_cname ("IS_")));
+ var ctype_check = new CCodeFunctionCall (new CCodeIdentifier (get_type_check_function (t)));
ctype_check.add_argument (new CCodeIdentifier (var_name));
CCodeExpression cexpr = ctype_check;
Modified: trunk/gobject/valaccodeinterfacebinding.vala
==============================================================================
--- trunk/gobject/valaccodeinterfacebinding.vala (original)
+++ trunk/gobject/valaccodeinterfacebinding.vala Wed Jul 23 09:28:04 2008
@@ -62,7 +62,7 @@
decl_frag.append (new CCodeMacroReplacement ("%s(obj)".printf (iface.get_upper_case_cname (null)), macro));
macro = "(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))".printf (iface.get_type_id ());
- decl_frag.append (new CCodeMacroReplacement ("%s(obj)".printf (iface.get_upper_case_cname ("IS_")), macro));
+ decl_frag.append (new CCodeMacroReplacement ("%s(obj)".printf (codegen.get_type_check_function (iface)), macro));
macro = "(G_TYPE_INSTANCE_GET_INTERFACE ((obj), %s, %s))".printf (iface.get_type_id (), iface.get_type_cname ());
decl_frag.append (new CCodeMacroReplacement ("%s_GET_INTERFACE(obj)".printf (iface.get_upper_case_cname (null)), macro));
Modified: trunk/vala/valaclass.vala
==============================================================================
--- trunk/vala/valaclass.vala (original)
+++ trunk/vala/valaclass.vala Wed Jul 23 09:28:04 2008
@@ -77,6 +77,13 @@
}
/**
+ * The name of the function to use to check whether a value is an instance of
+ * this class. If this is null then the default type check function should be
+ * used instead.
+ */
+ public string? type_check_function { get; set; }
+
+ /**
* Specifies whether this class has private fields.
*/
public bool has_private_fields { get; private set; }
@@ -570,6 +577,9 @@
if (a.has_argument ("type_signature")) {
type_signature = a.get_string ("type_signature");
}
+ if (a.has_argument ("type_check_function")) {
+ type_check_function = a.get_string ("type_check_function");
+ }
}
/**
Modified: trunk/vala/valainterfacewriter.vala
==============================================================================
--- trunk/vala/valainterfacewriter.vala (original)
+++ trunk/vala/valainterfacewriter.vala Wed Jul 23 09:28:04 2008
@@ -137,6 +137,10 @@
write_string ("cname = \"%s\", ".printf (cl.get_cname ()));
}
+ if (cl.type_check_function != null) {
+ write_string ("type_check_function = \"%s\", ".printf (cl.type_check_function ));
+ }
+
bool first = true;
string cheaders;
foreach (string cheader in cl.get_cheader_filenames ()) {
Modified: trunk/vapi/gnome-vfs-2.0.vapi
==============================================================================
--- trunk/vapi/gnome-vfs-2.0.vapi (original)
+++ trunk/vapi/gnome-vfs-2.0.vapi Wed Jul 23 09:28:04 2008
@@ -734,7 +734,7 @@
}
[Compact]
[CCode (cheader_filename = "libgnomevfs/gnome-vfs.h")]
- public class Address : GLib.Boxed {
+ public class Address {
public weak GnomeVFS.Address dup ();
public bool equal (GnomeVFS.Address b);
public int get_family_type ();
@@ -747,7 +747,7 @@
}
[Compact]
[CCode (ref_function = "gnome_vfs_file_info_ref", unref_function = "gnome_vfs_file_info_unref", cheader_filename = "libgnomevfs/gnome-vfs.h")]
- public class FileInfo : GLib.Boxed {
+ public class FileInfo {
public weak string name;
public GnomeVFS.FileInfoFields valid_fields;
public GnomeVFS.FileType type;
@@ -784,11 +784,11 @@
}
[Compact]
[CCode (cheader_filename = "libgnomevfs/gnome-vfs.h")]
- public class GnomeVfsFindDirectoryResult : GLib.Boxed {
+ public class GnomeVfsFindDirectoryResult {
}
[Compact]
[CCode (cheader_filename = "libgnomevfs/gnome-vfs.h")]
- public class GnomeVfsGetFileInfoResult : GLib.Boxed {
+ public class GnomeVfsGetFileInfoResult {
}
[CCode (cheader_filename = "libgnomevfs/gnome-vfs.h")]
public class ACE : GLib.Object {
@@ -832,7 +832,7 @@
public void set (GnomeVFS.ACE ace);
public void unset (GnomeVFS.ACE ace);
}
- [CCode (cheader_filename = "libgnomevfs/gnome-vfs.h")]
+ [CCode (type_check_function = "GNOME_IS_VFS_DRIVE", cheader_filename = "libgnomevfs/gnome-vfs.h")]
public class Drive : GLib.Object {
public int compare (GnomeVFS.Drive b);
public void eject (GnomeVFS.VolumeOpCallback callback);
@@ -863,7 +863,7 @@
public static weak GnomeVFS.MIMEMonitor get ();
public virtual signal void data_changed ();
}
- [CCode (cheader_filename = "libgnomevfs/gnome-vfs.h")]
+ [CCode (type_check_function = "GNOME_IS_VFS_VOLUME", cheader_filename = "libgnomevfs/gnome-vfs.h")]
public class Volume : GLib.Object {
public int compare (GnomeVFS.Volume b);
public void eject (GnomeVFS.VolumeOpCallback callback);
@@ -885,7 +885,7 @@
public void unmount (GnomeVFS.VolumeOpCallback callback);
public void unref ();
}
- [CCode (cheader_filename = "libgnomevfs/gnome-vfs.h")]
+ [CCode (type_check_function = "GNOME_IS_VFS_VOLUME_MONITOR", cheader_filename = "libgnomevfs/gnome-vfs.h")]
public class VolumeMonitor : GLib.Object {
public weak GLib.List get_connected_drives ();
public weak GnomeVFS.Drive get_drive_by_id (ulong id);
Modified: trunk/vapi/packages/gnome-vfs-2.0/gnome-vfs-2.0.metadata
==============================================================================
--- trunk/vapi/packages/gnome-vfs-2.0/gnome-vfs-2.0.metadata (original)
+++ trunk/vapi/packages/gnome-vfs-2.0/gnome-vfs-2.0.metadata Wed Jul 23 09:28:04 2008
@@ -1,5 +1,8 @@
GnomeVFS cheader_filename="libgnomevfs/gnome-vfs.h"
gnome_vfs_address_new_from_sockaddr hidden="1"
+GnomeVFSDrive type_check_function="GNOME_IS_VFS_DRIVE"
GnomeVFSFileInfo.device hidden="1"
GnomeVFSMimeApplication.priv hidden="1"
GnomeVFSMimeApplication.requires_terminal hidden="1"
+GnomeVFSVolume type_check_function="GNOME_IS_VFS_VOLUME"
+GnomeVFSVolumeMonitor type_check_function="GNOME_IS_VFS_VOLUME_MONITOR"
Modified: trunk/vapigen/valagidlparser.vala
==============================================================================
--- trunk/vapigen/valagidlparser.vala (original)
+++ trunk/vapigen/valagidlparser.vala Wed Jul 23 09:28:04 2008
@@ -843,6 +843,8 @@
if (eval (nv[1]) == "1") {
return;
}
+ } else if (nv[0] == "type_check_function") {
+ cl.type_check_function = eval (nv[1]);
} else if (nv[0] == "abstract") {
if (eval (nv[1]) == "1") {
cl.is_abstract = true;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]