コード例 #1
0
ファイル: mv.c プロジェクト: aunali1/exopc
/* Need to store the difference somewhere... */
struct xn_m_vec *mv_read(void * meta, struct xn_m_vec *mv, size_t n) {
	struct xn_m_vec *m, *p;
	int i;
	void * src, * dst;
	size_t nbytes;
	

       	p = m = (struct xn_m_vec *)Arena_alloc(sys_arena, sizeof *m * n);
	assert(m);

	for(i = 0; i < n; i++, p++, mv++) {
		*p = *mv;

		assert(p->nbytes);
		p->addr = (void *)Arena_alloc(sys_arena, mv->nbytes);
		assert(p->addr);

		src = (char *)meta + mv->offset;
		dst = p->addr;
		nbytes = mv->nbytes;
		memcpy(dst, src, nbytes);
	}

        return m;
}
コード例 #2
0
ファイル: arena.c プロジェクト: asmloverX/childish-codes
void *Arena_calloc(T arena, long count, long nbytes,
                   const char *file, int line) {
    void *ptr;
    assert(count > 0);
    ptr = Arena_alloc(arena, count*nbytes, file, line);
    memset(ptr, '\0', count*nbytes);
    return ptr;
}
コード例 #3
0
ファイル: OepClient.c プロジェクト: navicore/oescript_c
//todo: implement some throttle related to outstanding responses
static void _save_context(T _this_, oe_id cid, ACContext *pc) {
    OE_DLOG(0, OEP_CLIENT_SAVE_C_W_CID, cid);
    assert(_this_);
    assert(_this_->pending);
    assert(cid);
    assert(pc);
    CID_KEY *key;
    key = Arena_alloc(pc->context->arena, sizeof *key, __FILE__, __LINE__);
    key->cid = cid;
    Table_put(_this_->pending, key, pc);
}
コード例 #4
0
ファイル: JsonNet.c プロジェクト: navicore/oescript_c
int JsonNet_read_msg(OeSession client, OekMsg *msgp, Arena_T arena) {

    OeNetConn conn = OeSession_get_conn(client);

    if (!OeNetConn_available(conn)) return 0;

    int ret = 0;

    int pos = OeNetConn_get_pos(conn, MSG_END_BYTES, 2);
    if (pos < 0) {
        OE_DLOG(0, OEJSON_PARTIAL_READ);
        return ret;
    }

    size_t input_sz = pos + 2;

    u_char *input;
    input = Arena_alloc(arena, input_sz + 1, __FILE__, __LINE__);
    input[input_sz] = 0;

    //size_t amt =
    OeNetConn_read(conn, input, input_sz);
#ifdef OE_TRACE
    OE_DLOG(0, OEP_JSON_READMSG, input);
#endif

    OekMsg msg;
    int rc = json_msg_create(&msg, input, arena);
    if (rc) {
        OE_ERR(0, OEJSON_BAD_PARSE, rc, (char *) input);
        ret = -1;
        goto quit;
    } else {
        *msgp = msg;
        ret = 1;
    }

quit:
    return ret;
}