1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun #include <internal/xyarray.h> 3*4882a593Smuzhiyun #include <linux/zalloc.h> 4*4882a593Smuzhiyun #include <stdlib.h> 5*4882a593Smuzhiyun #include <string.h> 6*4882a593Smuzhiyun xyarray__new(int xlen,int ylen,size_t entry_size)7*4882a593Smuzhiyunstruct xyarray *xyarray__new(int xlen, int ylen, size_t entry_size) 8*4882a593Smuzhiyun { 9*4882a593Smuzhiyun size_t row_size = ylen * entry_size; 10*4882a593Smuzhiyun struct xyarray *xy = zalloc(sizeof(*xy) + xlen * row_size); 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun if (xy != NULL) { 13*4882a593Smuzhiyun xy->entry_size = entry_size; 14*4882a593Smuzhiyun xy->row_size = row_size; 15*4882a593Smuzhiyun xy->entries = xlen * ylen; 16*4882a593Smuzhiyun xy->max_x = xlen; 17*4882a593Smuzhiyun xy->max_y = ylen; 18*4882a593Smuzhiyun } 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun return xy; 21*4882a593Smuzhiyun } 22*4882a593Smuzhiyun xyarray__reset(struct xyarray * xy)23*4882a593Smuzhiyunvoid xyarray__reset(struct xyarray *xy) 24*4882a593Smuzhiyun { 25*4882a593Smuzhiyun size_t n = xy->entries * xy->entry_size; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun memset(xy->contents, 0, n); 28*4882a593Smuzhiyun } 29*4882a593Smuzhiyun xyarray__delete(struct xyarray * xy)30*4882a593Smuzhiyunvoid xyarray__delete(struct xyarray *xy) 31*4882a593Smuzhiyun { 32*4882a593Smuzhiyun free(xy); 33*4882a593Smuzhiyun } 34