package token

const DefaultBlockSize = 1024

type Pool struct {
	block []Token
	off   int
}

func NewPool(blockSize int) *Pool {
	return &Pool{
		block: make([]Token, blockSize),
	}
}

func (p *Pool) Get() *Token {
	if len(p.block) == 0 {
		return nil
	}

	if len(p.block) == p.off {
		p.block = make([]Token, len(p.block))
		p.off = 0
	}

	p.off++

	return &p.block[p.off-1]
}