package arrowutils

import (
	
	
	
)

// ArrayConcatenator is an object that helps callers keep track of a slice of
// arrays and concatenate them into a single one when needed. This is more
// efficient and memory safe than using a builder.
type ArrayConcatenator struct {
	arrs []arrow.Array
}

func ( *ArrayConcatenator) ( arrow.Array) {
	.arrs = append(.arrs, )
}

func ( *ArrayConcatenator) ( memory.Allocator) (arrow.Array, error) {
	,  := array.Concatenate(.arrs, )
	if  != nil {
		return nil, 
	}
	.arrs = .arrs[:0]
	return , 
}

func ( *ArrayConcatenator) () int {
	return len(.arrs)
}

func ( *ArrayConcatenator) () {
	for ,  := range .arrs {
		.Release()
	}
	.arrs = .arrs[:0]
}