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 }