X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=zilasm%2Fzmem.c;fp=zilasm%2Fzmem.c;h=b67e3c2ad4f82f7a2d6191440b318e88907750a5;hb=fd453701e368225dd15e9df2e5b1752aebe454e8;hp=0000000000000000000000000000000000000000;hpb=093225c7cb864aaa31567969301eb5f36bd9a5f4;p=zilutils.git diff --git a/zilasm/zmem.c b/zilasm/zmem.c new file mode 100644 index 0000000..b67e3c2 --- /dev/null +++ b/zilasm/zmem.c @@ -0,0 +1,47 @@ +/* + * zmem.c -- part of ZilUtils/ZilAsm + * + * Copyright (C) 2016 Jason Self + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + */ + +#include +#include /* bzero */ +#include /* malloc, free */ + +#include "zmem.h" + +ZMemblock* zmem_init(unsigned maxsize) +{ + ZMemblock *zmb = malloc(sizeof(ZMemblock) + maxsize - 1); + assert(zmb); + zmb->allocated_size = maxsize; + zmb->used_size = 0; + bzero(&zmb->contents, maxsize); + return zmb; +} + +void zmem_destroy(ZMemblock *zmb) +{ + assert(zmb); + free(zmb); +} + +void zmem_putbyte(ZMemblock *zmb, unsigned char val) +{ + assert(zmb); + assert(zmb->used_size < zmb->allocated_size); + zmb->contents[zmb->used_size++] = val; +}