// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
// SPDX-License-Identifier: MIT

package sdp

type unmarshalCache struct {
	sessionAttributes []Attribute
	mediaAttributes   []Attribute
}

func ( *unmarshalCache) () {
	.sessionAttributes = .sessionAttributes[:0]
	.mediaAttributes = .mediaAttributes[:0]
}

func ( *unmarshalCache) () *Attribute {
	.sessionAttributes = append(.sessionAttributes, Attribute{})

	return &.sessionAttributes[len(.sessionAttributes)-1]
}

func ( *unmarshalCache) () []Attribute {
	if len(.sessionAttributes) == 0 {
		return nil
	}
	 := make([]Attribute, len(.sessionAttributes))
	copy(, .sessionAttributes)
	.sessionAttributes = .sessionAttributes[:0]

	return 
}

func ( *unmarshalCache) () *Attribute {
	.mediaAttributes = append(.mediaAttributes, Attribute{})

	return &.mediaAttributes[len(.mediaAttributes)-1]
}

func ( *unmarshalCache) () []Attribute {
	if len(.mediaAttributes) == 0 {
		return nil
	}
	 := make([]Attribute, len(.mediaAttributes))
	copy(, .mediaAttributes)
	.mediaAttributes = .mediaAttributes[:0]

	return 
}