[Mesa-dev] [PATCH] Consolidate some redundant definitions of ARRAY_SIZE() macro.

Paul Berry stereotype441 at gmail.com
Wed Feb 6 10:43:10 PST 2013


Previous to this patch, there were 13 identical definitions of this
macro in Mesa source.  That's ridiculous.  This patch consolidates 6
of them to a single definition in src/mesa/main/macros.h.

Unfortunately, I wasn't able to eliminate the remaining definitions,
since they occur in places that don't include src/mesa/main/macros.h:

- include/pci_ids/pci_id_driver_map.h
- src/egl/drivers/dri2/egl_dri2.h
- src/egl/main/egldefines.h
- src/gbm/main/backend.c
- src/gbm/main/gbm.c
- src/glx/glxclient.h
- src/mapi/mapi/stub.c

I'm open to suggestions as to how to deal with the remaining redundancy.
---
 src/mesa/drivers/dri/common/utils.c         | 3 +--
 src/mesa/drivers/dri/intel/intel_context.h  | 2 --
 src/mesa/drivers/dri/intel/intel_fbo.h      | 1 +
 src/mesa/drivers/dri/radeon/radeon_screen.c | 2 --
 src/mesa/main/hash_table.c                  | 3 +--
 src/mesa/main/macros.h                      | 3 +++
 src/mesa/main/set.c                         | 3 +--
 7 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c
index 062712b..ac0773b 100644
--- a/src/mesa/drivers/dri/common/utils.c
+++ b/src/mesa/drivers/dri/common/utils.c
@@ -32,6 +32,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <stdbool.h>
+#include "main/macros.h"
 #include "main/mtypes.h"
 #include "main/cpuinfo.h"
 #include "main/extensions.h"
@@ -391,8 +392,6 @@ static const struct { unsigned int attrib, offset; } attribMap[] = {
     __ATTRIB(__DRI_ATTRIB_SWAP_METHOD,			level)
 };
 
-#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
-
 
 /**
  * Return the value of a configuration attribute.  The attribute is
diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h
index af49ab1..cae8ecf 100644
--- a/src/mesa/drivers/dri/intel/intel_context.h
+++ b/src/mesa/drivers/dri/intel/intel_context.h
@@ -348,8 +348,6 @@ extern char *__progname;
 #define SUBPIXEL_X 0.125
 #define SUBPIXEL_Y 0.125
 
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
-
 /**
  * Align a value down to an alignment value
  *
diff --git a/src/mesa/drivers/dri/intel/intel_fbo.h b/src/mesa/drivers/dri/intel/intel_fbo.h
index 9c48e9c..6426a85 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.h
+++ b/src/mesa/drivers/dri/intel/intel_fbo.h
@@ -31,6 +31,7 @@
 #include <stdbool.h>
 #include <assert.h>
 #include "main/formats.h"
+#include "main/macros.h"
 #include "intel_context.h"
 #include "intel_screen.h"
 
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 7d1c0be..ee77fc4 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -701,8 +701,6 @@ radeonDestroyBuffer(__DRIdrawable *driDrawPriv)
     _mesa_reference_framebuffer((struct gl_framebuffer **)(&(driDrawPriv->driverPrivate)), NULL);
 }
 
-#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
-
 /**
  * This is the driver specific part of the createNewScreen entry point.
  * Called when using DRI2.
diff --git a/src/mesa/main/hash_table.c b/src/mesa/main/hash_table.c
index 2bd1929..af0510d 100644
--- a/src/mesa/main/hash_table.c
+++ b/src/mesa/main/hash_table.c
@@ -44,10 +44,9 @@
 #include <string.h>
 
 #include "main/hash_table.h"
+#include "main/macros.h"
 #include "ralloc.h"
 
-#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
-
 static const uint32_t deleted_key_value;
 
 /**
diff --git a/src/mesa/main/macros.h b/src/mesa/main/macros.h
index d1e81fe..f6d38fb 100644
--- a/src/mesa/main/macros.h
+++ b/src/mesa/main/macros.h
@@ -766,5 +766,8 @@ DIFFERENT_SIGNS(GLfloat x, GLfloat y)
 #define ENUM_TO_DOUBLE(E)  ((GLdouble)(GLint)(E))
 #define ENUM_TO_BOOLEAN(E) ((E) ? GL_TRUE : GL_FALSE)
 
+/* Compute the size of an array */
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
+
 
 #endif
diff --git a/src/mesa/main/set.c b/src/mesa/main/set.c
index 736841f..2519b96 100644
--- a/src/mesa/main/set.c
+++ b/src/mesa/main/set.c
@@ -34,11 +34,10 @@
 
 #include <stdlib.h>
 
+#include "macros.h"
 #include "set.h"
 #include "ralloc.h"
 
-#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
-
 /*
  * From Knuth -- a good choice for hash/rehash values is p, p-2 where
  * p and p-2 are both prime.  These tables are sized to have an extra 10%
-- 
1.8.1.2



More information about the mesa-dev mailing list