package dagro
import (
"encoding/json"
"strings"
)
type fasEntry struct {
V string
In, Out float64
data any
prev, next *fasEntry
currentList *fasList
}
type fasList struct {
head, tail *fasEntry
}
func (l *fasList ) dequeue () *fasEntry {
entry := l .tail
if entry != nil {
l .unlink (entry )
}
return entry
}
func (l *fasList ) enqueue (entry *fasEntry ) {
if entry .currentList != nil {
entry .currentList .unlink (entry )
}
entry .currentList = l
entry .prev = nil
entry .next = l .head
if l .head != nil {
l .head .prev = entry
} else {
l .tail = entry
}
l .head = entry
}
func (l *fasList ) unlink (entry *fasEntry ) {
if entry .prev != nil {
entry .prev .next = entry .next
} else {
l .head = entry .next
}
if entry .next != nil {
entry .next .prev = entry .prev
} else {
l .tail = entry .prev
}
entry .prev , entry .next , entry .currentList = nil , nil , nil
}
func (l *fasList ) String () string {
items := make ([]string , 0 )
for entry := l .tail ; entry != nil ; entry = entry .prev {
value := entry .data
if value == nil {
value = map [string ]any {"v" : entry .V , "in" : entry .In , "out" : entry .Out }
}
encoded , _ := json .Marshal (value )
items = append (items , string (encoded ))
}
return "[" + strings .Join (items , ", " ) + "]"
}
The pages are generated with Golds v0.8.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .