summaryrefslogtreecommitdiffstats
path: root/hw1/basic-array2.c
blob: 848ec67b8ffa082e9f43f5d69dfdbe5c4a4fad8d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "xwrap.h"
#include <stdlib.h>
#include "basic-array.h"

ArrayTwo* array_two_create(int itemsize, int lenx, int leny){
    if(lenx <= 0 || leny <= 0 || itemsize <= 0){
        return NULL;
    }
    ArrayTwo* arr = (ArrayTwo*)xmalloc(sizeof(ArrayTwo));
    if(arr == NULL){
        return NULL;
    }
    arr->arr_itemsize = itemsize;
    arr->arr_lenx = lenx;
    arr->arr_leny = leny;
    arr->arr_data = xmalloc(itemsize*lenx*leny);
    if(arr->arr_data == NULL){
        free(arr);
        return NULL;
    }
    return arr;
}

void array_two_free(ArrayTwo* arr){
    free(arr->arr_data);
    free(arr);
}