[PATCH wayland v2 4/4] tests/scanner-test: Add tests for visibility

Jonas Ådahl jadahl at gmail.com
Wed Jul 26 08:16:36 UTC 2017


Signed-off-by: Jonas Ådahl <jadahl at 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



More information about the wayland-devel mailing list