gf: github.com/gogf/gf/g/container/gring Index | Files

package gring

import "github.com/gogf/gf/g/container/gring"

Package gring provides a concurrent-safe/unsafe ring(circular lists).

Index

Package Files

gring.go

type Ring Uses

type Ring struct {
    // contains filtered or unexported fields
}

func New Uses

func New(cap int, unsafe ...bool) *Ring

func (*Ring) Cap Uses

func (r *Ring) Cap() int

Cap returns the capacity of ring.

func (*Ring) Len Uses

func (r *Ring) Len() int

Len returns the size of ring.

func (r *Ring) Link(s *Ring) *Ring

Link connects ring r with ring s such that r.Next() becomes s and returns the original value for r.Next(). r must not be empty.

If r and s point to the same ring, linking them removes the elements between r and s from the ring. The removed elements form a subring and the result is a reference to that subring (if no elements were removed, the result is still the original value for r.Next(), and not nil).

If r and s point to different rings, linking them creates a single ring with the elements of s inserted after r. The result points to the element following the last element of s after insertion.

func (*Ring) LockIteratorNext Uses

func (r *Ring) LockIteratorNext(f func(item *ring.Ring) bool)

LockIteratorNext iterates and locks writing forward with given callback function <f> within RWMutex.RLock. If <f> returns true, then it continues iterating; or false to stop.

func (*Ring) LockIteratorPrev Uses

func (r *Ring) LockIteratorPrev(f func(item *ring.Ring) bool)

LockIteratorPrev iterates and locks writing backward with given callback function <f> within RWMutex.RLock. If <f> returns true, then it continues iterating; or false to stop.

func (*Ring) Move Uses

func (r *Ring) Move(n int) *Ring

Move moves n % r.Len() elements backward (n < 0) or forward (n >= 0) in the ring and returns that ring element. r must not be empty.

func (*Ring) Next Uses

func (r *Ring) Next() *Ring

Next returns the next ring element. r must not be empty.

func (*Ring) Prev Uses

func (r *Ring) Prev() *Ring

Prev returns the previous ring element. r must not be empty.

func (*Ring) Put Uses

func (r *Ring) Put(value interface{}) *Ring

Put sets <value> to current item of ring and moves position to next item.

func (*Ring) RLockIteratorNext Uses

func (r *Ring) RLockIteratorNext(f func(value interface{}) bool)

RLockIteratorNext iterates and locks reading forward with given callback function <f> within RWMutex.RLock. If <f> returns true, then it continues iterating; or false to stop.

func (*Ring) RLockIteratorPrev Uses

func (r *Ring) RLockIteratorPrev(f func(value interface{}) bool)

RLockIteratorPrev iterates and locks reading backward with given callback function <f> within RWMutex.RLock. If <f> returns true, then it continues iterating; or false to stop.

func (*Ring) Set Uses

func (r *Ring) Set(value interface{}) *Ring

Set sets value to the item of current position.

func (*Ring) SliceNext Uses

func (r *Ring) SliceNext() []interface{}

SliceNext returns a copy of all item values as slice forward from current position.

func (*Ring) SlicePrev Uses

func (r *Ring) SlicePrev() []interface{}

SlicePrev returns a copy of all item values as slice backward from current position.

func (r *Ring) Unlink(n int) *Ring

Unlink removes n % r.Len() elements from the ring r, starting at r.Next(). If n % r.Len() == 0, r remains unchanged. The result is the removed subring. r must not be empty.

func (*Ring) Val Uses

func (r *Ring) Val() interface{}

Val returns the item's value of current position.

Package gring imports 3 packages (graph) and is imported by 2 packages. Updated 2019-06-19. Refresh now. Tools for package owners.