+
+ func (f FileDel) atoms() []Atom {
+ if f.Contents == nil {
+ return []Atom{f.Del}
+ }
+ return []Atom{f.Del, f.Contents}
+ }
+
+ func fileDel(data []byte) ([]byte, FileDel, error) {
+ var f FileDel
+ data, _, err := tuple(
+ assign(&f.Del, atom),
+ assign(&f.Contents, mapValue(option(atom), func(p *Atom) Atom {
+ if p == nil {
+ return nil
+ }
+ return *p
+ })),
+ assign(&f.Path, toString(lengthData(uint64LE))),
+ assign(&f.Encoding, mapValue(option(toString(lengthData(uint64LE))), func(p *string) string {
+ if p == nil {
+ return ""
+ }
+ return *p
+ })),
+ )(data)
+ return data, f, err
+ }