﻿;-- TIME_STAMP   2018-03-03 11:05:18

#include 'ArrayStack.au3'

Global $a1D = _ArrayStack_Create()                   ; default type FIFO, 1D
Global $a2D = _ArrayStack_Create($STACK_LIFO, 2, 6)  ; type LIFO, 2D, 6 elements in 2nd dimension

Global $aVal[] = [31,32,33,34,35,36]                 ; array with values to add

; add value(s) to 1D array
_ArrayStack_Add($a1D, 3)
_ArrayStack_Add($a1D, 4)
_ArrayStack_Add($a1D, 5)
_ArrayStack_Add($a1D, 6, 7, 8, 9)
_ArrayStack_Add($a1D, $aVal)


; add value(s) to 2D array
_ArrayStack_Add($a2D, 1,2,3,4,5,6)
_ArrayStack_Add($a2D, 11,12,13,14,15,16)
_ArrayStack_Add($a2D, 21,22,23,24,25,26)
_ArrayStack_Add($a2D, $aVal)


; get value by value by used type FIFO
ConsoleWrite('1D Array (FIFO):' & @CRLF)
$x = 0
While 1
	$x += 1
	If $x = 5 Then   ; change the stack type
		_ArrayStack_Type($a1D, $STACK_LIFO)
		ConsoleWrite('TYPE CHANGED TO LIFO' & @CRLF)
	EndIf
	$ret = _ArrayStack_Get($a1D)
	If @error Then ExitLoop
	ConsoleWrite($ret & @CRLF)
WEnd

; get value by value by used type LIFO
ConsoleWrite(@CRLF & '2D Array (LIFO):' & @CRLF)
For $i = 1 To 4
	Local $aRet = _ArrayStack_Get($a2D)
	Local $s = ''
	For $j = 0 To UBound($aRet) -1
		$s &= $aRet[$j] & ', '
	Next
	ConsoleWrite(StringTrimRight($s, 2) & @CRLF)
Next
