[refactoring] remove scanner token
This commit is contained in:
29
pkg/position/pool.go
Normal file
29
pkg/position/pool.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package position
|
||||
|
||||
const DefaultBlockSize = 1024
|
||||
|
||||
type Pool struct {
|
||||
block []Position
|
||||
off int
|
||||
}
|
||||
|
||||
func NewPool(blockSize int) *Pool {
|
||||
return &Pool{
|
||||
block: make([]Position, blockSize),
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Pool) Get() *Position {
|
||||
if len(p.block) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
if len(p.block) == p.off {
|
||||
p.block = make([]Position, len(p.block))
|
||||
p.off = 0
|
||||
}
|
||||
|
||||
p.off++
|
||||
|
||||
return &p.block[p.off-1]
|
||||
}
|
||||
Reference in New Issue
Block a user