arraySplice

構文
arraySplice( Var array[], offset, len = NULL )
引数
array
offset
len
戻値

プログラム

//////////////////////////////////////////////////
// 【引数】
//   array 
//   offset 
//   len 
// 【戻値】
// 
//////////////////////////////////////////////////
FUNCTION arraySplice(Var array[], offset, len = NULL)
	DIM tmp[-1]
	IF len = NULL THEN len = UBound(array)
	IF len < 0 THEN len = len + UBound(array)
	FOR i = offset - 1 TO len - 1
		arrayPush(tmp, array[i])
	NEXT
	DIM tmp1[-1]
	FOR i = 0 TO offset - 1
		arrayPush(tmp1, array[i])
	NEXT
	DIM tmp2[-1]
	FOR i = offset + len TO UBound(array)
		arrayPush(tmp2, array[i])
	NEXT
	arrayMerge(tmp1, tmp2)
	SETCLEAR(array)
	RESIZE(array, UBound(tmp1))
	FOR i = 0 TO UBound(tmp1)
		array[i] = tmp1[i]
	NEXT
	RESULT = SLICE(tmp)
FEND

//////////////////////////////////////////////////
// 【引数】
//   var arr[] : 追加される配列(参照引数) 
//   tmp[] : 追加する配列 
// 【戻値】
//   追加した後の配列の要素数 
//////////////////////////////////////////////////
FUNCTION arrayMerge(var arr[], tmp[])
	FOR n = 0 TO UBound(tmp)
		arrayPush(arr, tmp[n])
	NEXT
	RESULT = UBound(arr)
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   str : 追加する要素 
// 【戻値】
//   処理後の配列の中の要素の数 
//////////////////////////////////////////////////
FUNCTION arrayPush(var arr[], str)
	DIM res = RESIZE(arr, UBound(arr) + 1)
	arr[res] = str
	RESULT = res + 1
FEND

//////////////////////////////////////////////////
// 【引数】
//   配列 : 上限値を求める配列 
// 【戻値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(array[])
	RESULT = RESIZE(array)
FEND