#include <stdio.h>
#include <malloc.h>
typedef struct
{
int width;
int height;
int *buffer;
} grid;
grid grid_new(int grid_width, int grid_height)
{
grid p_grid;
p_grid.buffer = NULL;
if ((grid_width % 2 != 0) || (grid_height % 4 != 0))
return p_grid;
int group_height = 4;
int group_width = 2;
p_grid.
buffer = calloc(grid_width
/ group_width
* grid_height
/ group_height
, sizeof(int)); p_grid.width = grid_width;
p_grid.height = grid_height;
return p_grid;
}
void grid_free(grid *p_grid)
{
}
void grid_clear(grid *g)
{
// ToDo: Iterate over all elements in the buffer
int elements = sizeof(g->buffer) / sizeof(int);
printf("Elements: %i", elements
); }
int main()
{
grid p = grid_new(16, 16);
printf("%d %d", p.
width, p.
height); }
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KCnR5cGVkZWYgc3RydWN0CnsKICAgIGludCB3aWR0aDsKICAgIGludCBoZWlnaHQ7CiAgICBpbnQgKmJ1ZmZlcjsKfSBncmlkOwoKZ3JpZCBncmlkX25ldyhpbnQgZ3JpZF93aWR0aCwgaW50IGdyaWRfaGVpZ2h0KQp7CiAgICBncmlkIHBfZ3JpZDsKICAgIHBfZ3JpZC5idWZmZXIgPSBOVUxMOwogICAgaWYgKChncmlkX3dpZHRoICUgMiAhPSAwKSB8fCAoZ3JpZF9oZWlnaHQgJSA0ICE9IDApKQogICAgICAgIHJldHVybiBwX2dyaWQ7CgogICAgaW50IGdyb3VwX2hlaWdodCA9IDQ7CiAgICBpbnQgZ3JvdXBfd2lkdGggPSAyOwoKICAgIHBfZ3JpZC5idWZmZXIgPSBjYWxsb2MoZ3JpZF93aWR0aCAvIGdyb3VwX3dpZHRoICogZ3JpZF9oZWlnaHQgLyBncm91cF9oZWlnaHQsIHNpemVvZihpbnQpKTsKICAgIHBfZ3JpZC53aWR0aCA9IGdyaWRfd2lkdGg7CiAgICBwX2dyaWQuaGVpZ2h0ID0gZ3JpZF9oZWlnaHQ7CiAgICByZXR1cm4gcF9ncmlkOwp9Cgp2b2lkIGdyaWRfZnJlZShncmlkICpwX2dyaWQpCnsKICAgIGZyZWUocF9ncmlkLT5idWZmZXIpOwogICAgZnJlZShwX2dyaWQpOwp9Cgp2b2lkIGdyaWRfY2xlYXIoZ3JpZCAqZykKewogICAgLy8gVG9EbzogSXRlcmF0ZSBvdmVyIGFsbCBlbGVtZW50cyBpbiB0aGUgYnVmZmVyCiAgICBpbnQgZWxlbWVudHMgPSBzaXplb2YoZy0+YnVmZmVyKSAvIHNpemVvZihpbnQpOwogICAgcHJpbnRmKCJFbGVtZW50czogJWkiLCBlbGVtZW50cyk7Cn0KCmludCBtYWluKCkgCnsKCWdyaWQgcCA9IGdyaWRfbmV3KDE2LCAxNik7CglwcmludGYoIiVkICVkIiwgcC53aWR0aCwgcC5oZWlnaHQpOwp9Cg==