github.com/Mericusta/go-stp@v0.6.8/queue.go (about) 1 package stp 2 3 type PoolDequeue interface { 4 PushHead(val any) bool 5 PopHead() (any, bool) 6 PopTail() (any, bool) 7 } 8 9 func NewPoolDequeue(n int) PoolDequeue { 10 d := &poolDequeue{ 11 vals: make([]eface, n), 12 } 13 d.headTail = d.pack(0, 0) 14 return d 15 } 16 17 func (d *poolDequeue) PushHead(val any) bool { 18 return d.pushHead(val) 19 } 20 21 func (d *poolDequeue) PopHead() (any, bool) { 22 return d.popHead() 23 } 24 25 func (d *poolDequeue) PopTail() (any, bool) { 26 return d.popTail() 27 } 28 29 func NewPoolChain() PoolDequeue { 30 return new(poolChain) 31 } 32 33 func (c *poolChain) PushHead(val any) bool { 34 c.pushHead(val) 35 return true 36 } 37 38 func (c *poolChain) PopHead() (any, bool) { 39 return c.popHead() 40 } 41 42 func (c *poolChain) PopTail() (any, bool) { 43 return c.popTail() 44 } 45 46 // func NewRevertPoolDequeue(n int) PoolDequeue { 47 // d := &revertPoolDequeue{ 48 // vals: make([]eface, n), 49 // } 50 // d.headTail = d.pack(1<<dequeueBits-500, 1<<dequeueBits-500) 51 // return d 52 // } 53 54 // func (d *revertPoolDequeue) PushHead(val any) bool { 55 // return d.pushHead(val) 56 // } 57 58 // func (d *revertPoolDequeue) PopHead() (any, bool) { 59 // return d.popHead() 60 // } 61 62 // func (d *revertPoolDequeue) PopTail() (any, bool) { 63 // return d.popTail() 64 // } 65 66 // func NewRPoolChain() PoolDequeue { 67 // return new(revertPoolChain) 68 // } 69 70 // func (c *revertPoolChain) PushHead(val any) bool { 71 // c.pushHead(val) 72 // return true 73 // } 74 75 // func (c *revertPoolChain) PopHead() (any, bool) { 76 // return c.popHead() 77 // } 78 79 // func (c *revertPoolChain) PopTail() (any, bool) { 80 // return c.popTail() 81 // }