github.com/urso/go-structform@v0.0.2/visitors/expect_obj.go (about) 1 package visitors 2 3 import ( 4 "errors" 5 6 structform "github.com/urso/go-structform" 7 ) 8 9 type ExpectObjVisitor struct { 10 active structform.ExtVisitor 11 depth int 12 } 13 14 func NewExpectObjVisitor(target structform.ExtVisitor) *ExpectObjVisitor { 15 return &ExpectObjVisitor{active: target} 16 } 17 18 func (e *ExpectObjVisitor) SetActive(a structform.ExtVisitor) { 19 e.active = a 20 e.depth = 0 21 } 22 23 func (e *ExpectObjVisitor) Done() bool { 24 return e.depth == 0 25 } 26 27 func (v *ExpectObjVisitor) OnObjectStart(len int, baseType structform.BaseType) error { 28 v.depth++ 29 if v.depth == 1 { 30 return nil 31 } 32 return v.active.OnObjectStart(len, baseType) 33 } 34 35 func (v *ExpectObjVisitor) OnObjectFinished() error { 36 v.depth-- 37 if v.depth == 0 { 38 return nil 39 } 40 return v.active.OnObjectFinished() 41 } 42 43 func (v *ExpectObjVisitor) OnKey(s string) error { 44 if err := v.check(); err != nil { 45 return err 46 } 47 return v.active.OnKey(s) 48 } 49 50 func (v *ExpectObjVisitor) OnArrayStart(len int, baseType structform.BaseType) error { 51 if err := v.check(); err != nil { 52 return err 53 } 54 return v.active.OnArrayStart(len, baseType) 55 } 56 57 func (v *ExpectObjVisitor) OnArrayFinished() error { 58 if err := v.check(); err != nil { 59 return err 60 } 61 return v.active.OnArrayFinished() 62 } 63 64 func (v *ExpectObjVisitor) OnNil() error { 65 if err := v.check(); err != nil { 66 return err 67 } 68 return v.active.OnNil() 69 } 70 71 func (v *ExpectObjVisitor) OnBool(b bool) error { 72 if err := v.check(); err != nil { 73 return err 74 } 75 return v.active.OnBool(b) 76 } 77 78 func (v *ExpectObjVisitor) OnString(s string) error { 79 if err := v.check(); err != nil { 80 return err 81 } 82 return v.active.OnString(s) 83 } 84 85 func (v *ExpectObjVisitor) OnInt8(i int8) error { 86 if err := v.check(); err != nil { 87 return err 88 } 89 return v.active.OnInt8(i) 90 } 91 92 func (v *ExpectObjVisitor) OnInt16(i int16) error { 93 if err := v.check(); err != nil { 94 return err 95 } 96 return v.active.OnInt16(i) 97 } 98 99 func (v *ExpectObjVisitor) OnInt32(i int32) error { 100 if err := v.check(); err != nil { 101 return err 102 } 103 return v.active.OnInt32(i) 104 } 105 106 func (v *ExpectObjVisitor) OnInt64(i int64) error { 107 if err := v.check(); err != nil { 108 return err 109 } 110 return v.active.OnInt64(i) 111 } 112 113 func (v *ExpectObjVisitor) OnInt(i int) error { 114 if err := v.check(); err != nil { 115 return err 116 } 117 return v.active.OnInt(i) 118 } 119 120 func (v *ExpectObjVisitor) OnByte(b byte) error { 121 if err := v.check(); err != nil { 122 return err 123 } 124 return v.active.OnByte(b) 125 } 126 127 func (v *ExpectObjVisitor) OnUint8(u uint8) error { 128 if err := v.check(); err != nil { 129 return err 130 } 131 return v.active.OnUint8(u) 132 } 133 134 func (v *ExpectObjVisitor) OnUint16(u uint16) error { 135 if err := v.check(); err != nil { 136 return err 137 } 138 return v.active.OnUint16(u) 139 } 140 141 func (v *ExpectObjVisitor) OnUint32(u uint32) error { 142 if err := v.check(); err != nil { 143 return err 144 } 145 return v.active.OnUint32(u) 146 } 147 148 func (v *ExpectObjVisitor) OnUint64(u uint64) error { 149 if err := v.check(); err != nil { 150 return err 151 } 152 return v.active.OnUint64(u) 153 } 154 155 func (v *ExpectObjVisitor) OnUint(u uint) error { 156 if err := v.check(); err != nil { 157 return err 158 } 159 return v.active.OnUint(u) 160 } 161 162 func (v *ExpectObjVisitor) OnFloat32(f float32) error { 163 if err := v.check(); err != nil { 164 return err 165 } 166 return v.active.OnFloat32(f) 167 } 168 169 func (v *ExpectObjVisitor) OnFloat64(f float64) error { 170 if err := v.check(); err != nil { 171 return err 172 } 173 return v.active.OnFloat64(f) 174 } 175 176 func (v *ExpectObjVisitor) OnStringRef(s []byte) error { 177 if err := v.check(); err != nil { 178 return err 179 } 180 return v.active.OnStringRef(s) 181 } 182 183 func (v *ExpectObjVisitor) OnKeyRef(s []byte) error { 184 if err := v.check(); err != nil { 185 return err 186 } 187 return v.active.OnKeyRef(s) 188 } 189 190 func (v *ExpectObjVisitor) check() error { 191 if v.depth == 0 { 192 return errors.New("inline object is no object") 193 } 194 return nil 195 }