// package elem_use_group -- группа вариантов использования
package elem_use_group

import (
	"gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
	"gitp78su.ipnodns.ru/svi/goarch/lev0/types"
	"gitp78su.ipnodns.ru/svi/kern/v3"
)

// UseGroup -- группа вариантов использования
type UseGroup struct {
	types.IElemBase
	Size_ types.ISize
}

var (
	hassert = kern.GetFnHassert()
)

// NewUseGroup -- возвращает новую группу вариант использования
func NewUseGroup(elemBase types.IElemBase, size types.ISize) types.IElemUseGroup {
	sf := &UseGroup{
		IElemBase: elemBase,
		Size_:     size,
	}
	sf.SelfCheck()
	return sf
}

// Size -- возвращает размер
//
//go:fix inline
func (sf *UseGroup) Size() types.ISize {
	return sf.Size_
}


// Links -- заглушка на связи между объектами
//
//go:fix inline
func (sf *UseGroup) Links() []alias.Id {
	return []alias.Id{sf.IElemBase.Id()}
}

// Check -- заглушка под проверку
func (sf *UseGroup) SelfCheck() {
	hassert(sf.IElemBase != nil, "NewUseGroup(): IElemBase is nil")
	hassert(sf.Size_ != nil, "NewUseGroup(): Size_ is nil")
}
