////////////////////////////////////////////////////////////////////////////////
// Do not modify!
// Generated by codergen
////////////////////////////////////////////////////////////////////////////////

package test

import "android.googlesource.com/platform/tools/gpu/framework/binary"

// Call Add
type callAdd struct {
	binary.Generate
	a uint32
	b uint32
}

// Result Add
type resultAdd struct {
	binary.Generate
	value uint32
}

// Call EnumToString
type callEnumToString struct {
	binary.Generate
	e Enum
}

// Result EnumToString
type resultEnumToString struct {
	binary.Generate
	value string
}

// Call GetListNodeChain
type callGetListNodeChain struct {
	binary.Generate
}

// Result GetListNodeChain
type resultGetListNodeChain struct {
	binary.Generate
	value *ListNode
}

// Call GetListNodeChainArray
type callGetListNodeChainArray struct {
	binary.Generate
}

// Result GetListNodeChainArray
type resultGetListNodeChainArray struct {
	binary.Generate
	value []*ListNode
}

// Call GetResource
type callGetResource struct {
	binary.Generate
}

// Result GetResource
type resultGetResource struct {
	binary.Generate
	value ResourceID
}

// Call GetSingleListNode
type callGetSingleListNode struct {
	binary.Generate
}

// Result GetSingleListNode
type resultGetSingleListNode struct {
	binary.Generate
	value *ListNode
}

// Call GetStruct
type callGetStruct struct {
	binary.Generate
}

// Result GetStruct
type resultGetStruct struct {
	binary.Generate
	value Struct
}

// Call ResolveResource
type callResolveResource struct {
	binary.Generate
	r ResourceID
}

// Result ResolveResource
type resultResolveResource struct {
	binary.Generate
	value Resource
}

// Call SetStruct
type callSetStruct struct {
	binary.Generate
	s Struct
}

// Result SetStruct
type resultSetStruct struct {
	binary.Generate
}

// Call UseResource
type callUseResource struct {
	binary.Generate
	r ResourceID
}

// Result UseResource
type resultUseResource struct {
	binary.Generate
}
