diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2016-07-18 12:47:34 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2016-07-18 12:47:34 +0200 |
commit | 4fcef86c97d81dc2c38ba62c11fef3b314253741 (patch) | |
tree | 40ec765a4b04d3839634a3198129a98d31822ca4 /vapigen | |
parent | b0191489cb87d15b7c97bb82af2269de6c80fadb (diff) | |
download | vala-4fcef86c97d81dc2c38ba62c11fef3b314253741.tar.gz |
gidlparser: Special handling for some ambiguous cairo symbols
Diffstat (limited to 'vapigen')
-rw-r--r-- | vapigen/valagidlparser.vala | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index f23301903..0cb51c28c 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -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; |