goversion_maprange_gte_go112.go 745 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright (c) 2012-2018 Ugorji Nwoke. All rights reserved.
  2. // Use of this source code is governed by a MIT license found in the LICENSE file.
  3. // +build go1.12
  4. // +build safe appengine
  5. package codec
  6. import "reflect"
  7. type mapIter struct {
  8. t *reflect.MapIter
  9. m reflect.Value
  10. values bool
  11. }
  12. func (t *mapIter) ValidKV() (r bool) {
  13. return true
  14. }
  15. func (t *mapIter) Next() (r bool) {
  16. return t.t.Next()
  17. }
  18. func (t *mapIter) Key() reflect.Value {
  19. return t.t.Key()
  20. }
  21. func (t *mapIter) Value() (r reflect.Value) {
  22. if t.values {
  23. return t.t.Value()
  24. }
  25. return
  26. }
  27. func (t *mapIter) Done() {}
  28. func mapRange(t *mapIter, m, k, v reflect.Value, values bool) {
  29. *t = mapIter{
  30. m: m,
  31. t: m.MapRange(),
  32. values: values,
  33. }
  34. }