github.com/swiftstack/proxyfs@v0.0.0-20201223034610-5434d919416e/pfsagentConfig/dataStructures.go (about) 1 package pfsagentConfig 2 3 import "fmt" 4 5 type stringStack struct { 6 items []string 7 } 8 9 type stringArrayStack struct { 10 items [][]string 11 } 12 13 type stringMapStack struct { 14 items []map[string]string 15 } 16 17 func (s stringStack) push(val string) (err error) { 18 if len(val) == 0 { 19 err = fmt.Errorf("value cannot be zero-length") 20 } else { 21 s.items = append(s.items, val) 22 } 23 return 24 } 25 26 func (s stringStack) pop() (val string) { 27 if len(s.items) == 0 { 28 return 29 } 30 val = s.peek() 31 s.items = s.items[:len(s.items)-2] 32 33 return 34 } 35 36 func (s stringStack) peek() (val string) { 37 val = s.items[len(s.items)-1] 38 return 39 } 40 41 func (s stringArrayStack) push(val []string) (err error) { 42 if len(val) == 0 { 43 err = fmt.Errorf("value cannot be zero-length") 44 } else { 45 s.items = append(s.items, val) 46 } 47 return 48 } 49 50 func (s stringArrayStack) pop() (val []string) { 51 if len(s.items) == 0 { 52 return 53 } 54 val = s.peek() 55 s.items = s.items[:len(s.items)-2] 56 57 return 58 } 59 60 func (s stringArrayStack) peek() (val []string) { 61 val = s.items[len(s.items)-1] 62 return 63 } 64 65 func (s stringMapStack) push(val map[string]string) (err error) { 66 if len(val) == 0 { 67 err = fmt.Errorf("value cannot be zero-length") 68 } else { 69 s.items = append(s.items, val) 70 } 71 return 72 } 73 74 func (s stringMapStack) pop() (val map[string]string) { 75 if len(s.items) == 0 { 76 return 77 } 78 val = s.peek() 79 s.items = s.items[:len(s.items)-2] 80 81 return 82 } 83 84 func (s stringMapStack) peek() (val map[string]string) { 85 val = s.items[len(s.items)-1] 86 return 87 }