summaryrefslogtreecommitdiff
path: root/vapigen
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2016-07-18 12:47:34 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2016-07-18 12:47:34 +0200
commit4fcef86c97d81dc2c38ba62c11fef3b314253741 (patch)
tree40ec765a4b04d3839634a3198129a98d31822ca4 /vapigen
parentb0191489cb87d15b7c97bb82af2269de6c80fadb (diff)
downloadvala-4fcef86c97d81dc2c38ba62c11fef3b314253741.tar.gz
gidlparser: Special handling for some ambiguous cairo symbols
Diffstat (limited to 'vapigen')
-rw-r--r--vapigen/valagidlparser.vala11
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;