1/* $NetBSD$ */ 2 3/* 4 * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") 5 * Copyright (C) 1999-2001 Internet Software Consortium. 6 * 7 * Permission to use, copy, modify, and/or distribute this software for any 8 * purpose with or without fee is hereby granted, provided that the above 9 * copyright notice and this permission notice appear in all copies. 10 * 11 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 12 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 13 * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 14 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 15 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 16 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20/* Id: rdatasetiter.c,v 1.16 2007/06/19 23:47:16 tbox Exp */ 21 22/*! \file */ 23 24#include <config.h> 25 26#include <stddef.h> 27 28#include <isc/util.h> 29 30#include <dns/rdataset.h> 31#include <dns/rdatasetiter.h> 32 33void 34dns_rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp) { 35 /* 36 * Destroy '*iteratorp'. 37 */ 38 39 REQUIRE(iteratorp != NULL); 40 REQUIRE(DNS_RDATASETITER_VALID(*iteratorp)); 41 42 (*iteratorp)->methods->destroy(iteratorp); 43 44 ENSURE(*iteratorp == NULL); 45} 46 47isc_result_t 48dns_rdatasetiter_first(dns_rdatasetiter_t *iterator) { 49 /* 50 * Move the rdataset cursor to the first rdataset at the node (if any). 51 */ 52 53 REQUIRE(DNS_RDATASETITER_VALID(iterator)); 54 55 return (iterator->methods->first(iterator)); 56} 57 58isc_result_t 59dns_rdatasetiter_next(dns_rdatasetiter_t *iterator) { 60 /* 61 * Move the rdataset cursor to the next rdataset at the node (if any). 62 */ 63 64 REQUIRE(DNS_RDATASETITER_VALID(iterator)); 65 66 return (iterator->methods->next(iterator)); 67} 68 69void 70dns_rdatasetiter_current(dns_rdatasetiter_t *iterator, 71 dns_rdataset_t *rdataset) 72{ 73 /* 74 * Return the current rdataset. 75 */ 76 77 REQUIRE(DNS_RDATASETITER_VALID(iterator)); 78 REQUIRE(DNS_RDATASET_VALID(rdataset)); 79 REQUIRE(! dns_rdataset_isassociated(rdataset)); 80 81 iterator->methods->current(iterator, rdataset); 82} 83