From 38bb9be39486214eeb7e0f4273fa0051ed880adc Mon Sep 17 00:00:00 2001 From: Michael Stone Date: Wed, 09 Dec 2009 03:52:26 +0000 Subject: Add INIT() and COPY() operators from dnshash. --- diff --git a/rainbow/nss/cgen.h b/rainbow/nss/cgen.h index 5ef151a..81bc895 100644 --- a/rainbow/nss/cgen.h +++ b/rainbow/nss/cgen.h @@ -6,3 +6,5 @@ #define CHK(EXPR, MSG, ERR_LABEL) {if(EXPR) { PERROR(MSG); goto ERR_LABEL;}} #define LET(LETEXPR, CONDEXPR, MSG, ERR_LABEL) LETEXPR; if (CONDEXPR) { PERROR(MSG); goto ERR_LABEL;} #define TST(EXPR, TRUE, MSG, ERR_LABEL) {if (EXPR) {(TRUE); PERROR(MSG); goto ERR_LABEL;}} +#define INIT(BUF, LEN, TYPE, INIT, MSG, ERR_LABEL) { CHK(*(LEN) < sizeof(TYPE), (MSG), ERR_LABEL); (*(TYPE*)(*(BUF))) = (INIT); (*(LEN)) -= sizeof(TYPE); (*(BUF)) += sizeof(TYPE); } +#define COPY(BUF, LEN, TYPE, SRC, MSG, ERR_LABEL) { CHK(*(LEN) < sizeof(TYPE), (MSG), ERR_LABEL); memcpy(*(BUF), (SRC), sizeof(TYPE)); (*(LEN)) -= sizeof(TYPE); (*(BUF)) += sizeof(TYPE); } -- cgit v0.9.1