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

package android

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

func init() {
	ArchGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(Arch) })
	ArchTypeGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ArchType) })
	OsTypeGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(OsType) })
	TargetGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(Target) })
}

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

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

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

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

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

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

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

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

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

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

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

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

	return err
}

var ArchGobRegId int16

func (r Arch) GetTypeId() int16 {
	return ArchGobRegId
}

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

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

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

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

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

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

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

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

	return err
}

var ArchTypeGobRegId int16

func (r ArchType) GetTypeId() int16 {
	return ArchTypeGobRegId
}

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

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

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

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

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

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

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

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

	var val4 int
	var val5 int64
	err = gobtools.DecodeSimple[int64](buf, &val5)
	if err != nil {
		return err
	}
	val4 = int(val5)
	r.Class = OsClass(val4)

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

	return err
}

var OsTypeGobRegId int16

func (r OsType) GetTypeId() int16 {
	return OsTypeGobRegId
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	return err
}

var TargetGobRegId int16

func (r Target) GetTypeId() int16 {
	return TargetGobRegId
}
