Signed-off-by: Jonas Ådahl <jad...@gmail.com>
---
 tests/data/noexport-small-client-core.h | 195 ++++++++++++++++++++++++++++++++
 tests/data/noexport-small-code-core.c   |  61 ++++++++++
 tests/data/noexport-small-server-core.h | 154 +++++++++++++++++++++++++
 tests/data/static-small-client-core.h   | 195 ++++++++++++++++++++++++++++++++
 tests/data/static-small-code-core.c     |  61 ++++++++++
 tests/data/static-small-server-core.h   | 154 +++++++++++++++++++++++++
 tests/scanner-test.sh                   |  12 ++
 7 files changed, 832 insertions(+)
 create mode 100644 tests/data/noexport-small-client-core.h
 create mode 100644 tests/data/noexport-small-code-core.c
 create mode 100644 tests/data/noexport-small-server-core.h
 create mode 100644 tests/data/static-small-client-core.h
 create mode 100644 tests/data/static-small-code-core.c
 create mode 100644 tests/data/static-small-server-core.h

diff --git a/tests/data/noexport-small-client-core.h 
b/tests/data/noexport-small-client-core.h
new file mode 100644
index 0000000..c85cca6
--- /dev/null
+++ b/tests/data/noexport-small-client-core.h
@@ -0,0 +1,195 @@
+/* SCANNER TEST */
+
+#ifndef SMALL_TEST_CLIENT_PROTOCOL_H
+#define SMALL_TEST_CLIENT_PROTOCOL_H
+
+#include <stdint.h>
+#include <stddef.h>
+#include "wayland-client-core.h"
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @page page_small_test The small_test protocol
+ * @section page_ifaces_small_test Interfaces
+ * - @subpage page_iface_intf_A - the thing A
+ * @section page_copyright_small_test Copyright
+ * <pre>
+ *
+ * Copyright © 2016 Collabora, Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ * </pre>
+ */
+struct another_intf;
+struct intf_A;
+struct intf_not_here;
+
+/**
+ * @page page_iface_intf_A intf_A
+ * @section page_iface_intf_A_desc Description
+ *
+ * A useless example trying to tickle the scanner.
+ * @section page_iface_intf_A_api API
+ * See @ref iface_intf_A.
+ */
+/**
+ * @defgroup iface_intf_A The intf_A interface
+ *
+ * A useless example trying to tickle the scanner.
+ */
+extern const struct wl_interface intf_A_interface;
+
+#ifndef INTF_A_FOO_ENUM
+#define INTF_A_FOO_ENUM
+enum intf_A_foo {
+       /**
+        * this is the first
+        */
+       INTF_A_FOO_FIRST = 0,
+       /**
+        * this is the second
+        */
+       INTF_A_FOO_SECOND = 1,
+       /**
+        * this is the third
+        * @since 2
+        */
+       INTF_A_FOO_THIRD = 2,
+};
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_FOO_THIRD_SINCE_VERSION 2
+#endif /* INTF_A_FOO_ENUM */
+
+/**
+ * @ingroup iface_intf_A
+ * @struct intf_A_listener
+ */
+struct intf_A_listener {
+       /**
+        */
+       void (*hey)(void *data,
+                   struct intf_A *intf_A);
+};
+
+/**
+ * @ingroup iface_intf_A
+ */
+static inline int
+intf_A_add_listener(struct intf_A *intf_A,
+                   const struct intf_A_listener *listener, void *data)
+{
+       return wl_proxy_add_listener((struct wl_proxy *) intf_A,
+                                    (void (**)(void)) listener, data);
+}
+
+#define INTF_A_RQ1 0
+#define INTF_A_RQ2 1
+#define INTF_A_DESTROY 2
+
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_HEY_SINCE_VERSION 1
+
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_RQ1_SINCE_VERSION 1
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_RQ2_SINCE_VERSION 1
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_DESTROY_SINCE_VERSION 1
+
+/** @ingroup iface_intf_A */
+static inline void
+intf_A_set_user_data(struct intf_A *intf_A, void *user_data)
+{
+       wl_proxy_set_user_data((struct wl_proxy *) intf_A, user_data);
+}
+
+/** @ingroup iface_intf_A */
+static inline void *
+intf_A_get_user_data(struct intf_A *intf_A)
+{
+       return wl_proxy_get_user_data((struct wl_proxy *) intf_A);
+}
+
+static inline uint32_t
+intf_A_get_version(struct intf_A *intf_A)
+{
+       return wl_proxy_get_version((struct wl_proxy *) intf_A);
+}
+
+/**
+ * @ingroup iface_intf_A
+ */
+static inline void *
+intf_A_rq1(struct intf_A *intf_A, const struct wl_interface *interface, 
uint32_t version)
+{
+       struct wl_proxy *untyped_new;
+
+       untyped_new = wl_proxy_marshal_constructor_versioned((struct wl_proxy 
*) intf_A,
+                        INTF_A_RQ1, interface, version, interface->name, 
version, NULL);
+
+       return (void *) untyped_new;
+}
+
+/**
+ * @ingroup iface_intf_A
+ */
+static inline struct intf_not_here *
+intf_A_rq2(struct intf_A *intf_A, const char *str, int32_t i, uint32_t u, 
wl_fixed_t f, int32_t fd, struct another_intf *obj)
+{
+       struct wl_proxy *typed_new;
+
+       typed_new = wl_proxy_marshal_constructor((struct wl_proxy *) intf_A,
+                        INTF_A_RQ2, &intf_not_here_interface, NULL, str, i, u, 
f, fd, obj);
+
+       return (struct intf_not_here *) typed_new;
+}
+
+/**
+ * @ingroup iface_intf_A
+ */
+static inline void
+intf_A_destroy(struct intf_A *intf_A)
+{
+       wl_proxy_marshal((struct wl_proxy *) intf_A,
+                        INTF_A_DESTROY);
+
+       wl_proxy_destroy((struct wl_proxy *) intf_A);
+}
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/tests/data/noexport-small-code-core.c 
b/tests/data/noexport-small-code-core.c
new file mode 100644
index 0000000..0ed7815
--- /dev/null
+++ b/tests/data/noexport-small-code-core.c
@@ -0,0 +1,61 @@
+/* SCANNER TEST */
+
+/*
+ * Copyright © 2016 Collabora, Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <stdlib.h>
+#include <stdint.h>
+#include "wayland-util.h"
+
+extern const struct wl_interface another_intf_interface;
+extern const struct wl_interface intf_not_here_interface;
+
+static const struct wl_interface *types[] = {
+       NULL,
+       &intf_not_here_interface,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       &another_intf_interface,
+};
+
+static const struct wl_message intf_A_requests[] = {
+       { "rq1", "sun", types + 0 },
+       { "rq2", "nsiufho", types + 1 },
+       { "destroy", "", types + 0 },
+};
+
+static const struct wl_message intf_A_events[] = {
+       { "hey", "", types + 0 },
+};
+
+const struct wl_interface intf_A_interface = {
+       "intf_A", 3,
+       3, intf_A_requests,
+       1, intf_A_events,
+};
+
diff --git a/tests/data/noexport-small-server-core.h 
b/tests/data/noexport-small-server-core.h
new file mode 100644
index 0000000..6dd2d05
--- /dev/null
+++ b/tests/data/noexport-small-server-core.h
@@ -0,0 +1,154 @@
+/* SCANNER TEST */
+
+#ifndef SMALL_TEST_SERVER_PROTOCOL_H
+#define SMALL_TEST_SERVER_PROTOCOL_H
+
+#include <stdint.h>
+#include <stddef.h>
+#include "wayland-server-core.h"
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+struct wl_client;
+struct wl_resource;
+
+/**
+ * @page page_small_test The small_test protocol
+ * @section page_ifaces_small_test Interfaces
+ * - @subpage page_iface_intf_A - the thing A
+ * @section page_copyright_small_test Copyright
+ * <pre>
+ *
+ * Copyright © 2016 Collabora, Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ * </pre>
+ */
+struct another_intf;
+struct intf_A;
+struct intf_not_here;
+
+/**
+ * @page page_iface_intf_A intf_A
+ * @section page_iface_intf_A_desc Description
+ *
+ * A useless example trying to tickle the scanner.
+ * @section page_iface_intf_A_api API
+ * See @ref iface_intf_A.
+ */
+/**
+ * @defgroup iface_intf_A The intf_A interface
+ *
+ * A useless example trying to tickle the scanner.
+ */
+extern const struct wl_interface intf_A_interface;
+
+#ifndef INTF_A_FOO_ENUM
+#define INTF_A_FOO_ENUM
+enum intf_A_foo {
+       /**
+        * this is the first
+        */
+       INTF_A_FOO_FIRST = 0,
+       /**
+        * this is the second
+        */
+       INTF_A_FOO_SECOND = 1,
+       /**
+        * this is the third
+        * @since 2
+        */
+       INTF_A_FOO_THIRD = 2,
+};
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_FOO_THIRD_SINCE_VERSION 2
+#endif /* INTF_A_FOO_ENUM */
+
+/**
+ * @ingroup iface_intf_A
+ * @struct intf_A_interface
+ */
+struct intf_A_interface {
+       /**
+        * @param interface name of the objects interface
+        * @param version version of the objects interface
+        */
+       void (*rq1)(struct wl_client *client,
+                   struct wl_resource *resource,
+                   const char *interface, uint32_t version, uint32_t 
untyped_new);
+       /**
+        */
+       void (*rq2)(struct wl_client *client,
+                   struct wl_resource *resource,
+                   uint32_t typed_new,
+                   const char *str,
+                   int32_t i,
+                   uint32_t u,
+                   wl_fixed_t f,
+                   int32_t fd,
+                   struct wl_resource *obj);
+       /**
+        */
+       void (*destroy)(struct wl_client *client,
+                       struct wl_resource *resource);
+};
+
+#define INTF_A_HEY 0
+
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_HEY_SINCE_VERSION 1
+
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_RQ1_SINCE_VERSION 1
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_RQ2_SINCE_VERSION 1
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_DESTROY_SINCE_VERSION 1
+
+/**
+ * @ingroup iface_intf_A
+ * Sends an hey event to the client owning the resource.
+ * @param resource_ The client's resource
+ */
+static inline void
+intf_A_send_hey(struct wl_resource *resource_)
+{
+       wl_resource_post_event(resource_, INTF_A_HEY);
+}
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/tests/data/static-small-client-core.h 
b/tests/data/static-small-client-core.h
new file mode 100644
index 0000000..8af8cae
--- /dev/null
+++ b/tests/data/static-small-client-core.h
@@ -0,0 +1,195 @@
+/* SCANNER TEST */
+
+#ifndef SMALL_TEST_CLIENT_PROTOCOL_H
+#define SMALL_TEST_CLIENT_PROTOCOL_H
+
+#include <stdint.h>
+#include <stddef.h>
+#include "wayland-client-core.h"
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @page page_small_test The small_test protocol
+ * @section page_ifaces_small_test Interfaces
+ * - @subpage page_iface_intf_A - the thing A
+ * @section page_copyright_small_test Copyright
+ * <pre>
+ *
+ * Copyright © 2016 Collabora, Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ * </pre>
+ */
+struct another_intf;
+struct intf_A;
+struct intf_not_here;
+
+/**
+ * @page page_iface_intf_A intf_A
+ * @section page_iface_intf_A_desc Description
+ *
+ * A useless example trying to tickle the scanner.
+ * @section page_iface_intf_A_api API
+ * See @ref iface_intf_A.
+ */
+/**
+ * @defgroup iface_intf_A The intf_A interface
+ *
+ * A useless example trying to tickle the scanner.
+ */
+static const struct wl_interface intf_A_interface;
+
+#ifndef INTF_A_FOO_ENUM
+#define INTF_A_FOO_ENUM
+enum intf_A_foo {
+       /**
+        * this is the first
+        */
+       INTF_A_FOO_FIRST = 0,
+       /**
+        * this is the second
+        */
+       INTF_A_FOO_SECOND = 1,
+       /**
+        * this is the third
+        * @since 2
+        */
+       INTF_A_FOO_THIRD = 2,
+};
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_FOO_THIRD_SINCE_VERSION 2
+#endif /* INTF_A_FOO_ENUM */
+
+/**
+ * @ingroup iface_intf_A
+ * @struct intf_A_listener
+ */
+struct intf_A_listener {
+       /**
+        */
+       void (*hey)(void *data,
+                   struct intf_A *intf_A);
+};
+
+/**
+ * @ingroup iface_intf_A
+ */
+static inline int
+intf_A_add_listener(struct intf_A *intf_A,
+                   const struct intf_A_listener *listener, void *data)
+{
+       return wl_proxy_add_listener((struct wl_proxy *) intf_A,
+                                    (void (**)(void)) listener, data);
+}
+
+#define INTF_A_RQ1 0
+#define INTF_A_RQ2 1
+#define INTF_A_DESTROY 2
+
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_HEY_SINCE_VERSION 1
+
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_RQ1_SINCE_VERSION 1
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_RQ2_SINCE_VERSION 1
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_DESTROY_SINCE_VERSION 1
+
+/** @ingroup iface_intf_A */
+static inline void
+intf_A_set_user_data(struct intf_A *intf_A, void *user_data)
+{
+       wl_proxy_set_user_data((struct wl_proxy *) intf_A, user_data);
+}
+
+/** @ingroup iface_intf_A */
+static inline void *
+intf_A_get_user_data(struct intf_A *intf_A)
+{
+       return wl_proxy_get_user_data((struct wl_proxy *) intf_A);
+}
+
+static inline uint32_t
+intf_A_get_version(struct intf_A *intf_A)
+{
+       return wl_proxy_get_version((struct wl_proxy *) intf_A);
+}
+
+/**
+ * @ingroup iface_intf_A
+ */
+static inline void *
+intf_A_rq1(struct intf_A *intf_A, const struct wl_interface *interface, 
uint32_t version)
+{
+       struct wl_proxy *untyped_new;
+
+       untyped_new = wl_proxy_marshal_constructor_versioned((struct wl_proxy 
*) intf_A,
+                        INTF_A_RQ1, interface, version, interface->name, 
version, NULL);
+
+       return (void *) untyped_new;
+}
+
+/**
+ * @ingroup iface_intf_A
+ */
+static inline struct intf_not_here *
+intf_A_rq2(struct intf_A *intf_A, const char *str, int32_t i, uint32_t u, 
wl_fixed_t f, int32_t fd, struct another_intf *obj)
+{
+       struct wl_proxy *typed_new;
+
+       typed_new = wl_proxy_marshal_constructor((struct wl_proxy *) intf_A,
+                        INTF_A_RQ2, &intf_not_here_interface, NULL, str, i, u, 
f, fd, obj);
+
+       return (struct intf_not_here *) typed_new;
+}
+
+/**
+ * @ingroup iface_intf_A
+ */
+static inline void
+intf_A_destroy(struct intf_A *intf_A)
+{
+       wl_proxy_marshal((struct wl_proxy *) intf_A,
+                        INTF_A_DESTROY);
+
+       wl_proxy_destroy((struct wl_proxy *) intf_A);
+}
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/tests/data/static-small-code-core.c 
b/tests/data/static-small-code-core.c
new file mode 100644
index 0000000..8d372a5
--- /dev/null
+++ b/tests/data/static-small-code-core.c
@@ -0,0 +1,61 @@
+/* SCANNER TEST */
+
+/*
+ * Copyright © 2016 Collabora, Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <stdlib.h>
+#include <stdint.h>
+#include "wayland-util.h"
+
+static const struct wl_interface another_intf_interface;
+static const struct wl_interface intf_not_here_interface;
+
+static const struct wl_interface *types[] = {
+       NULL,
+       &intf_not_here_interface,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       NULL,
+       &another_intf_interface,
+};
+
+static const struct wl_message intf_A_requests[] = {
+       { "rq1", "sun", types + 0 },
+       { "rq2", "nsiufho", types + 1 },
+       { "destroy", "", types + 0 },
+};
+
+static const struct wl_message intf_A_events[] = {
+       { "hey", "", types + 0 },
+};
+
+static const struct wl_interface intf_A_interface = {
+       "intf_A", 3,
+       3, intf_A_requests,
+       1, intf_A_events,
+};
+
diff --git a/tests/data/static-small-server-core.h 
b/tests/data/static-small-server-core.h
new file mode 100644
index 0000000..402b276
--- /dev/null
+++ b/tests/data/static-small-server-core.h
@@ -0,0 +1,154 @@
+/* SCANNER TEST */
+
+#ifndef SMALL_TEST_SERVER_PROTOCOL_H
+#define SMALL_TEST_SERVER_PROTOCOL_H
+
+#include <stdint.h>
+#include <stddef.h>
+#include "wayland-server-core.h"
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+struct wl_client;
+struct wl_resource;
+
+/**
+ * @page page_small_test The small_test protocol
+ * @section page_ifaces_small_test Interfaces
+ * - @subpage page_iface_intf_A - the thing A
+ * @section page_copyright_small_test Copyright
+ * <pre>
+ *
+ * Copyright © 2016 Collabora, Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ * </pre>
+ */
+struct another_intf;
+struct intf_A;
+struct intf_not_here;
+
+/**
+ * @page page_iface_intf_A intf_A
+ * @section page_iface_intf_A_desc Description
+ *
+ * A useless example trying to tickle the scanner.
+ * @section page_iface_intf_A_api API
+ * See @ref iface_intf_A.
+ */
+/**
+ * @defgroup iface_intf_A The intf_A interface
+ *
+ * A useless example trying to tickle the scanner.
+ */
+static const struct wl_interface intf_A_interface;
+
+#ifndef INTF_A_FOO_ENUM
+#define INTF_A_FOO_ENUM
+enum intf_A_foo {
+       /**
+        * this is the first
+        */
+       INTF_A_FOO_FIRST = 0,
+       /**
+        * this is the second
+        */
+       INTF_A_FOO_SECOND = 1,
+       /**
+        * this is the third
+        * @since 2
+        */
+       INTF_A_FOO_THIRD = 2,
+};
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_FOO_THIRD_SINCE_VERSION 2
+#endif /* INTF_A_FOO_ENUM */
+
+/**
+ * @ingroup iface_intf_A
+ * @struct intf_A_interface
+ */
+struct intf_A_interface {
+       /**
+        * @param interface name of the objects interface
+        * @param version version of the objects interface
+        */
+       void (*rq1)(struct wl_client *client,
+                   struct wl_resource *resource,
+                   const char *interface, uint32_t version, uint32_t 
untyped_new);
+       /**
+        */
+       void (*rq2)(struct wl_client *client,
+                   struct wl_resource *resource,
+                   uint32_t typed_new,
+                   const char *str,
+                   int32_t i,
+                   uint32_t u,
+                   wl_fixed_t f,
+                   int32_t fd,
+                   struct wl_resource *obj);
+       /**
+        */
+       void (*destroy)(struct wl_client *client,
+                       struct wl_resource *resource);
+};
+
+#define INTF_A_HEY 0
+
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_HEY_SINCE_VERSION 1
+
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_RQ1_SINCE_VERSION 1
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_RQ2_SINCE_VERSION 1
+/**
+ * @ingroup iface_intf_A
+ */
+#define INTF_A_DESTROY_SINCE_VERSION 1
+
+/**
+ * @ingroup iface_intf_A
+ * Sends an hey event to the client owning the resource.
+ * @param resource_ The client's resource
+ */
+static inline void
+intf_A_send_hey(struct wl_resource *resource_)
+{
+       wl_resource_post_event(resource_, INTF_A_HEY);
+}
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/tests/scanner-test.sh b/tests/scanner-test.sh
index 7854b86..7e13af7 100755
--- a/tests/scanner-test.sh
+++ b/tests/scanner-test.sh
@@ -48,4 +48,16 @@ generate_and_compare "-c code" "small.xml" 
"small-code-core.c"
 generate_and_compare "-c client-header" "small.xml" "small-client-core.h"
 generate_and_compare "-c server-header" "small.xml" "small-server-core.h"
 
+generate_and_compare "-Vstatic -c code" "small.xml" "static-small-code-core.c"
+generate_and_compare "-Vstatic -c client-header" "small.xml" 
"static-small-client-core.h"
+generate_and_compare "-Vstatic -c server-header" "small.xml" 
"static-small-server-core.h"
+
+generate_and_compare "-Vcompiler-default -c code" "small.xml" 
"noexport-small-code-core.c"
+generate_and_compare "-Vcompiler-default -c client-header" "small.xml" 
"noexport-small-client-core.h"
+generate_and_compare "-Vcompiler-default -c server-header" "small.xml" 
"noexport-small-server-core.h"
+
+generate_and_compare "-Vexport -c code" "small.xml" "small-code-core.c"
+generate_and_compare "-Vexport -c client-header" "small.xml" 
"small-client-core.h"
+generate_and_compare "-Vexport -c server-header" "small.xml" 
"small-server-core.h"
+
 exit $RETCODE
-- 
2.13.0

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to