[vala] D-Bus: Support name attribute for members in clients and servers



commit 217a1a82d63ee8e4aedcdf3409de4f12cc38c962
Author: Jürg Billeter <j bitron ch>
Date:   Mon Sep 21 20:44:34 2009 +0200

    D-Bus: Support name attribute for members in clients and servers
    
    Fixes bug 595587.

 codegen/valadbusclientmodule.vala |    8 ++++----
 codegen/valadbusmodule.vala       |    9 +++++++++
 codegen/valadbusservermodule.vala |   16 ++++++++--------
 3 files changed, 21 insertions(+), 12 deletions(-)
---
diff --git a/codegen/valadbusclientmodule.vala b/codegen/valadbusclientmodule.vala
index 239a792..0de4e17 100644
--- a/codegen/valadbusclientmodule.vala
+++ b/codegen/valadbusclientmodule.vala
@@ -1358,7 +1358,7 @@ internal class Vala.DBusClientModule : DBusModule {
 				continue;
 			}
 
-			handle_signal (dbus_iface_name, Symbol.lower_case_to_camel_case (sig.name), generate_dbus_signal_handler (sig, iface), block, ref clastif);
+			handle_signal (dbus_iface_name, get_dbus_name_for_member (sig), generate_dbus_signal_handler (sig, iface), block, ref clastif);
 		}
 	}
 
@@ -1374,7 +1374,7 @@ internal class Vala.DBusClientModule : DBusModule {
 		msgcall.add_argument (destination);
 		msgcall.add_argument (path);
 		msgcall.add_argument (new CCodeConstant ("\"%s\"".printf (dbus_iface_name)));
-		msgcall.add_argument (new CCodeConstant ("\"%s\"".printf (Symbol.lower_case_to_camel_case (m.name))));
+		msgcall.add_argument (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (m))));
 		prefragment.append (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier ("_message"), msgcall)));
 
 		var iter_call = new CCodeFunctionCall (new CCodeIdentifier ("dbus_message_iter_init_append"));
@@ -1948,7 +1948,7 @@ internal class Vala.DBusClientModule : DBusModule {
 		// interface name
 		write_expression (prefragment, string_type, new CCodeIdentifier ("_iter"), new CCodeConstant ("\"%s\"".printf (dbus_iface_name)));
 		// property name
-		write_expression (prefragment, string_type, new CCodeIdentifier ("_iter"), new CCodeConstant ("\"%s\"".printf (Symbol.lower_case_to_camel_case (prop.name))));
+		write_expression (prefragment, string_type, new CCodeIdentifier ("_iter"), new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (prop))));
 
 		cdecl = new CCodeDeclaration (prop.get_accessor.value_type.get_cname ());
 		cdecl.add_declarator (new CCodeVariableDeclarator ("_result"));
@@ -2088,7 +2088,7 @@ internal class Vala.DBusClientModule : DBusModule {
 		// interface name
 		write_expression (prefragment, string_type, new CCodeIdentifier ("_iter"), new CCodeConstant ("\"%s\"".printf (dbus_iface_name)));
 		// property name
-		write_expression (prefragment, string_type, new CCodeIdentifier ("_iter"), new CCodeConstant ("\"%s\"".printf (Symbol.lower_case_to_camel_case (prop.name))));
+		write_expression (prefragment, string_type, new CCodeIdentifier ("_iter"), new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (prop))));
 
 		// property value (as variant)
 		iter_call = new CCodeFunctionCall (new CCodeIdentifier ("dbus_message_iter_open_container"));
diff --git a/codegen/valadbusmodule.vala b/codegen/valadbusmodule.vala
index 1e9cb1f..44018f9 100644
--- a/codegen/valadbusmodule.vala
+++ b/codegen/valadbusmodule.vala
@@ -58,6 +58,15 @@ internal class Vala.DBusModule : GAsyncModule {
 		return dbus.get_string ("name");
 	}
 
+	public string get_dbus_name_for_member (Symbol symbol) {
+		var dbus = symbol.get_attribute ("DBus");
+		if (dbus != null) {
+			return dbus.get_string ("name");
+		}
+
+		return Symbol.lower_case_to_camel_case (symbol.name);
+	}
+
 	bool get_basic_type_info (string signature, out BasicTypeInfo basic_type) {
 		foreach (BasicTypeInfo info in basic_types) {
 			if (info.signature == signature) {
diff --git a/codegen/valadbusservermodule.vala b/codegen/valadbusservermodule.vala
index 54bce3f..c211ecd 100644
--- a/codegen/valadbusservermodule.vala
+++ b/codegen/valadbusservermodule.vala
@@ -521,7 +521,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
 		var msgcall = new CCodeFunctionCall (new CCodeIdentifier ("dbus_message_new_signal"));
 		msgcall.add_argument (new CCodeIdentifier ("_path"));
 		msgcall.add_argument (new CCodeConstant ("\"%s\"".printf (dbus_iface_name)));
-		msgcall.add_argument (new CCodeConstant ("\"%s\"".printf (Symbol.lower_case_to_camel_case (sig.name))));
+		msgcall.add_argument (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (sig))));
 		prefragment.append (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier ("_message"), msgcall)));
 
 		var iter_call = new CCodeFunctionCall (new CCodeIdentifier ("dbus_message_iter_init_append"));
@@ -675,7 +675,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
 				continue;
 			}
 
-			handle_method (dbus_iface_name, Symbol.lower_case_to_camel_case (m.name), generate_dbus_wrapper (m, sym), block, ref clastif);
+			handle_method (dbus_iface_name, get_dbus_name_for_member (m), generate_dbus_wrapper (m, sym), block, ref clastif);
 		}
 	}
 
@@ -768,7 +768,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
 
 			ccmp = new CCodeFunctionCall (new CCodeIdentifier ("strcmp"));
 			ccmp.add_argument (new CCodeIdentifier ("property_name"));
-			ccmp.add_argument (new CCodeConstant ("\"%s\"".printf (Symbol.lower_case_to_camel_case (prop.name))));
+			ccmp.add_argument (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (prop))));
 			var ccheck2 = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, ccmp, new CCodeConstant ("0"));
 
 			var ccheck = new CCodeBinaryExpression (CCodeBinaryOperator.AND, ccheck1, ccheck2);
@@ -973,7 +973,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
 			iter_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("entry_iter")));
 			postfragment.append (new CCodeExpressionStatement (iter_call));
 
-			postfragment.append (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier ("property_name"), new CCodeConstant ("\"%s\"".printf (Symbol.lower_case_to_camel_case (prop.name))))));
+			postfragment.append (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier ("property_name"), new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (prop))))));
 
 			iter_call = new CCodeFunctionCall (new CCodeIdentifier ("dbus_message_iter_append_basic"));
 			iter_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("entry_iter")));
@@ -1151,7 +1151,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
 
 			ccmp = new CCodeFunctionCall (new CCodeIdentifier ("strcmp"));
 			ccmp.add_argument (new CCodeIdentifier ("property_name"));
-			ccmp.add_argument (new CCodeConstant ("\"%s\"".printf (Symbol.lower_case_to_camel_case (prop.name))));
+			ccmp.add_argument (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (prop))));
 			var ccheck2 = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, ccmp, new CCodeConstant ("0"));
 
 			var ccheck = new CCodeBinaryExpression (CCodeBinaryOperator.AND, ccheck1, ccheck2);
@@ -1260,7 +1260,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
 				continue;
 			}
 
-			result += "  <method name=\"%s\">\n".printf (Symbol.lower_case_to_camel_case (m.name));
+			result += "  <method name=\"%s\">\n".printf (get_dbus_name_for_member (m));
 
 			foreach (var param in m.get_parameters ()) {
 				if (param.parameter_type.data_type != null
@@ -1290,7 +1290,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
 			}
 
 			string access = (prop.get_accessor != null ? "read" : "") + (prop.set_accessor != null ? "write" : "");
-			result += "  <property name=\"%s\" type=\"%s\" access=\"%s\"/>\n".printf (Symbol.lower_case_to_camel_case (prop.name), get_type_signature (prop.property_type), access);
+			result += "  <property name=\"%s\" type=\"%s\" access=\"%s\"/>\n".printf (get_dbus_name_for_member (prop), get_type_signature (prop.property_type), access);
 		}
 
 		foreach (var sig in sym.get_signals ()) {
@@ -1301,7 +1301,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
 				continue;
 			}
 
-			result += "  <signal name=\"%s\">\n".printf (Symbol.lower_case_to_camel_case (sig.name));
+			result += "  <signal name=\"%s\">\n".printf (get_dbus_name_for_member (sig));
 
 			foreach (var param in sig.get_parameters ()) {
 				result += "    <arg name=\"%s\" type=\"%s\"/>\n".printf (param.name, get_type_signature (param.parameter_type));



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