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

package android

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

func init() {
	TestSuiteInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(TestSuiteInfo) })
	TestSuiteSharedLibsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(TestSuiteSharedLibsInfo) })
	MakeNameInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(MakeNameInfo) })
	FilePairGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(FilePair) })
	TestSuiteInstallsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(TestSuiteInstallsInfo) })
}

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

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

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

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

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

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

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

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

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

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

	if err = gobtools.EncodeSimple(buf, r.PerTestcaseDirectory); 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 = r.Data[val3].Encode(ctx, buf); err != nil {
				return err
			}
		}
	}

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

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

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

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

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

	err = gobtools.DecodeString(buf, &r.NameSuffix)
	if err != nil {
		return err
	}

	var val3 int32
	err = gobtools.DecodeSimple[int32](buf, &val3)
	if err != nil {
		return err
	}
	if val3 != -1 {
		r.TestSuites = make([]string, val3)
		for val4 := 0; val4 < int(val3); val4++ {
			err = gobtools.DecodeString(buf, &r.TestSuites[val4])
			if err != nil {
				return err
			}
		}
	}

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

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

	err = gobtools.DecodeString(buf, &r.MainFileStem)
	if err != nil {
		return err
	}

	err = gobtools.DecodeString(buf, &r.MainFileExt)
	if err != nil {
		return err
	}

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

	err = gobtools.DecodeString(buf, &r.ConfigFileSuffix)
	if err != nil {
		return err
	}

	var val16 int32
	err = gobtools.DecodeSimple[int32](buf, &val16)
	if err != nil {
		return err
	}
	if val16 != -1 {
		r.ExtraConfigs = make([]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.ExtraConfigs[val17] = nil
			} else {
				r.ExtraConfigs[val17] = val19.(Path)
			}
		}
	}

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

	var val22 int32
	err = gobtools.DecodeSimple[int32](buf, &val22)
	if err != nil {
		return err
	}
	if val22 != -1 {
		r.Data = make([]DataPath, val22)
		for val23 := 0; val23 < int(val22); val23++ {
			if err = r.Data[val23].Decode(ctx, buf); err != nil {
				return err
			}
		}
	}

	var val26 int32
	err = gobtools.DecodeSimple[int32](buf, &val26)
	if err != nil {
		return err
	}
	if val26 != -1 {
		r.NonArchData = make([]DataPath, val26)
		for val27 := 0; val27 < int(val26); val27++ {
			if err = r.NonArchData[val27].Decode(ctx, buf); err != nil {
				return err
			}
		}
	}

	var val30 int32
	err = gobtools.DecodeSimple[int32](buf, &val30)
	if err != nil {
		return err
	}
	if val30 != -1 {
		r.CompatibilitySupportFiles = make([]Path, val30)
		for val31 := 0; val31 < int(val30); val31++ {
			if val33, err := gobtools.DecodeInterface(ctx, buf); err != nil {
				return err
			} else if val33 == nil {
				r.CompatibilitySupportFiles[val31] = nil
			} else {
				r.CompatibilitySupportFiles[val31] = val33.(Path)
			}
		}
	}

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

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

	return err
}

var TestSuiteInfoGobRegId int16

func (r TestSuiteInfo) GetTypeId() int16 {
	return TestSuiteInfoGobRegId
}

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

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

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

	var val2 int32
	err = gobtools.DecodeSimple[int32](buf, &val2)
	if err != nil {
		return err
	}
	if val2 != -1 {
		r.MakeNames = make([]string, val2)
		for val3 := 0; val3 < int(val2); val3++ {
			err = gobtools.DecodeString(buf, &r.MakeNames[val3])
			if err != nil {
				return err
			}
		}
	}

	return err
}

var TestSuiteSharedLibsInfoGobRegId int16

func (r TestSuiteSharedLibsInfo) GetTypeId() int16 {
	return TestSuiteSharedLibsInfoGobRegId
}

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

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

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

	err = gobtools.DecodeString(buf, &r.Name)
	if err != nil {
		return err
	}

	return err
}

var MakeNameInfoGobRegId int16

func (r MakeNameInfo) GetTypeId() int16 {
	return MakeNameInfoGobRegId
}

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

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

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

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

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

	if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
		return err
	} else if val4 == nil {
		r.Dst = nil
	} else {
		r.Dst = val4.(WritablePath)
	}

	return err
}

var FilePairGobRegId int16

func (r FilePair) GetTypeId() int16 {
	return FilePairGobRegId
}

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

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

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

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

	var val2 int32
	err = gobtools.DecodeSimple[int32](buf, &val2)
	if err != nil {
		return err
	}
	if val2 != -1 {
		r.Files = make([]FilePair, val2)
		for val3 := 0; val3 < int(val2); val3++ {
			if err = r.Files[val3].Decode(ctx, buf); err != nil {
				return err
			}
		}
	}

	var val6 int32
	err = gobtools.DecodeSimple[int32](buf, &val6)
	if err != nil {
		return err
	}
	if val6 != -1 {
		r.OneVariantInstalls = make([]FilePair, val6)
		for val7 := 0; val7 < int(val6); val7++ {
			if err = r.OneVariantInstalls[val7].Decode(ctx, buf); err != nil {
				return err
			}
		}
	}

	return err
}

var TestSuiteInstallsInfoGobRegId int16

func (r TestSuiteInstallsInfo) GetTypeId() int16 {
	return TestSuiteInstallsInfoGobRegId
}
