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

package android

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

func init() {
	SymbolicOutputInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SymbolicOutputInfo) })
	SymbolicOutputInfosGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SymbolicOutputInfos) })
}

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

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

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

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

func (r *SymbolicOutputInfo) 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.UnstrippedOutputFile = nil
	} else {
		r.UnstrippedOutputFile = val2.(Path)
	}

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

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

	return err
}

var SymbolicOutputInfoGobRegId int16

func (r SymbolicOutputInfo) GetTypeId() int16 {
	return SymbolicOutputInfoGobRegId
}

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

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

func (r *SymbolicOutputInfos) 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) = make([]*SymbolicOutputInfo, val2)
		for val3 := 0; val3 < int(val2); val3++ {
			var val5 bool
			if err = gobtools.DecodeSimple(buf, &val5); err != nil {
				return err
			}
			if !val5 {
				var val4 SymbolicOutputInfo
				if err = val4.Decode(ctx, buf); err != nil {
					return err
				}
				(*r)[val3] = &val4
			}
		}
	}

	return err
}

var SymbolicOutputInfosGobRegId int16

func (r SymbolicOutputInfos) GetTypeId() int16 {
	return SymbolicOutputInfosGobRegId
}
