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

package android

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

func init() {
	PackagingSpecGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(PackagingSpec) })
}

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

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

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

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

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

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

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

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

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

	if err = r.archType.Encode(ctx, buf); err != nil {
		return err
	}

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

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

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

	if err = r.fullInstallPath.Encode(ctx, buf); err != nil {
		return err
	}

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

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

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

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

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

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

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

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

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

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

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

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

	if err = r.archType.Decode(ctx, buf); err != nil {
		return err
	}

	var val22 []string
	var val23 int32
	err = gobtools.DecodeSimple[int32](buf, &val23)
	if err != nil {
		return err
	}
	if val23 != -1 {
		val22 = make([]string, val23)
		for val24 := 0; val24 < int(val23); val24++ {
			err = gobtools.DecodeString(buf, &val22[val24])
			if err != nil {
				return err
			}
		}
	}
	r.overrides = uniquelist.Make(val22)

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

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

	if err = r.fullInstallPath.Decode(ctx, buf); err != nil {
		return err
	}

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

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

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

	return err
}

var PackagingSpecGobRegId int16

func (r PackagingSpec) GetTypeId() int16 {
	return PackagingSpecGobRegId
}
