github.com/nevalang/neva@v0.23.1-0.20240507185603-7696a9bb8dda/internal/builder/q.go (about)

     1  package builder
     2  
     3  import src "github.com/nevalang/neva/internal/compiler/sourcecode"
     4  
     5  type queue []src.ModuleRef
     6  
     7  func (q *queue) enqueue(deps map[string]src.ModuleRef) {
     8  	for _, dep := range deps {
     9  		*q = append(*q, dep)
    10  	}
    11  }
    12  
    13  func (q *queue) dequeue() src.ModuleRef {
    14  	tmp := *q
    15  	last := (tmp)[len(tmp)-1]
    16  	*q = (tmp)[:len(tmp)-1]
    17  	return last
    18  }
    19  
    20  func (q *queue) empty() bool {
    21  	return len(*q) == 0
    22  }
    23  
    24  func newQueue(deps map[string]src.ModuleRef) *queue {
    25  	q := make(queue, 0, len(deps))
    26  	q.enqueue(deps)
    27  	return &q
    28  }