upgrade sqlite3
This commit is contained in:
61
server/scanner/stack/stack.go
Normal file
61
server/scanner/stack/stack.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package stack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"go.senan.xyz/gonic/server/db"
|
||||
)
|
||||
|
||||
type item struct {
|
||||
value *db.Album
|
||||
next *item
|
||||
}
|
||||
|
||||
type Stack struct {
|
||||
top *item
|
||||
len uint
|
||||
}
|
||||
|
||||
func (s *Stack) Push(v *db.Album) {
|
||||
s.top = &item{
|
||||
value: v,
|
||||
next: s.top,
|
||||
}
|
||||
s.len++
|
||||
}
|
||||
|
||||
func (s *Stack) Pop() *db.Album {
|
||||
if s.len == 0 {
|
||||
return nil
|
||||
}
|
||||
v := s.top.value
|
||||
s.top = s.top.next
|
||||
s.len--
|
||||
return v
|
||||
}
|
||||
|
||||
func (s *Stack) Peek() *db.Album {
|
||||
if s.len == 0 {
|
||||
return nil
|
||||
}
|
||||
return s.top.value
|
||||
}
|
||||
|
||||
func (s *Stack) PeekID() int {
|
||||
if s.len == 0 {
|
||||
return 0
|
||||
}
|
||||
return s.top.value.ID
|
||||
}
|
||||
|
||||
func (s *Stack) String() string {
|
||||
var str strings.Builder
|
||||
str.WriteString("[")
|
||||
for i, f := uint(0), s.top; i < s.len; i++ {
|
||||
str.WriteString(fmt.Sprintf("%d, ", f.value.ID))
|
||||
f = f.next
|
||||
}
|
||||
str.WriteString("]")
|
||||
return str.String()
|
||||
}
|
||||
Reference in New Issue
Block a user