1/*	$NetBSD: rdatasetiter.c,v 1.1 2024/02/18 20:57:33 christos Exp $	*/
2
3/*
4 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
5 *
6 * SPDX-License-Identifier: MPL-2.0
7 *
8 * This Source Code Form is subject to the terms of the Mozilla Public
9 * License, v. 2.0. If a copy of the MPL was not distributed with this
10 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
11 *
12 * See the COPYRIGHT file distributed with this work for additional
13 * information regarding copyright ownership.
14 */
15
16/*! \file */
17
18#include <stddef.h>
19
20#include <isc/util.h>
21
22#include <dns/rdataset.h>
23#include <dns/rdatasetiter.h>
24
25void
26dns_rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp) {
27	/*
28	 * Destroy '*iteratorp'.
29	 */
30
31	REQUIRE(iteratorp != NULL);
32	REQUIRE(DNS_RDATASETITER_VALID(*iteratorp));
33
34	(*iteratorp)->methods->destroy(iteratorp);
35
36	ENSURE(*iteratorp == NULL);
37}
38
39isc_result_t
40dns_rdatasetiter_first(dns_rdatasetiter_t *iterator) {
41	/*
42	 * Move the rdataset cursor to the first rdataset at the node (if any).
43	 */
44
45	REQUIRE(DNS_RDATASETITER_VALID(iterator));
46
47	return (iterator->methods->first(iterator));
48}
49
50isc_result_t
51dns_rdatasetiter_next(dns_rdatasetiter_t *iterator) {
52	/*
53	 * Move the rdataset cursor to the next rdataset at the node (if any).
54	 */
55
56	REQUIRE(DNS_RDATASETITER_VALID(iterator));
57
58	return (iterator->methods->next(iterator));
59}
60
61void
62dns_rdatasetiter_current(dns_rdatasetiter_t *iterator,
63			 dns_rdataset_t *rdataset) {
64	/*
65	 * Return the current rdataset.
66	 */
67
68	REQUIRE(DNS_RDATASETITER_VALID(iterator));
69	REQUIRE(DNS_RDATASET_VALID(rdataset));
70	REQUIRE(!dns_rdataset_isassociated(rdataset));
71
72	iterator->methods->current(iterator, rdataset);
73}
74