2017-08-02 19:45:23 +00:00
|
|
|
package kcl
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"math/big"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// SequencePair a convience way to pass around a Sequence / SubSequence pair
|
|
|
|
|
type SequencePair struct {
|
|
|
|
|
Sequence *big.Int
|
|
|
|
|
SubSequence int
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-10 20:16:41 +00:00
|
|
|
func (s SequencePair) IsNil() bool {
|
2017-08-02 19:45:23 +00:00
|
|
|
return s.Sequence == nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s SequencePair) IsLessThan(pair SequencePair) bool {
|
2017-08-10 20:16:41 +00:00
|
|
|
if s.IsNil() || pair.IsNil() { // empty pairs are incomparable
|
2017-08-02 19:45:23 +00:00
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cmp := s.Sequence.Cmp(pair.Sequence)
|
|
|
|
|
if cmp == -1 {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
if cmp == 1 {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return s.SubSequence < pair.SubSequence
|
|
|
|
|
}
|