// Code generated by "go run parse_generate.go"; DO NOT EDIT.

package dns

import "fmt"
import "codeberg.org/miekg/dns/internal/dnslex"

func parse(rr RR, c *dnslex.Lexer, o string) error {
	switch x := rr.(type) {
	case *TSIG:
		return x.parse(c, o)
	case *DELEG:
		return x.parse(c, o)
	case *OPT:
		return x.parse(c, o)
	case *NSEC3:
		return x.parse(c, o)
	case *DNSKEY:
		return x.parse(c, o)
	case *DS:
		return x.parse(c, o)
	case *NSEC:
		return x.parse(c, o)
	case *RRSIG:
		return x.parse(c, o)
	case *AAAA:
		return x.parse(c, o)
	case *A:
		return x.parse(c, o)
	case *TXT:
		return x.parse(c, o)
	case *NS:
		return x.parse(c, o)
	case *MX:
		return x.parse(c, o)
	case *CNAME:
		return x.parse(c, o)
	case *NULL:
		return x.parse(c, o)
	case *NXNAME:
		return x.parse(c, o)
	case *HINFO:
		return x.parse(c, o)
	case *MB:
		return x.parse(c, o)
	case *MG:
		return x.parse(c, o)
	case *MINFO:
		return x.parse(c, o)
	case *MR:
		return x.parse(c, o)
	case *MF:
		return x.parse(c, o)
	case *MD:
		return x.parse(c, o)
	case *AFSDB:
		return x.parse(c, o)
	case *X25:
		return x.parse(c, o)
	case *ISDN:
		return x.parse(c, o)
	case *RT:
		return x.parse(c, o)
	case *PTR:
		return x.parse(c, o)
	case *RP:
		return x.parse(c, o)
	case *SOA:
		return x.parse(c, o)
	case *SPF:
		return x.parse(c, o)
	case *AVC:
		return x.parse(c, o)
	case *WALLET:
		return x.parse(c, o)
	case *CLA:
		return x.parse(c, o)
	case *IPN:
		return x.parse(c, o)
	case *SRV:
		return x.parse(c, o)
	case *NAPTR:
		return x.parse(c, o)
	case *CERT:
		return x.parse(c, o)
	case *DNAME:
		return x.parse(c, o)
	case *PX:
		return x.parse(c, o)
	case *GPOS:
		return x.parse(c, o)
	case *LOC:
		return x.parse(c, o)
	case *SIG:
		return x.parse(c, o)
	case *NXT:
		return x.parse(c, o)
	case *DLV:
		return x.parse(c, o)
	case *CDS:
		return x.parse(c, o)
	case *KX:
		return x.parse(c, o)
	case *TA:
		return x.parse(c, o)
	case *TALINK:
		return x.parse(c, o)
	case *SSHFP:
		return x.parse(c, o)
	case *KEY:
		return x.parse(c, o)
	case *CDNSKEY:
		return x.parse(c, o)
	case *RKEY:
		return x.parse(c, o)
	case *NSAPPTR:
		return x.parse(c, o)
	case *NSEC3PARAM:
		return x.parse(c, o)
	case *TKEY:
		return x.parse(c, o)
	case *RFC3597:
		return x.parse(c, o)
	case *URI:
		return x.parse(c, o)
	case *DHCID:
		return x.parse(c, o)
	case *TLSA:
		return x.parse(c, o)
	case *SMIMEA:
		return x.parse(c, o)
	case *HIP:
		return x.parse(c, o)
	case *NINFO:
		return x.parse(c, o)
	case *NID:
		return x.parse(c, o)
	case *L32:
		return x.parse(c, o)
	case *L64:
		return x.parse(c, o)
	case *LP:
		return x.parse(c, o)
	case *EUI48:
		return x.parse(c, o)
	case *EUI64:
		return x.parse(c, o)
	case *CAA:
		return x.parse(c, o)
	case *UID:
		return x.parse(c, o)
	case *GID:
		return x.parse(c, o)
	case *UINFO:
		return x.parse(c, o)
	case *EID:
		return x.parse(c, o)
	case *NIMLOC:
		return x.parse(c, o)
	case *OPENPGPKEY:
		return x.parse(c, o)
	case *CSYNC:
		return x.parse(c, o)
	case *ZONEMD:
		return x.parse(c, o)
	case *RESINFO:
		return x.parse(c, o)
	case *SVCB:
		return x.parse(c, o)
	case *HTTPS:
		return x.parse(c, o)
	case *DELEGPARAM:
		return x.parse(c, o)
	case *DSYNC:
		return x.parse(c, o)
	case *ANY:
		return x.parse(c, o)
	case *AXFR:
		return x.parse(c, o)
	case *IXFR:
		return x.parse(c, o)
	case *ZONEVERSION:
		return x.parse(c, o)
	case *EDE:
		return x.parse(c, o)
	case *NSID:
		return x.parse(c, o)
	}
	// if here, we don't have the RR in our pkg, check if it does Parser.
	if x, ok := rr.(Parser); ok {
		err := x.Parse(dnslex.Tokens(c), o)
		if err != nil {
			return &ParseError{err: err.Error()}
		}
		return nil
	}
	return &ParseError{err: fmt.Sprintf("no parse defined: %T", rr)}
}
