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

package android

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

func init() {
	SdkMemberTraitBaseGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SdkMemberTraitBase) })
	SdkMemberTypeBaseGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SdkMemberTypeBase) })
}

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

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

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

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

	return err
}

var SdkMemberTraitBaseGobRegId int16

func (r SdkMemberTraitBase) GetTypeId() int16 {
	return SdkMemberTraitBaseGobRegId
}

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

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

	if r.OverridesPropertyNames == nil {
		if err = gobtools.EncodeSimple(buf, int32(-1)); err != nil {
			return err
		}
	} else {
		if err = gobtools.EncodeSimple(buf, int32(len(r.OverridesPropertyNames))); err != nil {
			return err
		}
		for k, v := range r.OverridesPropertyNames {
			if err = gobtools.EncodeString(buf, k); err != nil {
				return err
			}
			if err = gobtools.EncodeSimple(buf, v); err != nil {
				return err
			}
		}
	}

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

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

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

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

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

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

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

	val2 := r.PrebuiltsRequired == nil
	if err = gobtools.EncodeSimple(buf, val2); err != nil {
		return err
	}
	if !val2 {
		if err = gobtools.EncodeSimple(buf, (*r.PrebuiltsRequired)); err != nil {
			return err
		}
	}

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

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

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

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

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

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

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

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

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

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

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

	var val17 bool
	if err = gobtools.DecodeSimple(buf, &val17); err != nil {
		return err
	}
	if !val17 {
		var val16 bool
		err = gobtools.DecodeSimple[bool](buf, &val16)
		if err != nil {
			return err
		}
		r.PrebuiltsRequired = &val16
	}

	var val20 int32
	err = gobtools.DecodeSimple[int32](buf, &val20)
	if err != nil {
		return err
	}
	if val20 != -1 {
		r.Traits = make([]SdkMemberTrait, val20)
		for val21 := 0; val21 < int(val20); val21++ {
			if val23, err := gobtools.DecodeInterface(ctx, buf); err != nil {
				return err
			} else if val23 == nil {
				r.Traits[val21] = nil
			} else {
				r.Traits[val21] = val23.(SdkMemberTrait)
			}
		}
	}

	return err
}

var SdkMemberTypeBaseGobRegId int16

func (r SdkMemberTypeBase) GetTypeId() int16 {
	return SdkMemberTypeBaseGobRegId
}
