package ndr

import (
	
	
)

const (
	subStringArrayTag   = `ndr:"varying,X-subStringArray"`
	subStringArrayValue = "X-subStringArray"
)

func uint16SliceToString( []uint16) string {
	 := make([]rune, len(), len())
	for  := range  {
		[] = rune([])
	}
	if len() > 0 {
		// Remove any null terminator
		if [len()-1] == rune(0) {
			 = [:len()-1]
		}
	}
	return string()
}

func ( *Decoder) ( *[]deferedPtr) (string, error) {
	 := new([]uint16)
	 := reflect.ValueOf()
	var  reflect.StructTag
	 := .fillUniDimensionalVaryingArray(.Elem(), , )
	if  != nil {
		return "", 
	}
	 := uint16SliceToString(*)
	return , nil
}

func ( *Decoder) ( *[]deferedPtr) (string, error) {
	 := new([]uint16)
	 := reflect.ValueOf()
	var  reflect.StructTag
	 := .fillUniDimensionalConformantVaryingArray(.Elem(), , )
	if  != nil {
		return "", 
	}
	 := uint16SliceToString(*)
	return , nil
}

func ( *Decoder) ( reflect.Value,  reflect.StructTag,  *[]deferedPtr) error {
	,  := sliceDimensions(.Type())
	 := parseTags()
	var  []int
	//var ms int
	if .HasValue(TagConformant) {
		for  := 0;  < ; ++ {
			 = append(, int(.precedingMax()))
		}
		//common max size
		_ = .precedingMax()
		//ms = int(n)
	}
	 = reflect.StructTag(subStringArrayTag)
	 := .fillVaryingArray(, , )
	if  != nil {
		return fmt.Errorf("could not read string array: %v", )
	}
	return nil
}