/* Location. */ static int regnode(regex_t *preg, int op) { reg_grow(preg, 2); preg->program[preg->p++] = op; preg->program[preg->p++] = 0; /* Return the start of the node */ return preg->p - 2; }
/* Location. */ static int regnode(regex_t *preg, int op) { reg_grow(preg, 2); /* The OP followed by a next pointer */ preg->program[preg->p++] = op; preg->program[preg->p++] = 0; /* Return the start of the node */ return preg->p - 2; }
/* - reginsert - insert an operator in front of already-emitted operand * * Means relocating the operand. * Returns the new location of the original operand. */ static int reginsert(regex_t *preg, int op, int size, int opnd ) { reg_grow(preg, size); /* Move everything from opnd up */ memmove(preg->program + opnd + size, preg->program + opnd, sizeof(int) * (preg->p - opnd)); /* Zero out the new space */ memset(preg->program + opnd, 0, sizeof(int) * size); preg->program[opnd] = op; preg->p += size; return opnd + size; }
/* - regc - emit (if appropriate) a byte of code */ static void regc(regex_t *preg, int b ) { reg_grow(preg, 1); preg->program[preg->p++] = b; }