]> git.tdb.fi Git - gldbg.git/blobdiff - source/glprint.c
Unify array and reference print generation
[gldbg.git] / source / glprint.c
index 6f645a7175bf6cd6daa746973267190f55dd7622..dff66f47f080156cf08b6958e9d68c66654ba560 100644 (file)
@@ -119,6 +119,42 @@ static const char *print_array(const char *fmt, const void *data, unsigned elem_
        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)