return buffer;
}
+static const char *print_array_described(const char *(*describe)(GLenum, const char *), const char *categ, const void *data, unsigned elem_size, unsigned count)
+{
+ char *buffer;
+ unsigned buf_size;
+ char *ptr;
+ unsigned i;
+
+ if(!data)
+ return NULL;
+
+ count /= elem_size;
+ buf_size = count*50;
+ buffer = tmpalloc(buf_size);
+ ptr = buffer;
+ *ptr++ = '{';
+ for(i=0; i<count; ++i)
+ {
+ int element = 0;
+ unsigned len;
+
+ if(i>0)
+ {
+ *ptr++ = ',';
+ *ptr++ = ' ';
+ }
+ memcpy(&element, (const char *)data+i*elem_size, elem_size);
+ len = snprintf(ptr, buf_size, "%s", describe(element, categ));
+ ptr += len;
+ buf_size -= len;
+ }
+ *ptr++ = '}';
+ *ptr = 0;
+
+ return buffer;
+}
+
static const char *print_data(const void *data, unsigned size)
{
if(!data)