less type assertions

From cznic:
Let me suggest something like:

x := rr.(*RR_SOA)
x.Hdr = *hdr
x.Ns = tok.T[0]
...

to avoid repeated type assertion - unnecessary for the still same 'rr'.
This commit is contained in:
Miek Gieben 2011-07-19 13:48:32 +02:00
parent 7c716e66c0
commit b13a2d6ad9
2 changed files with 301 additions and 265 deletions

View File

@ -2,60 +2,69 @@
machine z;
action rdata_a {
rr.(*RR_A).Hdr = *hdr
rr.(*RR_A).A = net.ParseIP(tok.T[0])
x := rr.(*RR_A)
x.Hdr = *hdr
x.A = net.ParseIP(tok.T[0])
}
action rdata_aaaa {
rr.(*RR_AAAA).Hdr = *hdr
rr.(*RR_AAAA).AAAA = net.ParseIP(tok.T[0])
x := rr.(*RR_AAAA)
x.Hdr = *hdr
x.AAAA = net.ParseIP(tok.T[0])
}
action rdata_ns {
rr.(*RR_NS).Hdr = *hdr
rr.(*RR_NS).Ns = tok.T[0]
x := rr.(*RR_NS)
x.Hdr = *hdr
x.Ns = tok.T[0]
}
action rdata_cname {
rr.(*RR_CNAME).Hdr = *hdr
rr.(*RR_CNAME).Cname = tok.T[0]
x := rr.(*RR_CNAME)
x.Hdr = *hdr
x.Cname = tok.T[0]
}
action rdata_soa {
rr.(*RR_SOA).Hdr = *hdr
rr.(*RR_SOA).Ns = tok.T[0]
rr.(*RR_SOA).Mbox = tok.T[1]
rr.(*RR_SOA).Serial = uint32(tok.N[0])
rr.(*RR_SOA).Refresh = uint32(tok.N[1])
rr.(*RR_SOA).Retry = uint32(tok.N[2])
rr.(*RR_SOA).Expire = uint32(tok.N[3])
rr.(*RR_SOA).Minttl = uint32(tok.N[4])
x := rr.(*RR_SOA)
x.Hdr = *hdr
x.Ns = tok.T[0]
x.Mbox = tok.T[1]
x.Serial = uint32(tok.N[0])
x.Refresh = uint32(tok.N[1])
x.Retry = uint32(tok.N[2])
x.Expire = uint32(tok.N[3])
x.Minttl = uint32(tok.N[4])
}
action rdata_mx {
rr.(*RR_MX).Hdr = *hdr;
rr.(*RR_MX).Pref = uint16(tok.N[0])
rr.(*RR_MX).Mx = tok.T[0]
x := rr.(*RR_MX)
x.Hdr = *hdr;
x.Pref = uint16(tok.N[0])
x.Mx = tok.T[0]
}
action rdata_ds {
rr.(*RR_DS).Hdr = *hdr;
rr.(*RR_DS).KeyTag = uint16(tok.N[0])
rr.(*RR_DS).Algorithm = uint8(tok.N[1])
rr.(*RR_DS).DigestType = uint8(tok.N[2])
rr.(*RR_DS).Digest = tok.T[0]
x := rr.(*RR_DS)
x.Hdr = *hdr;
x.KeyTag = uint16(tok.N[0])
x.Algorithm = uint8(tok.N[1])
x.DigestType = uint8(tok.N[2])
x.Digest = tok.T[0]
}
action rdata_dnskey {
rr.(*RR_DNSKEY).Hdr = *hdr;
rr.(*RR_DNSKEY).Flags = uint16(tok.N[0])
rr.(*RR_DNSKEY).Protocol = uint8(tok.N[1])
rr.(*RR_DNSKEY).Algorithm = uint8(tok.N[2])
rr.(*RR_DNSKEY).PublicKey = tok.T[0]
x := rr.(*RR_DNSKEY)
x.Hdr = *hdr;
x.Flags = uint16(tok.N[0])
x.Protocol = uint8(tok.N[1])
x.Algorithm = uint8(tok.N[2])
x.PublicKey = tok.T[0]
}
action rdata_rrsig {
rr.(*RR_RRSIG).Hdr = *hdr;
rr.(*RR_RRSIG).TypeCovered = uint16(tok.N[0])
rr.(*RR_RRSIG).Algorithm = uint8(tok.N[1])
rr.(*RR_RRSIG).Labels = uint8(tok.N[2])
rr.(*RR_RRSIG).OrigTtl = uint32(tok.N[3])
rr.(*RR_RRSIG).Expiration = uint32(tok.N[4])
rr.(*RR_RRSIG).Inception = uint32(tok.N[5])
rr.(*RR_RRSIG).KeyTag = uint16(tok.N[6])
rr.(*RR_RRSIG).SignerName = tok.T[0]
rr.(*RR_RRSIG).Signature = tok.T[1]
x := rr.(*RR_RRSIG)
x.Hdr = *hdr;
x.TypeCovered = uint16(tok.N[0])
x.Algorithm = uint8(tok.N[1])
x.Labels = uint8(tok.N[2])
x.OrigTtl = uint32(tok.N[3])
x.Expiration = uint32(tok.N[4])
x.Inception = uint32(tok.N[5])
x.KeyTag = uint16(tok.N[6])
x.SignerName = tok.T[0]
x.Signature = tok.T[1]
}
}%%

479
zparse.go

File diff suppressed because it is too large Load Diff