tui_obj.go 680 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // package tui_obj -- базовый объект
  2. package tui_obj
  3. import (
  4. "sync"
  5. "p78git.ddns.net/svi/libtui/alias"
  6. )
  7. // TuiObj -- дравер (то что можно нарисовать на экране)
  8. type TuiObj struct {
  9. id alias.ObjID
  10. }
  11. // NewTuiObj -- возвращает новый дравер
  12. func NewTuiObj() *TuiObj {
  13. sf := &TuiObj{
  14. id: getNext(),
  15. }
  16. return sf
  17. }
  18. // Id -- возвращает ID дравера
  19. func (sf *TuiObj) Id() alias.ObjID {
  20. return sf.id
  21. }
  22. var (
  23. id alias.ObjID
  24. block sync.Mutex
  25. )
  26. // Возвращает новый id
  27. func getNext() alias.ObjID {
  28. defer func() {
  29. block.Lock()
  30. id++
  31. block.Unlock()
  32. }()
  33. return id
  34. }