// Code generated by go run gob_gen.go; DO NOT EDIT.

package fuzz

import (
	"android/soong/android"
	"bytes"
	"github.com/google/blueprint/gobtools"
)

func init() {
	FuzzConfigInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(FuzzConfigInfo) })
	FuzzPackagedModuleInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(FuzzPackagedModuleInfo) })
}

func (r FuzzConfigInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
	var err error

	if err = gobtools.EncodeString(buf, string(r.Vector)); err != nil {
		return err
	}

	if err = gobtools.EncodeString(buf, string(r.ServicePrivilege)); err != nil {
		return err
	}

	if err = gobtools.EncodeString(buf, string(r.Users)); err != nil {
		return err
	}

	if err = gobtools.EncodeString(buf, string(r.FuzzedCodeUsage)); err != nil {
		return err
	}

	if err = gobtools.EncodeString(buf, string(r.AutomaticallyRouteTo)); err != nil {
		return err
	}

	if err = gobtools.EncodeString(buf, string(r.UsePlatformLibs)); err != nil {
		return err
	}

	if err = gobtools.EncodeSimple(buf, r.FuzzOnHaikuDevice); err != nil {
		return err
	}

	if err = gobtools.EncodeSimple(buf, r.FuzzOnHaikuHost); err != nil {
		return err
	}

	if err = gobtools.EncodeSimple(buf, r.UseForPresubmit); err != nil {
		return err
	}
	return err
}

func (r *FuzzConfigInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
	var err error

	var val2 string
	err = gobtools.DecodeString(buf, &val2)
	if err != nil {
		return err
	}
	r.Vector = Vector(val2)

	var val5 string
	err = gobtools.DecodeString(buf, &val5)
	if err != nil {
		return err
	}
	r.ServicePrivilege = ServicePrivilege(val5)

	var val8 string
	err = gobtools.DecodeString(buf, &val8)
	if err != nil {
		return err
	}
	r.Users = UserData(val8)

	var val11 string
	err = gobtools.DecodeString(buf, &val11)
	if err != nil {
		return err
	}
	r.FuzzedCodeUsage = FuzzedCodeUsage(val11)

	var val14 string
	err = gobtools.DecodeString(buf, &val14)
	if err != nil {
		return err
	}
	r.AutomaticallyRouteTo = AutomaticallyRouteTo(val14)

	var val17 string
	err = gobtools.DecodeString(buf, &val17)
	if err != nil {
		return err
	}
	r.UsePlatformLibs = UsePlatformLibs(val17)

	err = gobtools.DecodeSimple[bool](buf, &r.FuzzOnHaikuDevice)
	if err != nil {
		return err
	}

	err = gobtools.DecodeSimple[bool](buf, &r.FuzzOnHaikuHost)
	if err != nil {
		return err
	}

	err = gobtools.DecodeSimple[bool](buf, &r.UseForPresubmit)
	if err != nil {
		return err
	}

	return err
}

var FuzzConfigInfoGobRegId int16

func (r FuzzConfigInfo) GetTypeId() int16 {
	return FuzzConfigInfoGobRegId
}

func (r FuzzPackagedModuleInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
	var err error

	val1 := r.FuzzConfig == nil
	if err = gobtools.EncodeSimple(buf, val1); err != nil {
		return err
	}
	if !val1 {
		if err = (*r.FuzzConfig).Encode(ctx, buf); err != nil {
			return err
		}
	}

	if err = gobtools.EncodeInterface(ctx, buf, r.Dictionary); err != nil {
		return err
	}

	if r.Corpus == nil {
		if err = gobtools.EncodeSimple(buf, int32(-1)); err != nil {
			return err
		}
	} else {
		if err = gobtools.EncodeSimple(buf, int32(len(r.Corpus))); err != nil {
			return err
		}
		for val2 := 0; val2 < len(r.Corpus); val2++ {
			if err = gobtools.EncodeInterface(ctx, buf, r.Corpus[val2]); err != nil {
				return err
			}
		}
	}

	if err = gobtools.EncodeInterface(ctx, buf, r.Config); err != nil {
		return err
	}

	if r.Data == nil {
		if err = gobtools.EncodeSimple(buf, int32(-1)); err != nil {
			return err
		}
	} else {
		if err = gobtools.EncodeSimple(buf, int32(len(r.Data))); err != nil {
			return err
		}
		for val3 := 0; val3 < len(r.Data); val3++ {
			if err = gobtools.EncodeInterface(ctx, buf, r.Data[val3]); err != nil {
				return err
			}
		}
	}
	return err
}

func (r *FuzzPackagedModuleInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
	var err error

	var val2 bool
	if err = gobtools.DecodeSimple(buf, &val2); err != nil {
		return err
	}
	if !val2 {
		var val1 FuzzConfigInfo
		if err = val1.Decode(ctx, buf); err != nil {
			return err
		}
		r.FuzzConfig = &val1
	}

	if val5, err := gobtools.DecodeInterface(ctx, buf); err != nil {
		return err
	} else if val5 == nil {
		r.Dictionary = nil
	} else {
		r.Dictionary = val5.(android.Path)
	}

	var val8 int32
	err = gobtools.DecodeSimple[int32](buf, &val8)
	if err != nil {
		return err
	}
	if val8 != -1 {
		r.Corpus = make([]android.Path, val8)
		for val9 := 0; val9 < int(val8); val9++ {
			if val11, err := gobtools.DecodeInterface(ctx, buf); err != nil {
				return err
			} else if val11 == nil {
				r.Corpus[val9] = nil
			} else {
				r.Corpus[val9] = val11.(android.Path)
			}
		}
	}

	if val13, err := gobtools.DecodeInterface(ctx, buf); err != nil {
		return err
	} else if val13 == nil {
		r.Config = nil
	} else {
		r.Config = val13.(android.Path)
	}

	var val16 int32
	err = gobtools.DecodeSimple[int32](buf, &val16)
	if err != nil {
		return err
	}
	if val16 != -1 {
		r.Data = make([]android.Path, val16)
		for val17 := 0; val17 < int(val16); val17++ {
			if val19, err := gobtools.DecodeInterface(ctx, buf); err != nil {
				return err
			} else if val19 == nil {
				r.Data[val17] = nil
			} else {
				r.Data[val17] = val19.(android.Path)
			}
		}
	}

	return err
}

var FuzzPackagedModuleInfoGobRegId int16

func (r FuzzPackagedModuleInfo) GetTypeId() int16 {
	return FuzzPackagedModuleInfoGobRegId
}
