[gobject-introspection] scanner: parse and expose function macros



commit 0f3efc9058e2f249e84c02840fd96b6a413a9201
Author: Mathieu Duponchelle <mathieu duponchelle opencreed com>
Date:   Wed Jul 15 13:11:45 2015 +0200

    scanner: parse and expose function macros
    
    This is useful for documentation tools, and other utilities that
    rely on full introspection of the C API of a given library.

 girepository/girparser.c                           |   7 +-
 giscanner/ast.py                                   |  10 +-
 giscanner/girparser.py                             |  18 ++
 giscanner/girwriter.py                             |  25 ++
 giscanner/maintransformer.py                       |  12 +
 giscanner/scannerparser.y                          |   9 +
 giscanner/sourcescanner.h                          |   1 +
 giscanner/sourcescanner.py                         |   4 +-
 giscanner/transformer.py                           |  24 +-
 tests/scanner/Bar-1.0-expected.gir                 |  34 +-
 tests/scanner/GetType-1.0-expected.gir             |  20 +-
 .../Regress-1.0-C-expected/Regress.FOO_BUFFER.page |  14 +
 .../Regress.FOO_INTERFACE.page                     |  14 +
 .../Regress.FOO_INTERFACE_GET_INTERFACE.page       |  14 +
 .../Regress.FOO_IS_BUFFER.page                     |  14 +
 .../Regress.FOO_IS_INTERFACE.page                  |  14 +
 .../Regress.FOO_IS_OBJECT.page                     |  14 +
 .../Regress.FOO_IS_OTHER_OBJECT.page               |  14 +
 .../Regress.FOO_IS_SUBINTERFACE.page               |  14 +
 .../Regress.FOO_IS_SUBOBJECT.page                  |  14 +
 .../Regress.FOO_IS_TILE_HANDLER.page               |  14 +
 .../Regress-1.0-C-expected/Regress.FOO_OBJECT.page |  14 +
 .../Regress.FOO_OTHER_OBJECT.page                  |  14 +
 .../Regress.FOO_SUBINTERFACE.page                  |  14 +
 .../Regress.FOO_SUBINTERFACE_GET_INTERFACE.page    |  14 +
 .../Regress.FOO_SUBOBJECT.page                     |  14 +
 .../Regress.FOO_TILE_HANDLER.page                  |  14 +
 .../Regress.TEST_FLOATING.page                     |  14 +
 .../Regress.TEST_FLOATING_GET_CLASS.page           |  14 +
 .../Regress.TEST_FUNDAMENTAL_OBJECT.page           |  14 +
 .../Regress.TEST_FUNDAMENTAL_OBJECT_CAST.page      |  14 +
 .../Regress.TEST_FUNDAMENTAL_OBJECT_CLASS.page     |  14 +
 .../Regress.TEST_FUNDAMENTAL_OBJECT_GET_CLASS.page |  14 +
 .../Regress.TEST_GNUC_EXTENSION_STMT.page          |  14 +
 .../Regress.TEST_INTERFACE.page                    |  14 +
 .../Regress.TEST_INTERFACE_GET_IFACE.page          |  14 +
 .../Regress.TEST_IS_FLOATING.page                  |  14 +
 .../Regress.TEST_IS_FUNDAMENTAL_OBJECT.page        |  14 +
 .../Regress.TEST_IS_FUNDAMENTAL_OBJECT_CLASS.page  |  14 +
 .../Regress.TEST_IS_INTERFACE.page                 |  14 +
 .../Regress.TEST_IS_OBJECT.page                    |  14 +
 .../Regress.TEST_IS_SUB_OBJECT.page                |  14 +
 .../Regress.TEST_IS_WI_802_1X.page                 |  14 +
 .../Regress.TEST_OBJECT.page                       |  14 +
 .../Regress.TEST_OBJ_GET_CLASS.page                |  14 +
 .../Regress.TEST_SUB_OBJECT.page                   |  14 +
 .../Regress.TEST_SUB_OBJ_GET_CLASS.page            |  14 +
 ...egress.TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT.page |  14 +
 .../Regress.TEST_WI_802_1X.page                    |  14 +
 .../Regress.TEST_WI_802_1X_GET_CLASS.page          |  14 +
 tests/scanner/Regress-1.0-expected.gir             | 353 ++++++++++++++++++++-
 tests/scanner/Utility-1.0-expected.gir             |  20 +-
 tests/scanner/WarnLib-1.0-expected.gir             |  29 +-
 53 files changed, 1101 insertions(+), 11 deletions(-)
---
diff --git a/girepository/girparser.c b/girepository/girparser.c
index d545d310..53450baf 100644
--- a/girepository/girparser.c
+++ b/girepository/girparser.c
@@ -2845,7 +2845,12 @@ start_element_handler (GMarkupParseContext *context,
       break;
 
     case 'f':
-      if (start_function (context, element_name,
+      if (strcmp ("function-macro", element_name) == 0)
+        {
+          state_switch (ctx, STATE_PASSTHROUGH);
+          goto out;
+        }
+      else if (start_function (context, element_name,
                          attribute_names, attribute_values,
                          ctx, error))
        goto out;
diff --git a/giscanner/ast.py b/giscanner/ast.py
index 2daccdfb..66fe0cf1 100644
--- a/giscanner/ast.py
+++ b/giscanner/ast.py
@@ -728,6 +728,14 @@ class Callable(Node):
         raise ValueError("Unknown argument %s" % (name, ))
 
 
+class FunctionMacro(Node):
+    def __init__(self, name, parameters, symbol):
+        Node.__init__(self, name)
+        self.symbol = symbol
+        self.parameters = parameters
+        self.introspectable = False
+
+
 class Function(Callable):
 
     def __init__(self, name, retval, parameters, throws, symbol):
@@ -868,7 +876,7 @@ class TypeContainer(Annotated):
         self.direction = direction
         if transfer is not None:
             self.transfer = transfer
-        elif typenode.is_const:
+        elif typenode and typenode.is_const:
             self.transfer = PARAM_TRANSFER_NONE
         else:
             self.transfer = None
diff --git a/giscanner/girparser.py b/giscanner/girparser.py
index 9ea408b4..7687c35c 100644
--- a/giscanner/girparser.py
+++ b/giscanner/girparser.py
@@ -142,6 +142,7 @@ class GIRParser(object):
 
         if not self._types_only:
             parser_methods[_corens('constant')] = self._parse_constant
+            parser_methods[_corens('function-macro')] = self._parse_function_macro
             parser_methods[_corens('function')] = self._parse_function
 
         for node in ns.getchildren():
@@ -310,6 +311,23 @@ class GIRParser(object):
         function = self._parse_function_common(node, ast.Function)
         self._namespace.append(function)
 
+    def _parse_function_macro(self, node):
+        name = node.attrib['name']
+        symbol = node.attrib.get(_cns('identifier'))
+        parameters = []
+        parameters_node = node.find(_corens('parameters'))
+        if (parameters_node is not None):
+            for paramnode in self._find_children(parameters_node, _corens('parameter')):
+                param = ast.Parameter(paramnode.attrib.get('name'), None)
+                parameters.append(param)
+                self._parse_generic_attribs(paramnode, param)
+
+        func = ast.FunctionMacro(name, parameters, symbol)
+        self._parse_generic_attribs(node, func)
+
+        self._namespace.track(func)
+        self._namespace.append(func)
+
     def _parse_parameter(self, node):
         typeval = self._parse_type(node)
         param = ast.Parameter(node.attrib.get('name'),
diff --git a/giscanner/girwriter.py b/giscanner/girwriter.py
index 91875a2d..d1333cb7 100644
--- a/giscanner/girwriter.py
+++ b/giscanner/girwriter.py
@@ -90,6 +90,8 @@ class GIRWriter(XMLWriter):
     def _write_node(self, node):
         if isinstance(node, ast.Function):
             self._write_function(node)
+        elif isinstance(node, ast.FunctionMacro):
+            self._write_function_macro(node)
         elif isinstance(node, ast.Enum):
             self._write_enum(node)
         elif isinstance(node, ast.Bitfield):
@@ -222,6 +224,15 @@ class GIRWriter(XMLWriter):
             attrs.append(('moved-to', func.moved_to))
         self._write_callable(func, tag_name, attrs)
 
+    def _write_function_macro(self, macro):
+        attrs = [('name', macro.name),
+                 ('c:identifier', macro.symbol)]
+        self._append_version(macro, attrs)
+        self._append_node_generic(macro, attrs)
+        with self.tagcontext('function-macro', attrs):
+            self._write_generic(macro)
+            self._write_untyped_parameters(macro)
+
     def _write_method(self, method):
         self._write_function(method, tag_name='method')
 
@@ -255,6 +266,20 @@ class GIRWriter(XMLWriter):
             for parameter in callable.parameters:
                 self._write_parameter(callable, parameter)
 
+    def _write_untyped_parameters(self, macro):
+        if not macro.parameters:
+            return
+        with self.tagcontext('parameters'):
+            for parameter in macro.parameters:
+                self._write_untyped_parameter(macro, parameter)
+
+    def _write_untyped_parameter(self, macro, parameter):
+        attrs = []
+        if parameter.argname is not None:
+            attrs.append(('name', parameter.argname))
+        with self.tagcontext('parameter', attrs):
+            self._write_generic(parameter)
+
     def _write_parameter(self, parent, parameter, nodename='parameter'):
         attrs = []
         if parameter.argname is not None:
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py
index e1536b93..9468751d 100644
--- a/giscanner/maintransformer.py
+++ b/giscanner/maintransformer.py
@@ -176,6 +176,16 @@ class MainTransformer(object):
         block = self._blocks.get(node.symbol)
         self._apply_annotations_callable(node, chain, block)
 
+    def _apply_annotations_function_macro(self, node, chain):
+        block = self._blocks.get(node.symbol)
+        for param in node.parameters:
+            if block:
+                doc_param = block.params.get(param.argname)
+                if doc_param:
+                    param.doc = doc_param.description
+                    param.doc_position = doc_param.position
+        self._apply_annotations_annotated(node, block)
+
     def _pass_read_annotations_early(self, node, chain):
         if isinstance(node, ast.Record):
             if node.ctype is not None:
@@ -215,6 +225,8 @@ class MainTransformer(object):
             self._apply_annotations_alias(node, chain)
         if isinstance(node, ast.Function):
             self._apply_annotations_function(node, chain)
+        if isinstance(node, ast.FunctionMacro):
+            self._apply_annotations_function_macro(node, chain)
         if isinstance(node, ast.Callback):
             self._apply_annotations_callable(node, chain, block=self._get_block(node))
         if isinstance(node, (ast.Class, ast.Interface, ast.Union, ast.Enum,
diff --git a/giscanner/scannerparser.y b/giscanner/scannerparser.y
index 29d98b41..6a2ffc1d 100644
--- a/giscanner/scannerparser.y
+++ b/giscanner/scannerparser.y
@@ -1500,6 +1500,15 @@ object_macro
 
 function_macro_define
        : function_macro '(' identifier_list ')'
+          {
+               GISourceSymbol *sym = gi_source_symbol_new (CSYMBOL_TYPE_FUNCTION_MACRO, 
scanner->current_file, lineno);
+               GISourceType *func = gi_source_function_new ();
+               sym->ident = g_strdup ($1);
+               func->child_list = $3;
+               gi_source_symbol_merge_type (sym, func);
+               gi_source_scanner_add_symbol (scanner, sym);
+               gi_source_symbol_unref (sym);
+          }
        ;
 
 object_macro_define
diff --git a/giscanner/sourcescanner.h b/giscanner/sourcescanner.h
index a788abe9..40c5fc96 100644
--- a/giscanner/sourcescanner.h
+++ b/giscanner/sourcescanner.h
@@ -41,6 +41,7 @@ typedef enum
   CSYMBOL_TYPE_CONST,
   CSYMBOL_TYPE_OBJECT,
   CSYMBOL_TYPE_FUNCTION,
+  CSYMBOL_TYPE_FUNCTION_MACRO,
   CSYMBOL_TYPE_STRUCT,
   CSYMBOL_TYPE_UNION,
   CSYMBOL_TYPE_ENUM,
diff --git a/giscanner/sourcescanner.py b/giscanner/sourcescanner.py
index 471131c2..1632e1cb 100644
--- a/giscanner/sourcescanner.py
+++ b/giscanner/sourcescanner.py
@@ -41,11 +41,12 @@ ALL_EXTS = SOURCE_EXTS + HEADER_EXTS
  CSYMBOL_TYPE_CONST,
  CSYMBOL_TYPE_OBJECT,
  CSYMBOL_TYPE_FUNCTION,
+ CSYMBOL_TYPE_FUNCTION_MACRO,
  CSYMBOL_TYPE_STRUCT,
  CSYMBOL_TYPE_UNION,
  CSYMBOL_TYPE_ENUM,
  CSYMBOL_TYPE_TYPEDEF,
- CSYMBOL_TYPE_MEMBER) = range(10)
+ CSYMBOL_TYPE_MEMBER) = range(11)
 
 (CTYPE_INVALID,
  CTYPE_VOID,
@@ -90,6 +91,7 @@ def symbol_type_name(symbol_type):
         CSYMBOL_TYPE_CONST: 'const',
         CSYMBOL_TYPE_OBJECT: 'object',
         CSYMBOL_TYPE_FUNCTION: 'function',
+        CSYMBOL_TYPE_FUNCTION_MACRO: 'function_macro',
         CSYMBOL_TYPE_STRUCT: 'struct',
         CSYMBOL_TYPE_UNION: 'union',
         CSYMBOL_TYPE_ENUM: 'enum',
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index 9911de70..a3cf3126 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -31,7 +31,7 @@ from .sourcescanner import (
     SourceSymbol, ctype_name, CTYPE_POINTER,
     CTYPE_BASIC_TYPE, CTYPE_UNION, CTYPE_ARRAY, CTYPE_TYPEDEF,
     CTYPE_VOID, CTYPE_ENUM, CTYPE_FUNCTION, CTYPE_STRUCT,
-    CSYMBOL_TYPE_FUNCTION, CSYMBOL_TYPE_TYPEDEF, CSYMBOL_TYPE_STRUCT,
+    CSYMBOL_TYPE_FUNCTION, CSYMBOL_TYPE_FUNCTION_MACRO, CSYMBOL_TYPE_TYPEDEF, CSYMBOL_TYPE_STRUCT,
     CSYMBOL_TYPE_ENUM, CSYMBOL_TYPE_UNION, CSYMBOL_TYPE_OBJECT,
     CSYMBOL_TYPE_MEMBER, CSYMBOL_TYPE_ELLIPSIS, CSYMBOL_TYPE_CONST,
     TYPE_QUALIFIER_CONST, TYPE_QUALIFIER_VOLATILE)
@@ -77,7 +77,11 @@ class Transformer(object):
         # handle #ifdef.  But this introduces an arch-dependency in the .gir
         # file.  So far this has only come up scanning glib - in theory, other
         # modules will just depend on that.
-        if isinstance(original, ast.Constant) and isinstance(node, ast.Constant):
+        if original and\
+                (isinstance(original, ast.FunctionMacro) or isinstance(node,
+                    ast.FunctionMacro)):
+            pass
+        elif isinstance(original, ast.Constant) and isinstance(node, ast.Constant):
             pass
         elif original is node:
             # Ignore attempts to add the same node to the namespace. This can
@@ -368,6 +372,8 @@ raise ValueError."""
             stype = symbol.type
         if stype == CSYMBOL_TYPE_FUNCTION:
             return self._create_function(symbol)
+        elif stype == CSYMBOL_TYPE_FUNCTION_MACRO:
+            return self._create_function_macro(symbol)
         elif stype == CSYMBOL_TYPE_TYPEDEF:
             return self._create_typedef(symbol)
         elif stype == CSYMBOL_TYPE_STRUCT:
@@ -450,6 +456,15 @@ raise ValueError."""
         func.add_symbol_reference(symbol)
         return func
 
+    def _create_function_macro(self, symbol):
+        if symbol.ident.startswith('_'):
+            return None
+        parameters = list(self._create_parameters(symbol, symbol.base_type))
+        name = self._strip_symbol(symbol)
+        macro = ast.FunctionMacro(name, parameters, symbol.ident)
+        macro.add_symbol_reference(symbol)
+        return macro
+
     def _create_source_type(self, source_type, is_parameter=False):
         assert source_type is not None
         if source_type.type == CTYPE_VOID:
@@ -719,7 +734,10 @@ raise ValueError."""
         if symbol.type == CSYMBOL_TYPE_ELLIPSIS:
             return ast.Parameter('...', ast.Varargs())
         else:
-            ptype = self._create_type_from_base(symbol.base_type, is_parameter=True)
+            if symbol.base_type:
+                ptype = self._create_type_from_base(symbol.base_type, is_parameter=True)
+            else:
+                ptype = None
 
             if symbol.ident is None:
                 if symbol.base_type and symbol.base_type.type != CTYPE_VOID:
diff --git a/tests/scanner/Bar-1.0-expected.gir b/tests/scanner/Bar-1.0-expected.gir
index cdd80951..b1ab368c 100644
--- a/tests/scanner/Bar-1.0-expected.gir
+++ b/tests/scanner/Bar-1.0-expected.gir
@@ -10,9 +10,16 @@ and/or use gtk-doc annotations.  -->
   <package name="gobject-2.0"/>
   <namespace name="Bar"
              version="1.0"
-             shared-library=""
+             shared-library="libbarapp-1.0.so"
              c:identifier-prefixes="Bar"
              c:symbol-prefixes="bar">
+    <function-macro name="BAZ" c:identifier="BAR_BAZ" introspectable="0">
+      <source-position filename="barapp.h" line="7"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
     <class name="Baz"
            c:symbol-prefix="baz"
            c:type="BarBaz"
@@ -33,6 +40,31 @@ and/or use gtk-doc annotations.  -->
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
     </record>
+    <function-macro name="IS_BAZ" c:identifier="BAR_IS_BAZ" introspectable="0">
+      <source-position filename="barapp.h" line="8"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="MUTTER_IS_WINDOW"
+                    c:identifier="MUTTER_IS_WINDOW"
+                    introspectable="0">
+      <source-position filename="barapp.h" line="40"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="MUTTER_WINDOW"
+                    c:identifier="MUTTER_WINDOW"
+                    introspectable="0">
+      <source-position filename="barapp.h" line="39"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
     <class name="MutterWindow"
            c:symbol-prefix="mutter_window"
            c:type="MutterWindow"
diff --git a/tests/scanner/GetType-1.0-expected.gir b/tests/scanner/GetType-1.0-expected.gir
index b3908fcf..82957f2a 100644
--- a/tests/scanner/GetType-1.0-expected.gir
+++ b/tests/scanner/GetType-1.0-expected.gir
@@ -11,9 +11,27 @@ and/or use gtk-doc annotations.  -->
   <c:include name="gettype.h"/>
   <namespace name="GetType"
              version="1.0"
-             shared-library="libgettype.so"
+             shared-library="libgettype-1.0.so"
              c:identifier-prefixes="GetType"
              c:symbol-prefixes="gettype">
+    <function-macro name="IS_OBJECT"
+                    c:identifier="GETTYPE_IS_OBJECT"
+                    introspectable="0">
+      <source-position filename="gettype.h" line="10"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="OBJECT"
+                    c:identifier="GETTYPE_OBJECT"
+                    introspectable="0">
+      <source-position filename="gettype.h" line="9"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
     <class name="Object"
            c:symbol-prefix="object"
            c:type="GetTypeObject"
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_BUFFER.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_BUFFER.page
new file mode 100644
index 00000000..a19732ff
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_BUFFER.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_BUFFER"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_BUFFER</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_INTERFACE.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_INTERFACE.page
new file mode 100644
index 00000000..ccfc103d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_INTERFACE.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_INTERFACE"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_INTERFACE</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_INTERFACE_GET_INTERFACE.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_INTERFACE_GET_INTERFACE.page
new file mode 100644
index 00000000..44c56868
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_INTERFACE_GET_INTERFACE.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_INTERFACE_GET_INTERFACE"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_INTERFACE_GET_INTERFACE</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_BUFFER.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_BUFFER.page
new file mode 100644
index 00000000..df9a24d6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_BUFFER.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_IS_BUFFER"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_IS_BUFFER</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_INTERFACE.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_INTERFACE.page
new file mode 100644
index 00000000..7f3df40a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_INTERFACE.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_IS_INTERFACE"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_IS_INTERFACE</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_OBJECT.page
new file mode 100644
index 00000000..1298e051
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_IS_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_IS_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_OTHER_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_OTHER_OBJECT.page
new file mode 100644
index 00000000..0dd1b3b8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_OTHER_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_IS_OTHER_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_IS_OTHER_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_SUBINTERFACE.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_SUBINTERFACE.page
new file mode 100644
index 00000000..8fca4f23
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_SUBINTERFACE.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_IS_SUBINTERFACE"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_IS_SUBINTERFACE</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_SUBOBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_SUBOBJECT.page
new file mode 100644
index 00000000..eabb258b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_SUBOBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_IS_SUBOBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_IS_SUBOBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_TILE_HANDLER.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_TILE_HANDLER.page
new file mode 100644
index 00000000..99c1ca96
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_IS_TILE_HANDLER.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_IS_TILE_HANDLER"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_IS_TILE_HANDLER</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_OBJECT.page
new file mode 100644
index 00000000..4ac10e8e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_OTHER_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_OTHER_OBJECT.page
new file mode 100644
index 00000000..a9399447
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_OTHER_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_OTHER_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_OTHER_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_SUBINTERFACE.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_SUBINTERFACE.page
new file mode 100644
index 00000000..5498267d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_SUBINTERFACE.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_SUBINTERFACE"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_SUBINTERFACE</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_SUBINTERFACE_GET_INTERFACE.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_SUBINTERFACE_GET_INTERFACE.page
new file mode 100644
index 00000000..402359e1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_SUBINTERFACE_GET_INTERFACE.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_SUBINTERFACE_GET_INTERFACE"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_SUBINTERFACE_GET_INTERFACE</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_SUBOBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_SUBOBJECT.page
new file mode 100644
index 00000000..45496efa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_SUBOBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_SUBOBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_SUBOBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FOO_TILE_HANDLER.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_TILE_HANDLER.page
new file mode 100644
index 00000000..9359575a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FOO_TILE_HANDLER.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.FOO_TILE_HANDLER"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.FOO_TILE_HANDLER</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FLOATING.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FLOATING.page
new file mode 100644
index 00000000..6951797a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FLOATING.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_FLOATING"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_FLOATING</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FLOATING_GET_CLASS.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FLOATING_GET_CLASS.page
new file mode 100644
index 00000000..b188c7c5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FLOATING_GET_CLASS.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_FLOATING_GET_CLASS"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_FLOATING_GET_CLASS</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT.page
new file mode 100644
index 00000000..901d3e56
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_FUNDAMENTAL_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_FUNDAMENTAL_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT_CAST.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT_CAST.page
new file mode 100644
index 00000000..b96c56c4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT_CAST.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_FUNDAMENTAL_OBJECT_CAST"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_FUNDAMENTAL_OBJECT_CAST</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT_CLASS.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT_CLASS.page
new file mode 100644
index 00000000..60b1e436
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT_CLASS.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_FUNDAMENTAL_OBJECT_CLASS"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_FUNDAMENTAL_OBJECT_CLASS</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT_GET_CLASS.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT_GET_CLASS.page
new file mode 100644
index 00000000..46258bad
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_FUNDAMENTAL_OBJECT_GET_CLASS.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_FUNDAMENTAL_OBJECT_GET_CLASS"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_FUNDAMENTAL_OBJECT_GET_CLASS</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_GNUC_EXTENSION_STMT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_GNUC_EXTENSION_STMT.page
new file mode 100644
index 00000000..83ccf14e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_GNUC_EXTENSION_STMT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_GNUC_EXTENSION_STMT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_GNUC_EXTENSION_STMT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_INTERFACE.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_INTERFACE.page
new file mode 100644
index 00000000..fe57387d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_INTERFACE.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_INTERFACE"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_INTERFACE</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_INTERFACE_GET_IFACE.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_INTERFACE_GET_IFACE.page
new file mode 100644
index 00000000..1695d093
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_INTERFACE_GET_IFACE.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_INTERFACE_GET_IFACE"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_INTERFACE_GET_IFACE</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_FLOATING.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_FLOATING.page
new file mode 100644
index 00000000..999d93da
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_FLOATING.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_IS_FLOATING"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_IS_FLOATING</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_FUNDAMENTAL_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_FUNDAMENTAL_OBJECT.page
new file mode 100644
index 00000000..7e74e8a8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_FUNDAMENTAL_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_IS_FUNDAMENTAL_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_IS_FUNDAMENTAL_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_FUNDAMENTAL_OBJECT_CLASS.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_FUNDAMENTAL_OBJECT_CLASS.page
new file mode 100644
index 00000000..868e53ef
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_FUNDAMENTAL_OBJECT_CLASS.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_IS_FUNDAMENTAL_OBJECT_CLASS"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_IS_FUNDAMENTAL_OBJECT_CLASS</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_INTERFACE.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_INTERFACE.page
new file mode 100644
index 00000000..0d2bb65e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_INTERFACE.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_IS_INTERFACE"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_IS_INTERFACE</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_OBJECT.page
new file mode 100644
index 00000000..2e858033
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_IS_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_IS_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_SUB_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_SUB_OBJECT.page
new file mode 100644
index 00000000..0a609dda
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_SUB_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_IS_SUB_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_IS_SUB_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_WI_802_1X.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_WI_802_1X.page
new file mode 100644
index 00000000..aec4da2d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_IS_WI_802_1X.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_IS_WI_802_1X"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_IS_WI_802_1X</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_OBJECT.page
new file mode 100644
index 00000000..97ad81db
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_OBJ_GET_CLASS.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_OBJ_GET_CLASS.page
new file mode 100644
index 00000000..030a801a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_OBJ_GET_CLASS.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_OBJ_GET_CLASS"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_OBJ_GET_CLASS</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_SUB_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_SUB_OBJECT.page
new file mode 100644
index 00000000..fae3dab4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_SUB_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_SUB_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_SUB_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_SUB_OBJ_GET_CLASS.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_SUB_OBJ_GET_CLASS.page
new file mode 100644
index 00000000..871d4ddb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_SUB_OBJ_GET_CLASS.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_SUB_OBJ_GET_CLASS"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_SUB_OBJ_GET_CLASS</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT.page
new file mode 100644
index 00000000..39fcdb63
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_WI_802_1X.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_WI_802_1X.page
new file mode 100644
index 00000000..fc7575fb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_WI_802_1X.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_WI_802_1X"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_WI_802_1X</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TEST_WI_802_1X_GET_CLASS.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_WI_802_1X_GET_CLASS.page
new file mode 100644
index 00000000..d950fc8f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TEST_WI_802_1X_GET_CLASS.page
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TEST_WI_802_1X_GET_CLASS"
+      type="topic"
+      style="default"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="index" group="default" type="guide"/>
+  </info>
+  <title>Regress.TEST_WI_802_1X_GET_CLASS</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index 9ca0174c..ce2153fd 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -12,7 +12,7 @@ and/or use gtk-doc annotations.  -->
   <c:include name="regress.h"/>
   <namespace name="Regress"
              version="1.0"
-             shared-library="libregress.so"
+             shared-library="libregress-1.0.so"
              c:identifier-prefixes="Regress"
              c:symbol-prefixes="regress">
     <alias name="AliasedTestBoxed" c:type="RegressAliasedTestBoxed">
@@ -1247,6 +1247,15 @@ it says it's pointer but it's actually a string.</doc>
       <source-position filename="regress.h" line="521"/>
       <type name="gdouble" c:type="gdouble"/>
     </constant>
+    <function-macro name="FOO_BUFFER"
+                    c:identifier="REGRESS_FOO_BUFFER"
+                    introspectable="0">
+      <source-position filename="foo.h" line="36"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
     <constant name="FOO_DEFINE_SHOULD_BE_EXPOSED"
               value="should be exposed"
               c:type="REGRESS_FOO_DEFINE_SHOULD_BE_EXPOSED">
@@ -1259,18 +1268,153 @@ it says it's pointer but it's actually a string.</doc>
       <source-position filename="foo.h" line="249"/>
       <type name="gint" c:type="gint"/>
     </constant>
+    <function-macro name="FOO_INTERFACE"
+                    c:identifier="REGRESS_FOO_INTERFACE"
+                    introspectable="0">
+      <source-position filename="foo.h" line="17"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_INTERFACE_GET_INTERFACE"
+                    c:identifier="REGRESS_FOO_INTERFACE_GET_INTERFACE"
+                    introspectable="0">
+      <source-position filename="foo.h" line="19"/>
+      <parameters>
+        <parameter name="inst">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_IS_BUFFER"
+                    c:identifier="REGRESS_FOO_IS_BUFFER"
+                    introspectable="0">
+      <source-position filename="foo.h" line="37"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_IS_INTERFACE"
+                    c:identifier="REGRESS_FOO_IS_INTERFACE"
+                    introspectable="0">
+      <source-position filename="foo.h" line="18"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_IS_OBJECT"
+                    c:identifier="REGRESS_FOO_IS_OBJECT"
+                    introspectable="0">
+      <source-position filename="foo.h" line="29"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_IS_OTHER_OBJECT"
+                    c:identifier="REGRESS_FOO_IS_OTHER_OBJECT"
+                    introspectable="0">
+      <source-position filename="foo.h" line="41"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_IS_SUBINTERFACE"
+                    c:identifier="REGRESS_FOO_IS_SUBINTERFACE"
+                    introspectable="0">
+      <source-position filename="foo.h" line="23"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_IS_SUBOBJECT"
+                    c:identifier="REGRESS_FOO_IS_SUBOBJECT"
+                    introspectable="0">
+      <source-position filename="foo.h" line="33"/>
+      <parameters>
+        <parameter name="subobject">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_IS_TILE_HANDLER"
+                    c:identifier="REGRESS_FOO_IS_TILE_HANDLER"
+                    introspectable="0">
+      <source-position filename="foo.c" line="630"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_OBJECT"
+                    c:identifier="REGRESS_FOO_OBJECT"
+                    introspectable="0">
+      <source-position filename="foo.h" line="28"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_OTHER_OBJECT"
+                    c:identifier="REGRESS_FOO_OTHER_OBJECT"
+                    introspectable="0">
+      <source-position filename="foo.h" line="40"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
     <constant name="FOO_PIE_IS_TASTY"
               value="3.141590"
               c:type="REGRESS_FOO_PIE_IS_TASTY">
       <source-position filename="foo.h" line="14"/>
       <type name="gdouble" c:type="gdouble"/>
     </constant>
+    <function-macro name="FOO_SUBINTERFACE"
+                    c:identifier="REGRESS_FOO_SUBINTERFACE"
+                    introspectable="0">
+      <source-position filename="foo.h" line="22"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_SUBINTERFACE_GET_INTERFACE"
+                    c:identifier="REGRESS_FOO_SUBINTERFACE_GET_INTERFACE"
+                    introspectable="0">
+      <source-position filename="foo.h" line="24"/>
+      <parameters>
+        <parameter name="inst">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="FOO_SUBOBJECT"
+                    c:identifier="REGRESS_FOO_SUBOBJECT"
+                    introspectable="0">
+      <source-position filename="foo.h" line="32"/>
+      <parameters>
+        <parameter name="subobject">
+        </parameter>
+      </parameters>
+    </function-macro>
     <constant name="FOO_SUCCESS_INT"
               value="4408"
               c:type="REGRESS_FOO_SUCCESS_INT">
       <source-position filename="foo.h" line="10"/>
       <type name="gint" c:type="gint"/>
     </constant>
+    <function-macro name="FOO_TILE_HANDLER"
+                    c:identifier="REGRESS_FOO_TILE_HANDLER"
+                    introspectable="0">
+      <source-position filename="foo.c" line="629"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
     <enumeration name="FooASingle" c:type="RegressFooASingle">
       <source-position filename="foo.h" line="534"/>
       <member name="foo_some_single_enum"
@@ -2582,6 +2726,213 @@ use it should be.</doc>
         <type name="gdouble" c:type="double"/>
       </field>
     </record>
+    <function-macro name="TEST_FLOATING"
+                    c:identifier="REGRESS_TEST_FLOATING"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1247"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_FLOATING_GET_CLASS"
+                    c:identifier="REGRESS_TEST_FLOATING_GET_CLASS"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1249"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_FUNDAMENTAL_OBJECT"
+                    c:identifier="REGRESS_TEST_FUNDAMENTAL_OBJECT"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1001"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_FUNDAMENTAL_OBJECT_CAST"
+                    c:identifier="REGRESS_TEST_FUNDAMENTAL_OBJECT_CAST"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1003"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_FUNDAMENTAL_OBJECT_CLASS"
+                    c:identifier="REGRESS_TEST_FUNDAMENTAL_OBJECT_CLASS"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1002"/>
+      <parameters>
+        <parameter name="klass">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_FUNDAMENTAL_OBJECT_GET_CLASS"
+                    c:identifier="REGRESS_TEST_FUNDAMENTAL_OBJECT_GET_CLASS"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1000"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_GNUC_EXTENSION_STMT"
+                    c:identifier="REGRESS_TEST_GNUC_EXTENSION_STMT"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1425"/>
+      <parameters>
+        <parameter name="foo">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_INTERFACE"
+                    c:identifier="REGRESS_TEST_INTERFACE"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1195"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_INTERFACE_GET_IFACE"
+                    c:identifier="REGRESS_TEST_INTERFACE_GET_IFACE"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1197"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_IS_FLOATING"
+                    c:identifier="REGRESS_TEST_IS_FLOATING"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1248"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_IS_FUNDAMENTAL_OBJECT"
+                    c:identifier="REGRESS_TEST_IS_FUNDAMENTAL_OBJECT"
+                    introspectable="0">
+      <source-position filename="regress.h" line="998"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_IS_FUNDAMENTAL_OBJECT_CLASS"
+                    c:identifier="REGRESS_TEST_IS_FUNDAMENTAL_OBJECT_CLASS"
+                    introspectable="0">
+      <source-position filename="regress.h" line="999"/>
+      <parameters>
+        <parameter name="klass">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_IS_INTERFACE"
+                    c:identifier="REGRESS_TEST_IS_INTERFACE"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1196"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_IS_OBJECT"
+                    c:identifier="REGRESS_TEST_IS_OBJECT"
+                    introspectable="0">
+      <source-position filename="regress.h" line="761"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_IS_SUB_OBJECT"
+                    c:identifier="REGRESS_TEST_IS_SUB_OBJECT"
+                    introspectable="0">
+      <source-position filename="regress.h" line="964"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_IS_WI_802_1X"
+                    c:identifier="REGRESS_TEST_IS_WI_802_1X"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1214"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_OBJECT"
+                    c:identifier="REGRESS_TEST_OBJECT"
+                    introspectable="0">
+      <source-position filename="regress.h" line="760"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_OBJ_GET_CLASS"
+                    c:identifier="REGRESS_TEST_OBJ_GET_CLASS"
+                    introspectable="0">
+      <source-position filename="regress.h" line="762"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_SUB_OBJECT"
+                    c:identifier="REGRESS_TEST_SUB_OBJECT"
+                    introspectable="0">
+      <source-position filename="regress.h" line="963"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_SUB_OBJ_GET_CLASS"
+                    c:identifier="REGRESS_TEST_SUB_OBJ_GET_CLASS"
+                    introspectable="0">
+      <source-position filename="regress.h" line="965"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT"
+                    c:identifier="REGRESS_TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1038"/>
+      <parameters>
+        <parameter name="value">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_WI_802_1X"
+                    c:identifier="REGRESS_TEST_WI_802_1X"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1213"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="TEST_WI_802_1X_GET_CLASS"
+                    c:identifier="REGRESS_TEST_WI_802_1X_GET_CLASS"
+                    introspectable="0">
+      <source-position filename="regress.h" line="1215"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
     <enumeration name="TestABCError"
                  glib:type-name="RegressTestABCError"
                  glib:get-type="regress_test_abc_error_get_type"
diff --git a/tests/scanner/Utility-1.0-expected.gir b/tests/scanner/Utility-1.0-expected.gir
index 010bd45b..5972d328 100644
--- a/tests/scanner/Utility-1.0-expected.gir
+++ b/tests/scanner/Utility-1.0-expected.gir
@@ -11,7 +11,7 @@ and/or use gtk-doc annotations.  -->
   <c:include name="utility.h"/>
   <namespace name="Utility"
              version="1.0"
-             shared-library="libutility.so"
+             shared-library="libutility-1.0.so"
              c:identifier-prefixes="Utility"
              c:symbol-prefixes="utility">
     <alias name="Glyph" c:type="UtilityGlyph">
@@ -79,6 +79,24 @@ and/or use gtk-doc annotations.  -->
       <member name="c" value="4" c:identifier="UTILITY_FLAG_C">
       </member>
     </bitfield>
+    <function-macro name="IS_OBJECT"
+                    c:identifier="UTILITY_IS_OBJECT"
+                    introspectable="0">
+      <source-position filename="utility.h" line="10"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="OBJECT"
+                    c:identifier="UTILITY_OBJECT"
+                    introspectable="0">
+      <source-position filename="utility.h" line="9"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
     <class name="Object"
            c:symbol-prefix="object"
            c:type="UtilityObject"
diff --git a/tests/scanner/WarnLib-1.0-expected.gir b/tests/scanner/WarnLib-1.0-expected.gir
index 3ceb088e..b7f47997 100644
--- a/tests/scanner/WarnLib-1.0-expected.gir
+++ b/tests/scanner/WarnLib-1.0-expected.gir
@@ -10,9 +10,36 @@ and/or use gtk-doc annotations.  -->
   <c:include name="warnlib.h"/>
   <namespace name="WarnLib"
              version="1.0"
-             shared-library=""
+             shared-library="libwarnlib-1.0.so"
              c:identifier-prefixes="WarnLib"
              c:symbol-prefixes="warnlib_">
+    <function-macro name="IS_WHATEVER"
+                    c:identifier="WARNLIB_IS_WHATEVER"
+                    introspectable="0">
+      <source-position filename="warnlib.h" line="20"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="WHATEVER"
+                    c:identifier="WARNLIB_WHATEVER"
+                    introspectable="0">
+      <source-position filename="warnlib.h" line="19"/>
+      <parameters>
+        <parameter name="object">
+        </parameter>
+      </parameters>
+    </function-macro>
+    <function-macro name="WHATEVER_GET_IFACE"
+                    c:identifier="WARNLIB_WHATEVER_GET_IFACE"
+                    introspectable="0">
+      <source-position filename="warnlib.h" line="21"/>
+      <parameters>
+        <parameter name="obj">
+        </parameter>
+      </parameters>
+    </function-macro>
     <interface name="Whatever"
                c:symbol-prefix="whatever"
                c:type="WarnLibWhatever"


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