archive_combo.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // package archive_combo -- архивная пара значений
  2. package archive_combo
  3. import (
  4. "fmt"
  5. "gitp78su.ipnodns.ru/svi/packer/lev0/alias"
  6. )
  7. // ArchiveCombo -- архивная пара значений
  8. type ArchiveCombo struct {
  9. hi, low alias.ArchVal
  10. combo alias.ArchCombo
  11. count int
  12. }
  13. // NewArchiveCombo -- создаёт новую архивную пару
  14. func NewArchiveCombo(hi, low alias.ArchVal) *ArchiveCombo {
  15. sf := &ArchiveCombo{
  16. hi: hi,
  17. low: low,
  18. combo: alias.ArchCombo(hi*65536 + low),
  19. }
  20. return sf
  21. }
  22. // Count -- возвращает число встреч комбо в архивных значениях
  23. func (sf *ArchiveCombo) Count() int {
  24. return sf.count
  25. }
  26. // Inc -- увелтчивает числ окомбо в архивных данных
  27. func (sf *ArchiveCombo) Inc() {
  28. sf.count++
  29. }
  30. // Low -- возвращает младшее значение архивной пары
  31. func (sf *ArchiveCombo) Low() alias.ArchVal {
  32. return sf.low
  33. }
  34. // Combo -- возвращает комбинацию
  35. func (sf *ArchiveCombo) Combo() alias.ArchCombo {
  36. return sf.combo
  37. }
  38. // String -- возвращает строковое представление
  39. func (sf *ArchiveCombo) String() string {
  40. return fmt.Sprintf("{hi=%v, low=%v, combo=%v}", sf.hi, sf.low, sf.combo)
  41. }