To help reduce code duplication and also 'kitchen-sink' includes the ARRAY_LENGTH macro was moved to a stand-alone file and referenced from the sources consuming it. Other macros will be added in subsequent passes.
Signed-off-by: Jon A. Cruz <[email protected]> --- Makefile.am | 1 + clients/calibrator.c | 3 +-- clients/dnd.c | 1 + clients/editor.c | 1 + clients/eventdemo.c | 1 + clients/ivi-shell-user-interface.c | 2 +- clients/nested.c | 1 + clients/presentation-shm.c | 3 +-- clients/simple-touch.c | 3 +-- clients/stacking.c | 1 + clients/subsurfaces.c | 1 + clients/terminal.c | 1 + clients/weston-info.c | 3 +-- clients/window.c | 1 + clients/window.h | 2 -- clients/wscreensaver.c | 1 + ivi-shell/ivi-shell.c | 1 + shared/cairo-util.c | 3 +-- shared/helpers.h | 49 ++++++++++++++++++++++++++++++++++++++ shared/image-loader.c | 3 +-- src/compositor-drm.c | 1 + src/compositor-fbdev.c | 1 + src/compositor-headless.c | 1 + src/compositor-rdp.c | 1 + src/compositor-rpi.c | 1 + src/compositor-wayland.c | 1 + src/compositor-x11.c | 1 + src/compositor.c | 1 + src/compositor.h | 2 -- src/gl-renderer.c | 1 + src/input.c | 1 + tests/ivi_layout-test.c | 1 + tests/presentation-test.c | 1 + tests/vertex-clip-test.c | 1 + tests/weston-test-runner.h | 4 ++-- xwayland/selection.c | 1 + xwayland/window-manager.c | 1 + 37 files changed, 84 insertions(+), 19 deletions(-) create mode 100644 shared/helpers.h diff --git a/Makefile.am b/Makefile.am index 5819b19..261798c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -189,6 +189,7 @@ westoninclude_HEADERS = \ src/timeline-object.h \ shared/matrix.h \ shared/config-parser.h \ + shared/helpers.h \ shared/zalloc.h \ shared/platform.h diff --git a/clients/calibrator.c b/clients/calibrator.c index 4865095..1dad91d 100644 --- a/clients/calibrator.c +++ b/clients/calibrator.c @@ -34,10 +34,9 @@ #include <wayland-client.h> #include "window.h" +#include "shared/helpers.h" #include "shared/matrix.h" -#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) - /* Our points for the calibration must be not be on a line */ static const struct { float x_ratio, y_ratio; diff --git a/clients/dnd.c b/clients/dnd.c index 00e87a5..b8ecb64 100644 --- a/clients/dnd.c +++ b/clients/dnd.c @@ -40,6 +40,7 @@ #include "window.h" #include "shared/cairo-util.h" +#include "shared/helpers.h" struct dnd_drag; diff --git a/clients/editor.c b/clients/editor.c index 5407337..d084c93 100644 --- a/clients/editor.c +++ b/clients/editor.c @@ -35,6 +35,7 @@ #include <pango/pangocairo.h> +#include "shared/helpers.h" #include "window.h" #include "text-client-protocol.h" diff --git a/clients/eventdemo.c b/clients/eventdemo.c index 50a9cb4..daf5710 100644 --- a/clients/eventdemo.c +++ b/clients/eventdemo.c @@ -37,6 +37,7 @@ #include <cairo.h> +#include "shared/helpers.h" #include "window.h" /** window title */ diff --git a/clients/ivi-shell-user-interface.c b/clients/ivi-shell-user-interface.c index 1b8a45d..868747d 100644 --- a/clients/ivi-shell-user-interface.c +++ b/clients/ivi-shell-user-interface.c @@ -34,6 +34,7 @@ #include <wayland-cursor.h> #include "shared/cairo-util.h" #include "shared/config-parser.h" +#include "shared/helpers.h" #include "shared/os-compatibility.h" #include "ivi-application-client-protocol.h" #include "ivi-hmi-controller-client-protocol.h" @@ -174,7 +175,6 @@ mem_alloc(size_t size, char *file, int32_t line) } #define MEM_ALLOC(s) mem_alloc((s),__FILE__,__LINE__) -#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) /***************************************************************************** * Event Handler diff --git a/clients/nested.c b/clients/nested.c index 0b18dd5..12a4c0e 100644 --- a/clients/nested.c +++ b/clients/nested.c @@ -45,6 +45,7 @@ #define WL_HIDE_DEPRECATED #include <wayland-server.h> +#include "shared/helpers.h" #include "window.h" #define MIN(x,y) (((x) < (y)) ? (x) : (y)) diff --git a/clients/presentation-shm.c b/clients/presentation-shm.c index 0d62872..2f47dfb 100644 --- a/clients/presentation-shm.c +++ b/clients/presentation-shm.c @@ -35,11 +35,10 @@ #include <time.h> #include <wayland-client.h> +#include "shared/helpers.h" #include "shared/os-compatibility.h" #include "presentation_timing-client-protocol.h" -#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) - enum run_mode { RUN_MODE_FEEDBACK, RUN_MODE_FEEDBACK_IDLE, diff --git a/clients/simple-touch.c b/clients/simple-touch.c index e187bcf..624ebca 100644 --- a/clients/simple-touch.c +++ b/clients/simple-touch.c @@ -32,10 +32,9 @@ #include <sys/mman.h> #include <wayland-client.h> +#include "shared/helpers.h" #include "shared/os-compatibility.h" -#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) - struct seat { struct touch *touch; struct wl_seat *seat; diff --git a/clients/stacking.c b/clients/stacking.c index ea6101d..a09420a 100644 --- a/clients/stacking.c +++ b/clients/stacking.c @@ -31,6 +31,7 @@ #include <linux/input.h> #include <cairo.h> +#include "shared/helpers.h" #include "window.h" struct stacking { diff --git a/clients/subsurfaces.c b/clients/subsurfaces.c index 663e1e1..7b80db5 100644 --- a/clients/subsurfaces.c +++ b/clients/subsurfaces.c @@ -40,6 +40,7 @@ #include <EGL/egl.h> #include <EGL/eglext.h> +#include "shared/helpers.h" #include "window.h" #if 0 diff --git a/clients/terminal.c b/clients/terminal.c index 77f9bd6..d1fc6cb 100644 --- a/clients/terminal.c +++ b/clients/terminal.c @@ -43,6 +43,7 @@ #include <wayland-client.h> #include "shared/config-parser.h" +#include "shared/helpers.h" #include "window.h" static int option_fullscreen; diff --git a/clients/weston-info.c b/clients/weston-info.c index 10924a9..480fd01 100644 --- a/clients/weston-info.c +++ b/clients/weston-info.c @@ -31,11 +31,10 @@ #include <wayland-client.h> +#include "shared/helpers.h" #include "shared/os-compatibility.h" #include "presentation_timing-client-protocol.h" -#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) - #define MIN(x,y) (((x) < (y)) ? (x) : (y)) typedef void (*print_info_t)(void *info); diff --git a/clients/window.c b/clients/window.c index f2100fb..3af660b 100644 --- a/clients/window.c +++ b/clients/window.c @@ -66,6 +66,7 @@ typedef void *EGLContext; #include <linux/input.h> #include <wayland-client.h> #include "shared/cairo-util.h" +#include "shared/helpers.h" #include "xdg-shell-client-protocol.h" #include "text-cursor-position-client-protocol.h" #include "workspaces-client-protocol.h" diff --git a/clients/window.h b/clients/window.h index 5d33997..0535a38 100644 --- a/clients/window.h +++ b/clients/window.h @@ -32,8 +32,6 @@ #include "shared/zalloc.h" #include "shared/platform.h" -#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) - #define container_of(ptr, type, member) ({ \ const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) diff --git a/clients/wscreensaver.c b/clients/wscreensaver.c index f75d0d8..0ff6045 100644 --- a/clients/wscreensaver.c +++ b/clients/wscreensaver.c @@ -36,6 +36,7 @@ #include "desktop-shell-client-protocol.h" #include "window.h" +#include "shared/helpers.h" extern struct wscreensaver_plugin glmatrix_screensaver; diff --git a/ivi-shell/ivi-shell.c b/ivi-shell/ivi-shell.c index 8f1c3ca..b1ea3ba 100644 --- a/ivi-shell/ivi-shell.c +++ b/ivi-shell/ivi-shell.c @@ -42,6 +42,7 @@ #include "ivi-application-server-protocol.h" #include "ivi-layout-export.h" #include "ivi-layout-private.h" +#include "shared/helpers.h" /* Representation of ivi_surface protocol object. */ struct ivi_shell_surface diff --git a/shared/cairo-util.c b/shared/cairo-util.c index a73c08b..5a4f246 100644 --- a/shared/cairo-util.c +++ b/shared/cairo-util.c @@ -32,11 +32,10 @@ #include <cairo.h> #include "cairo-util.h" +#include "shared/helpers.h" #include "image-loader.h" #include "config-parser.h" -#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) - void surface_flush_device(cairo_surface_t *surface) { diff --git a/shared/helpers.h b/shared/helpers.h new file mode 100644 index 0000000..2e4ae44 --- /dev/null +++ b/shared/helpers.h @@ -0,0 +1,49 @@ +/* + * Copyright © 2015 Samsung Electronics Co., Ltd + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of the copyright holders not be used in + * advertising or publicity pertaining to distribution of the software + * without specific, written prior permission. The copyright holders make + * no representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF + * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef WESTON_HELPERS_H +#define WESTON_HELPERS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file + * Simple misc helper macros. + */ + +/** + * Compile-time computation of number of items in a hardcoded array. + * + * @param a the array being measured. + * @return the number of items hardcoded into the array. + */ +#ifndef ARRAY_LENGTH +#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* WESTON_HELPERS_H */ diff --git a/shared/image-loader.c b/shared/image-loader.c index c4d763f..b7bc981 100644 --- a/shared/image-loader.c +++ b/shared/image-loader.c @@ -31,10 +31,9 @@ #include <png.h> #include <pixman.h> +#include "shared/helpers.h" #include "image-loader.h" -#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) - #ifdef HAVE_WEBP #include <webp/decode.h> #endif diff --git a/src/compositor-drm.c b/src/compositor-drm.c index bf921be..abe8ec4 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -43,6 +43,7 @@ #include <gbm.h> #include <libudev.h> +#include "shared/helpers.h" #include "libbacklight.h" #include "compositor.h" #include "gl-renderer.h" diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c index 3f3394f..6abfa8c 100644 --- a/src/compositor-fbdev.c +++ b/src/compositor-fbdev.c @@ -39,6 +39,7 @@ #include <libudev.h> +#include "shared/helpers.h" #include "compositor.h" #include "launcher-util.h" #include "pixman-renderer.h" diff --git a/src/compositor-headless.c b/src/compositor-headless.c index fe35289..a4aeee0 100644 --- a/src/compositor-headless.c +++ b/src/compositor-headless.c @@ -28,6 +28,7 @@ #include <sys/time.h> #include <stdbool.h> +#include "shared/helpers.h" #include "compositor.h" #include "pixman-renderer.h" #include "presentation_timing-server-protocol.h" diff --git a/src/compositor-rdp.c b/src/compositor-rdp.c index 4091bac..29a1707 100644 --- a/src/compositor-rdp.c +++ b/src/compositor-rdp.c @@ -62,6 +62,7 @@ #include <freerdp/locale/keyboard.h> #include <winpr/input.h> +#include "shared/helpers.h" #include "compositor.h" #include "pixman-renderer.h" diff --git a/src/compositor-rpi.c b/src/compositor-rpi.c index 1c0a783..3ecad99 100644 --- a/src/compositor-rpi.c +++ b/src/compositor-rpi.c @@ -43,6 +43,7 @@ # include "rpi-bcm-stubs.h" #endif +#include "shared/helpers.h" #include "compositor.h" #include "rpi-renderer.h" #include "launcher-util.h" diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c index cf2777c..2d08cbd 100644 --- a/src/compositor-wayland.c +++ b/src/compositor-wayland.c @@ -39,6 +39,7 @@ #include "compositor.h" #include "gl-renderer.h" #include "pixman-renderer.h" +#include "shared/helpers.h" #include "shared/image-loader.h" #include "shared/os-compatibility.h" #include "shared/cairo-util.h" diff --git a/src/compositor-x11.c b/src/compositor-x11.c index a7ca8d4..598a797 100644 --- a/src/compositor-x11.c +++ b/src/compositor-x11.c @@ -50,6 +50,7 @@ #include "gl-renderer.h" #include "pixman-renderer.h" #include "shared/config-parser.h" +#include "shared/helpers.h" #include "shared/image-loader.h" #include "presentation_timing-server-protocol.h" diff --git a/src/compositor.c b/src/compositor.c index 5d5df16..49fc92c 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -58,6 +58,7 @@ #include "compositor.h" #include "scaler-server-protocol.h" #include "presentation_timing-server-protocol.h" +#include "shared/helpers.h" #include "shared/os-compatibility.h" #include "git-version.h" #include "version.h" diff --git a/src/compositor.h b/src/compositor.h index b414b5f..54cda7a 100644 --- a/src/compositor.h +++ b/src/compositor.h @@ -46,8 +46,6 @@ extern "C" { #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #endif -#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0]) - #define container_of(ptr, type, member) ({ \ const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) diff --git a/src/gl-renderer.c b/src/gl-renderer.c index d18e124..c426bfc 100644 --- a/src/gl-renderer.c +++ b/src/gl-renderer.c @@ -37,6 +37,7 @@ #include "gl-renderer.h" #include "vertex-clipping.h" +#include "shared/helpers.h" #include "weston-egl-ext.h" struct gl_shader { diff --git a/src/input.c b/src/input.c index 8b2dfcc..d32bc6c 100644 --- a/src/input.c +++ b/src/input.c @@ -31,6 +31,7 @@ #include <fcntl.h> #include <limits.h> +#include "shared/helpers.h" #include "shared/os-compatibility.h" #include "compositor.h" diff --git a/tests/ivi_layout-test.c b/tests/ivi_layout-test.c index daa9aa7..1dc82ec 100644 --- a/tests/ivi_layout-test.c +++ b/tests/ivi_layout-test.c @@ -25,6 +25,7 @@ #include <stdio.h> #include <string.h> +#include "shared/helpers.h" #include "weston-test-client-helper.h" #include "ivi-application-client-protocol.h" #include "ivi-test.h" diff --git a/tests/presentation-test.c b/tests/presentation-test.c index ae17b84..45b783b 100644 --- a/tests/presentation-test.c +++ b/tests/presentation-test.c @@ -28,6 +28,7 @@ #include <assert.h> #include <time.h> +#include "shared/helpers.h" #include "weston-test-client-helper.h" #include "presentation_timing-client-protocol.h" diff --git a/tests/vertex-clip-test.c b/tests/vertex-clip-test.c index a1623a8..779b5c8 100644 --- a/tests/vertex-clip-test.c +++ b/tests/vertex-clip-test.c @@ -27,6 +27,7 @@ #include "weston-test-runner.h" +#include "shared/helpers.h" #include "src/vertex-clipping.h" #define BOUNDING_BOX_TOP_Y 100.0f diff --git a/tests/weston-test-runner.h b/tests/weston-test-runner.h index 193b76d..cdf2aad 100644 --- a/tests/weston-test-runner.h +++ b/tests/weston-test-runner.h @@ -28,6 +28,8 @@ #include <stdlib.h> +#include "shared/helpers.h" + #ifdef NDEBUG #error "Tests must not be built with NDEBUG defined, they rely on assert()." #endif @@ -41,8 +43,6 @@ struct weston_test { int must_fail; } __attribute__ ((aligned (32))); -#define ARRAY_LENGTH(a) ((int) (sizeof (a) / sizeof (a)[0])) - #define TEST_BEGIN(name, arg) \ static void name(arg) diff --git a/xwayland/selection.c b/xwayland/selection.c index 24bd56d..84e0ff3 100644 --- a/xwayland/selection.c +++ b/xwayland/selection.c @@ -28,6 +28,7 @@ #include <fcntl.h> #include "xwayland.h" +#include "shared/helpers.h" static int writable_callback(int fd, uint32_t mask, void *data) diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c index ca66203..ea1d9d3 100644 --- a/xwayland/window-manager.c +++ b/xwayland/window-manager.c @@ -39,6 +39,7 @@ #include "cairo-util.h" #include "compositor.h" #include "hash.h" +#include "shared/helpers.h" struct wm_size_hints { uint32_t flags; -- 2.1.0 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
