diff options
-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; |