func (i *ToplevelDecoration) AddConfigureHandler(f ToplevelDecorationConfigureHandlerFunc) {
	if f == nil {
		return
	}
	i.configureHandlers = append(i.configureHandlers, f)
}
AddConfigureHandler : adds handler for ToplevelDecorationConfigureEvent
package xdg_decoration
import (
	"reflect"
	"github.com/rajveermalviya/go-wayland/wayland/client"
	xdg_shell "github.com/rajveermalviya/go-wayland/wayland/stable/xdg-shell"
)
type DecorationManager struct {
	client.BaseProxy
}
func NewDecorationManager(ctx *client.Context) *DecorationManager {
	zxdgDecorationManagerV1 := &DecorationManager{}
	ctx.Register(zxdgDecorationManagerV1)
	return zxdgDecorationManagerV1
}
func (i *DecorationManager) Destroy() error {
	defer i.Context().Unregister(i)
	const opcode = 0
	const rLen = 8
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return err
}
func (i *DecorationManager) GetToplevelDecoration(toplevel *xdg_shell.Toplevel) (*ToplevelDecoration, error) {
	id := NewToplevelDecoration(i.Context())
	const opcode = 1
	const rLen = 8 + 4 + 4
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	client.PutUint32(r[l:l+4], id.ID())
	l += 4
	client.PutUint32(r[l:l+4], toplevel.ID())
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return id, err
}
type ToplevelDecoration struct {
	client.BaseProxy
	configureHandlers []ToplevelDecorationConfigureHandlerFunc
}
func NewToplevelDecoration(ctx *client.Context) *ToplevelDecoration {
	zxdgToplevelDecorationV1 := &ToplevelDecoration{}
	ctx.Register(zxdgToplevelDecorationV1)
	return zxdgToplevelDecorationV1
}
func (i *ToplevelDecoration) Destroy() error {
	defer i.Context().Unregister(i)
	const opcode = 0
	const rLen = 8
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return err
}
func (i *ToplevelDecoration) SetMode(mode uint32) error {
	const opcode = 1
	const rLen = 8 + 4
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	client.PutUint32(r[l:l+4], uint32(mode))
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return err
}
func (i *ToplevelDecoration) UnsetMode() error {
	const opcode = 2
	const rLen = 8
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return err
}
type ToplevelDecorationError uint32
const (
	ToplevelDecorationErrorUnconfiguredBuffer ToplevelDecorationError = 0
	ToplevelDecorationErrorAlreadyConstructed ToplevelDecorationError = 1
	ToplevelDecorationErrorOrphaned ToplevelDecorationError = 2
)
func (e ToplevelDecorationError) Name() string {
	switch e {
	case ToplevelDecorationErrorUnconfiguredBuffer:
		return "unconfigured_buffer"
	case ToplevelDecorationErrorAlreadyConstructed:
		return "already_constructed"
	case ToplevelDecorationErrorOrphaned:
		return "orphaned"
	default:
		return ""
	}
}
func (e ToplevelDecorationError) Value() string {
	switch e {
	case ToplevelDecorationErrorUnconfiguredBuffer:
		return "0"
	case ToplevelDecorationErrorAlreadyConstructed:
		return "1"
	case ToplevelDecorationErrorOrphaned:
		return "2"
	default:
		return ""
	}
}
func (e ToplevelDecorationError) String() string {
	return e.Name() + "=" + e.Value()
}
type ToplevelDecorationMode uint32
const (
	ToplevelDecorationModeClientSide ToplevelDecorationMode = 1
	ToplevelDecorationModeServerSide ToplevelDecorationMode = 2
)
func (e ToplevelDecorationMode) Name() string {
	switch e {
	case ToplevelDecorationModeClientSide:
		return "client_side"
	case ToplevelDecorationModeServerSide:
		return "server_side"
	default:
		return ""
	}
}
func (e ToplevelDecorationMode) Value() string {
	switch e {
	case ToplevelDecorationModeClientSide:
		return "1"
	case ToplevelDecorationModeServerSide:
		return "2"
	default:
		return ""
	}
}
func (e ToplevelDecorationMode) String() string {
	return e.Name() + "=" + e.Value()
}
type ToplevelDecorationConfigureEvent struct {
	Mode uint32
}
type ToplevelDecorationConfigureHandlerFunc func(ToplevelDecorationConfigureEvent)