Big change iin the data model, and a first version of obiuniq

This commit is contained in:
2022-02-21 19:00:23 +01:00
parent 9737f97084
commit 2e7c1834b0
43 changed files with 664 additions and 440 deletions

View File

@ -1,3 +1,58 @@
package obiseq
type BioSequenceSlice []BioSequence
import (
"sync"
)
type BioSequenceSlice []*BioSequence
var _BioSequenceSlicePool = sync.Pool{
New: func() interface{} {
bs := make(BioSequenceSlice, 0, 10)
return &bs
},
}
func NewBioSequenceSlice() *BioSequenceSlice {
return _BioSequenceSlicePool.Get().(*BioSequenceSlice)
}
func MakeBioSequenceSlice() BioSequenceSlice {
return *NewBioSequenceSlice()
}
func (s *BioSequenceSlice) Recycle() {
// if s == nil {
// log.Panicln("Trying too recycle a nil pointer")
// }
// // Code added to potentially limit memory leaks
// for i := range *s {
// (*s)[i] = nil
// }
// *s = (*s)[:0]
// _BioSequenceSlicePool.Put(s)
}
func (s *BioSequenceSlice) Push(sequence *BioSequence) {
*s = append(*s, sequence)
}
func (s *BioSequenceSlice) Pop() *BioSequence {
_s := (*s)[len(*s)-1]
(*s)[len(*s)-1] = nil
*s = (*s)[:len(*s)-1]
return _s
}
func (s *BioSequenceSlice) Pop0() *BioSequence {
_s := (*s)[0]
(*s)[0] = nil
*s = (*s)[1:]
return _s
}
func (s BioSequenceSlice) NotEmpty() bool {
return len(s) > 0
}