package xml

// arrayMemberWrapper is the default member wrapper tag name for XML Array type
var arrayMemberWrapper = StartElement{
	Name: Name{Local: "member"},
}

// Array represents the encoding of a XML array type
type Array struct {
	w       writer
	scratch *[]byte

	// member start element is the array member wrapper start element
	memberStartElement StartElement

	// isFlattened indicates if the array is a flattened array.
	isFlattened bool
}

// newArray returns an array encoder.
// It also takes in the  member start element, array start element.
// It takes in a isFlattened bool, indicating that an array is flattened array.
//
// A wrapped array ["value1", "value2"] is represented as
// `<List><member>value1</member><member>value2</member></List>`.

// A flattened array `someList: ["value1", "value2"]` is represented as
// `<someList>value1</someList><someList>value2</someList>`.
func ( writer,  *[]byte,  StartElement,  StartElement,  bool) *Array {
	var  = 
	if  {
		 = 
	}

	return &Array{
		w:                  ,
		scratch:            ,
		memberStartElement: ,
		isFlattened:        ,
	}
}

// Member adds a new member to the XML array.
// It returns a Value encoder.
func ( *Array) () Value {
	 := newValue(.w, .scratch, .memberStartElement)
	.isFlattened = .isFlattened
	return 
}