From 64c44522e90e8d4d47b4ebdc6fb03636ecc48b75 Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" <pesco@khjk.org> Date: Fri, 25 Jan 2013 20:16:44 +0100 Subject: [PATCH] use new glue api in rr.c --- examples/rr.c | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/examples/rr.c b/examples/rr.c index 94c4b7cc..38edd18a 100644 --- a/examples/rr.c +++ b/examples/rr.c @@ -20,10 +20,10 @@ bool validate_null(HParseResult *p) { const HParsedToken *act_null(const HParseResult *p) { dns_rr_null_t *null = H_ALLOC(dns_rr_null_t); - size_t len = p->ast->seq->used; + size_t len = h_seq_len(p->ast); uint8_t *buf = h_arena_malloc(p->arena, sizeof(uint8_t)*len); for (size_t i=0; i<len; ++i) - buf[i] = p->ast->seq->elements[i]->uint; + buf[i] = H_FIELD_UINT(i); return H_MAKE(dns_rr_null_t, null); } @@ -31,16 +31,17 @@ const HParsedToken *act_null(const HParseResult *p) { const HParsedToken *act_txt(const HParseResult *p) { dns_rr_txt_t *txt = H_ALLOC(dns_rr_txt_t); - const HCountedArray *arr = p->ast->seq; + const HCountedArray *arr = h_cast_seq(p->ast); uint8_t **ret = h_arena_malloc(arr->arena, sizeof(uint8_t*)*arr->used); for (size_t i=0; i<arr->used; ++i) { - uint8_t *tmp = h_arena_malloc(arr->arena, sizeof(uint8_t)*arr->elements[i]->seq->used); - for (size_t j=0; j<arr->elements[i]->seq->used; ++j) - tmp[j] = arr->elements[i]->seq->elements[j]->uint; + size_t len = h_seq_len(arr->elements[i]); + uint8_t *tmp = h_arena_malloc(arr->arena, sizeof(uint8_t)*len); + for (size_t j=0; j<len; ++j) + tmp[j] = h_seq_index_uint(arr->elements[i], j); ret[i] = tmp; } - txt->count = p->ast->seq->elements[0]->seq->used; + txt->count = arr->used; txt->txt_data = ret; return H_MAKE(dns_rr_txt_t, txt); @@ -49,10 +50,10 @@ const HParsedToken *act_txt(const HParseResult *p) { const HParsedToken* act_cstr(const HParseResult *p) { dns_cstr_t *cs = H_ALLOC(dns_cstr_t); - const HCountedArray *arr = p->ast->seq; + const HCountedArray *arr = h_cast_seq(p->ast); uint8_t *ret = h_arena_malloc(arr->arena, sizeof(uint8_t)*arr->used); for (size_t i=0; i<arr->used; ++i) - ret[i] = arr->elements[i]->uint; + ret[i] = h_cast_uint(arr->elements[i]); assert(ret[arr->used-1] == '\0'); // XXX Is this right?! If so, shouldn't it be a validation? *cs = ret; @@ -64,11 +65,11 @@ const HParsedToken* act_soa(const HParseResult *p) { soa->mname = *H_FIELD(dns_domain_t, 0); soa->rname = *H_FIELD(dns_domain_t, 1); - soa->serial = p->ast->seq->elements[2]->uint; - soa->refresh = p->ast->seq->elements[3]->uint; - soa->retry = p->ast->seq->elements[4]->uint; - soa->expire = p->ast->seq->elements[5]->uint; - soa->minimum = p->ast->seq->elements[6]->uint; + soa->serial = H_FIELD_UINT(2); + soa->refresh = H_FIELD_UINT(3); + soa->retry = H_FIELD_UINT(4); + soa->expire = H_FIELD_UINT(5); + soa->minimum = H_FIELD_UINT(6); return H_MAKE(dns_rr_soa_t, soa); } @@ -76,12 +77,12 @@ const HParsedToken* act_soa(const HParseResult *p) { const HParsedToken* act_wks(const HParseResult *p) { dns_rr_wks_t *wks = H_ALLOC(dns_rr_wks_t); - wks->address = p->ast->seq->elements[0]->uint; - wks->protocol = p->ast->seq->elements[1]->uint; - wks->len = p->ast->seq->elements[2]->seq->used; + wks->address = H_FIELD_UINT(0); + wks->protocol = H_FIELD_UINT(1); + wks->len = H_FIELD_SEQ(2)->used; wks->bit_map = h_arena_malloc(p->arena, sizeof(uint8_t)*wks->len); for (size_t i=0; i<wks->len; ++i) - wks->bit_map[i] = p->ast->seq->elements[2]->seq->elements[i]->uint; + wks->bit_map[i] = h_seq_index_uint(h_seq_index(p->ast, 2), i); return H_MAKE(dns_rr_wks_t, wks); } @@ -107,7 +108,7 @@ const HParsedToken* act_minfo(const HParseResult *p) { const HParsedToken* act_mx(const HParseResult *p) { dns_rr_mx_t *mx = H_ALLOC(dns_rr_mx_t); - mx->preference = p->ast->seq->elements[0]->uint; + mx->preference = H_FIELD_UINT(0); mx->exchange = *H_FIELD(dns_domain_t, 1); return H_MAKE(dns_rr_mx_t, mx); -- GitLab