package decoder

import (
	
	
	

	
)

type wrappedStringDecoder struct {
	typ           *runtime.Type
	dec           Decoder
	stringDecoder *stringDecoder
	structName    string
	fieldName     string
	isPtrType     bool
}

func newWrappedStringDecoder( *runtime.Type,  Decoder, ,  string) *wrappedStringDecoder {
	return &wrappedStringDecoder{
		typ:           ,
		dec:           ,
		stringDecoder: newStringDecoder(, ),
		structName:    ,
		fieldName:     ,
		isPtrType:     .Kind() == reflect.Ptr,
	}
}

func ( *wrappedStringDecoder) ( *Stream,  int64,  unsafe.Pointer) error {
	,  := .stringDecoder.decodeStreamByte()
	if  != nil {
		return 
	}
	if  == nil {
		if .isPtrType {
			*(*unsafe.Pointer)() = nil
		}
		return nil
	}
	 := make([]byte, len()+1)
	copy(, )
	if ,  := .dec.Decode(&RuntimeContext{Buf: }, 0, , );  != nil {
		return 
	}
	return nil
}

func ( *wrappedStringDecoder) ( *RuntimeContext, ,  int64,  unsafe.Pointer) (int64, error) {
	, ,  := .stringDecoder.decodeByte(.Buf, )
	if  != nil {
		return 0, 
	}
	if  == nil {
		if .isPtrType {
			*(*unsafe.Pointer)() = nil
		}
		return , nil
	}
	 = append(, nul)
	 := .Buf
	.Buf = 
	if ,  := .dec.Decode(, 0, , );  != nil {
		return 0, 
	}
	.Buf = 
	return , nil
}

func ( *wrappedStringDecoder) ( *RuntimeContext, ,  int64) ([][]byte, int64, error) {
	return nil, 0, fmt.Errorf("json: wrapped string decoder does not support decode path")
}