Ejemplo n.º 1
0
void cev_prim_str() {
  dword len;
  memcpy(&len, bc_in->ptr + bc_in->cp, OS_STRLEN);
  IP += OS_STRLEN;
  bc_add_dword(bc_out, len);
  bc_add_n(bc_out, bc_in->ptr + bc_in->cp, len);
  IP += len;
}
Ejemplo n.º 2
0
/*
 * add one command and one string (see: bc_store_string)
 */
void bc_add_strn(bc_t *bc, const char *str, int len) {
  if (len > BC_MAX_STORE_SIZE) {
    sc_raise("STRING TOO BIG");
  } else {
    bc_add_code(bc, kwTYPE_STR);
    bc_add_dword(bc, len);
    if (bc->count >= bc->size - len) {
      bc_resize(bc, bc->size + BC_ALLOC_INCR);
    }
    memcpy(bc->ptr + bc->count, str, len);
    bc->count += len;
  }
}
Ejemplo n.º 3
0
/*
 * add an external procedure-call
 */
void bc_add_extpcode(bc_t *bc, int lib, long idx) {
  bc_add_code(bc, kwTYPE_CALLEXTP);
  bc_add_dword(bc, lib);
  bc_add_dword(bc, idx);
}