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

package android

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

func init() {
	applicableLicensesPropertyGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(applicableLicensesProperty) })
	LicensesInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(LicensesInfo) })
}

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

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

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

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

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

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

	return err
}

var applicableLicensesPropertyGobRegId int16

func (r applicableLicensesProperty) GetTypeId() int16 {
	return applicableLicensesPropertyGobRegId
}

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

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

func (r *LicensesInfo) 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.Licenses = make([]string, val2)
		for val3 := 0; val3 < int(val2); val3++ {
			err = gobtools.DecodeString(buf, &r.Licenses[val3])
			if err != nil {
				return err
			}
		}
	}

	return err
}

var LicensesInfoGobRegId int16

func (r LicensesInfo) GetTypeId() int16 {
	return LicensesInfoGobRegId
}
