Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev
This commit is contained in:
commit
b5a9eb2ccc
@ -134,6 +134,47 @@ func (encoder *sortKeysMapEncoder) Encode(ptr unsafe.Pointer, w codecore.IWriter
|
||||
w.PutReader(subIter)
|
||||
}
|
||||
|
||||
func (this *sortKeysMapEncoder) EncodeToMapJson(ptr unsafe.Pointer, w codecore.IWriter) (ret map[string]string, err error) {
|
||||
ret = make(map[string]string)
|
||||
var (
|
||||
k, v string
|
||||
)
|
||||
keystream := w.GetWriter()
|
||||
elemstream := w.GetWriter()
|
||||
defer func() {
|
||||
w.PutWriter(keystream)
|
||||
w.PutWriter(elemstream)
|
||||
}()
|
||||
iter := this.mapType.UnsafeIterate(ptr)
|
||||
for i := 0; iter.HasNext(); i++ {
|
||||
key, elem := iter.UnsafeNext()
|
||||
if this.keyEncoder.GetType() != reflect.String {
|
||||
this.keyEncoder.Encode(key, keystream)
|
||||
if keystream.Error() != nil && keystream.Error() != io.EOF {
|
||||
err = keystream.Error()
|
||||
return
|
||||
}
|
||||
k = BytesToString(keystream.Buffer())
|
||||
} else {
|
||||
k = *((*string)(key))
|
||||
}
|
||||
if this.elemEncoder.GetType() != reflect.String {
|
||||
this.elemEncoder.Encode(elem, elemstream)
|
||||
if elemstream.Error() != nil && elemstream.Error() != io.EOF {
|
||||
err = elemstream.Error()
|
||||
return
|
||||
}
|
||||
v = BytesToString(elemstream.Buffer())
|
||||
} else {
|
||||
v = *((*string)(elem))
|
||||
}
|
||||
ret[k] = v
|
||||
keystream.Reset()
|
||||
elemstream.Reset()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (encoder *sortKeysMapEncoder) IsEmpty(ptr unsafe.Pointer) bool {
|
||||
iter := encoder.mapType.UnsafeIterate(ptr)
|
||||
return !iter.HasNext()
|
||||
|
Loading…
Reference in New Issue
Block a user