github.com/zerosnake0/jzon@v0.0.8/val_encoder_native_map_below_go118.go (about)

     1  //+build !go1.18
     2  
     3  package jzon
     4  
     5  import (
     6  	"unsafe"
     7  )
     8  
     9  func (enc *directMapEncoder) Encode(ptr unsafe.Pointer, s *Streamer, _ *EncOpts) {
    10  	if s.Error != nil {
    11  		return
    12  	}
    13  	if ptr == nil {
    14  		s.Null()
    15  		return
    16  	}
    17  	ptr = *(*unsafe.Pointer)(ptr)
    18  	if ptr == nil {
    19  		s.Null()
    20  		return
    21  	}
    22  	s.ObjectStart()
    23  	iter := mapiterinit(enc.mapRType, ptr)
    24  	for i := 0; iter.key != nil; i++ {
    25  		enc.keyEncoder.Encode(iter.key, s)
    26  		if s.Error != nil {
    27  			return
    28  		}
    29  		enc.elemEncoder.Encode(iter.elem, s, nil)
    30  		if s.Error != nil {
    31  			return
    32  		}
    33  		mapiternext(iter)
    34  	}
    35  	s.ObjectEnd()
    36  }