[vala/wip/transform: 72/72] wip
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/wip/transform: 72/72] wip
- Date: Tue, 7 May 2013 20:08:08 +0000 (UTC)
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]