[gobject-introspection] docs: Add RelaxNG schema for GIR's XML format



commit c6dd93676776b6df8ef45b30b90294bd4129c2cd
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Wed May 11 12:24:45 2016 +0100

    docs: Add RelaxNG schema for GIR's XML format
    
    This is an attempt at standardising the GIR XML in a way that we can
    reliably validate; the schema is enough to validate simple GIR files,
    but it still needs work for complex ones, like GTK's.
    
    I've decided to use the compact Relax NG syntax as the schema format
    because it's definitely easier to read and write that the DTD format.
    
    Since the current XML version is 1.2, let's standardise on that instead
    of making up a version 1.0.

 docs/gir-1.2.rnc |  231 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 231 insertions(+), 0 deletions(-)
---
diff --git a/docs/gir-1.2.rnc b/docs/gir-1.2.rnc
new file mode 100644
index 0000000..7ff6f00
--- /dev/null
+++ b/docs/gir-1.2.rnc
@@ -0,0 +1,231 @@
+namespace core = "http://www.gtk.org/introspection/core/1.0";
+namespace c = "http://www.gtk.org/introspection/c/1.0";
+namespace glib = "http://www.gtk.org/introspection/glib/1.0";
+
+grammar {
+  start = Repository
+
+  Repository =
+    element repository {
+      Include*
+      & Package*
+      & Alias*
+      & Class*
+      & Record*
+      & Enum*
+      & Function*
+    }
+
+  Include =
+    element \include {
+      attribute name { xsd:string }
+      attribute version { xsd:string }
+      empty
+    }
+
+  Package =
+    element package {
+      attribute name { xsd:string }
+      empty
+    }
+
+  Alias =
+    element alias {
+      attribute name { xsd:string }
+      attribute c:type { xsd:string }
+      attribute introspectable { string "0" }?
+
+      Doc?
+      & Type
+    }
+
+  Class =
+    element class {
+      attribute name { xsd:string }
+      attribute c:symbol-prefix { xsd:string }
+      attribute c:type { xsd:string }
+      attribute parent { xsd:string }
+      attribute glib:type-name { xsd:string }
+      attribute glib:get-type { xsd:string }
+      attribute glib:type-struct { xsd:string }
+      attribute introspectable { string "0" }?
+
+      Doc?
+      & DocDeprecated?
+      & Implements*
+      & Constructor?
+      & Method*
+      & Field*
+      & Property*
+      & Signal*
+    }
+
+  Record =
+    element record {
+      attribute name { xsd:string }
+      attribute version { xsd:string }?
+      attribute c:type { xsd:string }
+      attribute disguised { xsd:string }?
+      attribute glib:is-gtype-struct-for { xsd:string }?
+      attribute introspectable { string "0" }?
+
+      Field*
+    }
+
+  Property =
+    element property {
+      attribute name { xsd:string }
+      attribute version { xsd:string }?
+      attribute writable { string "0" | string "1" }?
+      attribute readable { string "0" | string "1" }?
+
+      Doc?
+      & DocDeprecated?
+      & Type
+    }
+
+  Signal =
+    element glib:signal {
+      attribute name { xsd:string }
+      attribute version { xsd:string }?
+      attribute when { string "first" | string "last" }
+      attribute no-recurse { xsd:string }?
+
+      Doc?
+      & DocDeprecated
+      & Callable.params?
+      & Callable.return?
+    }
+
+  Field =
+    element field {
+      attribute name { xsd:string }
+      attribute introspectable { xsd:string }?
+
+      Type
+      | Callback
+    }
+
+  Callback =
+    element callback {
+      attribute name { xsd:string }
+      attribute introspectable { xsd:string }
+
+      Callable.params?
+      & Callable.return?
+
+  Doc =
+    element doc { text }
+
+  DocDeprecated =
+    element doc-deprecated { text }
+
+  Implements  =
+    element implements { attribute name { xsd:string } }
+
+  Type =
+    element type {
+      attribute name { xsd:string }
+      attribute c:type { xsd:string }
+      attribute introspectable { xsd:string }?
+      empty
+    }
+
+  ArrayType =
+    element array {
+      attribute c:type { xsd:string }
+      attribute zero-terminated { string "0" | string "1" }?
+      attribute fixed-size { xsd:string }?
+      attribute introspectable { xsd:string }?
+      Type
+    }
+
+  TransferOwnership =
+    attribute transfer-ownership { string "none" | string "container" | string "full" }
+
+  Constructor =
+    element constructor {
+      Callable.attrs
+      & Callable.params?
+      & Callable.return?
+      & Doc?
+      & DocDeprecated?
+    }
+
+  Callable.attrs &= attribute name { xsd:string }
+  Callable.attrs &= attribute version { xsd:string }?
+  Callable.attrs &= attribute c:identifier { xsd:string }
+  Callable.attrs &= attribute deprecated { xsd:string }?
+  Callable.attrs &= attribute deprecation-version { xsd:string }?
+  Callable.attrs &= attribute introspectable { xsd:string }?
+
+  Callable.params =
+    element parameters {
+      element parameter {
+        attribute name { xsd:string }
+        attribute nullable { xsd:string }?
+        attribute allow-none { xsd:string }?
+        attribute introspectable { xsd:string }
+        TransferOwnership?
+
+        Doc?
+        & DocDeprecated?
+        & (Type | ArrayType)
+      }*
+
+      & element instance-parameter {
+        attribute name { xsd:string }
+        TransferOwnership?
+      }?
+    }
+
+  Callable.return =
+    element return-value {
+      attribute introspectable { xsd:string }
+      TransferOwnership?
+      & Doc?
+      & (Type | ArrayType)
+    }
+
+  Function =
+    element function {
+      Callable.attrs
+      & Callable.params?
+      & Callable.return?
+      & Doc?
+      & DocDeprecated?
+    }
+
+  Method =
+    element method {
+      Callable.attrs
+      & Callable.params
+      & Callable.return?
+      & Doc?
+      & DocDeprecated?
+    }
+
+  Enum =
+    element enumeration {
+      attribute name { xsd:string }
+      attribute glib:type-name { xsd:string }?
+      attribute glib:get-type { xsd:string }?
+      attribute c:type { xsd:string }
+
+      Doc?
+      & DocDeprecated?
+
+      EnumMember+
+    }
+
+  EnumMember =
+    element member {
+      attribute name { xsd:string }
+      attribute value { xsd:string }
+      attribute c:identifier { xsd:string }
+      attribute glib:nick { xsd:string }?
+
+      Doc?
+      & DocDeprecated?
+    }
+}


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