[vala/wip/transform: 72/72] wip



commit d7d5fb826a427c1416a2a9b8b8c53e858b68825e
Author: Luca Bruno <lucabru src gnome org>
Date:   Sun May 5 21:31:03 2013 +0200

    wip

 codegen/valagdbusclienttransformer.vala |   44 ++++++++++++++++++++++++++-----
 1 files changed, 37 insertions(+), 7 deletions(-)
---
diff --git a/codegen/valagdbusclienttransformer.vala b/codegen/valagdbusclienttransformer.vala
index 7a30b6a..b1fcd76 100644
--- a/codegen/valagdbusclienttransformer.vala
+++ b/codegen/valagdbusclienttransformer.vala
@@ -333,7 +333,7 @@ public class Vala.GDBusClientTransformer : GVariantTransformer {
                var proxy = new Class (iface.name + "Proxy", iface.source_reference, null);
                proxy.add_base_type (data_type ("GLib.DBusProxy"));
                proxy.add_base_type (SemanticAnalyzer.get_data_type_for_symbol (iface));
-               proxy.access = iface.access;
+               proxy.access = SymbolAccessibility.PRIVATE;
                iface.parent_symbol.add_class (proxy);
 
                generate_dbus_proxy_methods (proxy, iface);
@@ -343,17 +343,50 @@ public class Vala.GDBusClientTransformer : GVariantTransformer {
                check (proxy);
        }
 
+#if 0
        public override void visit_method_call (MethodCall expr) {
-               var m = expr.call.symbol_reference as DynamicMethod;
-               if (m == null || m.dynamic_type.data_type != symbol_from_string ("GLib.DBusProxy")) {
-                       // not a dynamic dbus call
+               var m = expr.call.symbol_reference as Method;
+               var dynamic_dbus_call = m is DynamicMethod && ((DynamicMethod) m).dynamic_type.data_type == 
symbol_from_string ("GLib.DBusProxy");
+               var bus_get_proxy_async = m != null && m == symbol_from_string ("GLib.Bus.get_proxy");
+               if (!dynamic_dbus_call && !bus_get_proxy_async) {
                        base.visit_method_call (expr);
                        return;
                }
 
                push_builder (new CodeBuilder (context, expr.parent_statement, expr.source_reference));
 
+               if (dynamic_dbus_call) {
+                       generate_dynamic_dbus_call (expr);
+               } else if (bus_get_proxy_async) {
+
+                       // var ma = (MemberAccess) expr.call;
+                       // var type_arg = ma.get_type_arguments ().get (0);
+                       // var object_type = type_arg as ObjectType;
+                       // string dbus_iface_name = null;
+                       // if (object_type != null) {
+                       //      var iface = (Interface) object_type.type_symbol;
+
+                       //      if (get_dbus_name (iface) == null) {
+                       //              Report.error (expr.source_reference, "`%s' is not a D-Bus 
interface".printf (iface.get_full_name ()));
+                       //              return;
+                       //      }
+
+                       //      // proxy_type = new CCodeIdentifier ("%s_PROXY".printf (get_ccode_type_id 
(iface)));
+                       //      // dbus_iface_name = new CCodeConstant ("\"%s\"".printf (get_dbus_name 
(iface)));
+                       // }
+                       // var call = expression ("AsyncInitable.new_async (typeof (%s), 
GLib.Priority.DEFAULT, null, $ready, \"g-flags\", 0, \"g-name\"
+                       // g_async_initable_new_async (ZEITGEIST_TYPE_REMOTE_SIMPLE_INDEXER_PROXY, 0, NULL, 
___lambda6__gasync_ready_callback, g_object_ref (self), "g-flags", 0, "g-name", 
ZEITGEIST_UTILS_ENGINE_DBUS_NAME, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", 
"/org/gnome/zeitgeist/index/activity", "g-interface-name", "org.gnome.zeitgeist.Index", NULL);
+               }
+
+               pop_builder ();
+
+               base.visit_method_call (expr);
+       }
+#endif
+
+       private void generate_dynamic_dbus_call (MethodCall expr) {
                Method wrapper;
+               var m = (Method) expr.call.symbol_reference;
                var cache_key = "gdbus_client_dynamic_method_call " + m.return_type.to_string ();
                foreach (var param in m.get_parameters ()) {
                        cache_key = "%s %s".printf (cache_key, param.variable_type.to_string ());
@@ -366,9 +399,6 @@ public class Vala.GDBusClientTransformer : GVariantTransformer {
                        generate_marshalling (m, null, m.name);
                        check (wrapper);
                }
-
-               pop_builder ();
                expr.call.symbol_reference = wrapper;
-               base.visit_method_call (expr);
        }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]