]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
gidlparser: Special handling for some ambiguous cairo symbols
authorRico Tzschichholz <ricotz@ubuntu.com>
Mon, 18 Jul 2016 10:47:34 +0000 (12:47 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 18 Jul 2016 10:47:34 +0000 (12:47 +0200)
vapigen/valagidlparser.vala

index f23301903dc18b657761a265a031ebcb7c8387ba..0cb51c28c407a906c557651d0575b7b98edada64 100644 (file)
@@ -1896,6 +1896,17 @@ public class Vala.GIdlParser : CodeVisitor {
                        type.unresolved_symbol = new UnresolvedSymbol (new UnresolvedSymbol (null, "GLib"), "HashTable");
                } else if (type_node.tag == TypeTag.ERROR) {
                        type.unresolved_symbol = new UnresolvedSymbol (new UnresolvedSymbol (null, "GLib"), "Error");
+               } else if (type_node.unparsed.has_prefix ("cairo_")) {
+                       if (type_node.unparsed.has_prefix ("cairo_device_t")) {
+                               type.unresolved_symbol = new UnresolvedSymbol (new UnresolvedSymbol (null, "Cairo"), "Device");
+                       } else if (type_node.unparsed.has_prefix ("cairo_pattern_t")) {
+                               type.unresolved_symbol = new UnresolvedSymbol (new UnresolvedSymbol (null, "Cairo"), "Pattern");
+                       } else if (type_node.unparsed.has_prefix ("cairo_surface_t")) {
+                               type.unresolved_symbol = new UnresolvedSymbol (new UnresolvedSymbol (null, "Cairo"), "Surface");
+                       }
+                       if (type_node.unparsed.has_suffix ("**")) {
+                               direction = ParameterDirection.OUT;
+                       }
                } else if (type_node.is_interface) {
                        var n = type_node.@interface;