gdbus-codegen: make members of an interface inherit the "Since" annotation
authorDavid Zeuthen <zeuthen@gmail.com>
Wed, 3 Oct 2012 15:07:57 +0000 (11:07 -0400)
committerDavid Zeuthen <zeuthen@gmail.com>
Wed, 3 Oct 2012 15:13:12 +0000 (11:13 -0400)
This is the expected (and sane) behavior - without this bug-fix you'd
have to add "Since" to every member of a newly added D-Bus interface.

Also show-case this in the codegen example.

Signed-off-by: David Zeuthen <zeuthen@gmail.com>
docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-sections.txt
gio/gdbus-2.0/codegen/dbustypes.py
gio/tests/gdbus-object-manager-example/gdbus-example-objectmanager.xml

index a5594ae..1e3b8b8 100644 (file)
@@ -11,8 +11,14 @@ example_animal_call_poke_sync
 example_animal_complete_poke
 example_animal_emit_jumped
 example_animal_get_mood
+example_animal_get_foo
+example_animal_get_bar
 example_animal_dup_mood
+example_animal_dup_foo
+example_animal_dup_bar
 example_animal_set_mood
+example_animal_set_foo
+example_animal_set_bar
 ExampleAnimalProxy
 ExampleAnimalProxyClass
 example_animal_proxy_new
index 5fdb9a1..38eb0c4 100644 (file)
@@ -235,11 +235,13 @@ class Method:
         self.since = ''
         self.deprecated = False
 
-    def post_process(self, interface_prefix, cns, cns_upper, cns_lower):
+    def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
         if len(self.doc_string) == 0:
             self.doc_string = utils.lookup_docs(self.annotations)
         if len(self.since) == 0:
             self.since = utils.lookup_since(self.annotations)
+            if len(self.since) == 0:
+                self.since = containing_iface.since
 
         name = self.name
         overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
@@ -272,11 +274,13 @@ class Signal:
         self.since = ''
         self.deprecated = False
 
-    def post_process(self, interface_prefix, cns, cns_upper, cns_lower):
+    def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
         if len(self.doc_string) == 0:
             self.doc_string = utils.lookup_docs(self.annotations)
         if len(self.since) == 0:
             self.since = utils.lookup_since(self.annotations)
+            if len(self.since) == 0:
+                self.since = containing_iface.since
 
         name = self.name
         overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
@@ -319,11 +323,13 @@ class Property:
         self.since = ''
         self.deprecated = False
 
-    def post_process(self, interface_prefix, cns, cns_upper, cns_lower):
+    def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
         if len(self.doc_string) == 0:
             self.doc_string = utils.lookup_docs(self.annotations)
         if len(self.since) == 0:
             self.since = utils.lookup_since(self.annotations)
+            if len(self.since) == 0:
+                self.since = containing_iface.since
 
         name = self.name
         overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
@@ -411,10 +417,10 @@ class Interface:
             self.deprecated = True
 
         for m in self.methods:
-            m.post_process(interface_prefix, cns, cns_upper, cns_lower)
+            m.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
 
         for s in self.signals:
-            s.post_process(interface_prefix, cns, cns_upper, cns_lower)
+            s.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
 
         for p in self.properties:
-            p.post_process(interface_prefix, cns, cns_upper, cns_lower)
+            p.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
index 1036b7a..472b257 100644 (file)
     <signal name="Jumped">
       <arg type="d" name="height"/>
     </signal>
+
+    <!--
+        Foo:
+        Property with no <quote>since</quote> annotation (should inherit the 2.30 from its containing interface).
+      -->
+    <property name="Foo" type="s" access="read"/>
+
+    <!--
+        Bar:
+        @since: 2.36
+        Property with a later <quote>since</quote> annotation.
+      -->
+    <property name="Bar" type="s" access="read"/>
   </interface>
 
   <!-- org.gtk.GDBus.Example.ObjectManager.Cat: