Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
69
Task/Queue-Definition/Batch-File/queue-definition.bat
Normal file
69
Task/Queue-Definition/Batch-File/queue-definition.bat
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
@echo off
|
||||
setlocal enableDelayedExpansion
|
||||
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: FIFO queue usage
|
||||
|
||||
:: Define the queue
|
||||
call :newQueue myQ
|
||||
|
||||
:: Populate the queue
|
||||
for %%A in (value1 value2 value3) do call :enqueue myQ %%A
|
||||
|
||||
:: Test if queue is empty by examining the tail "attribute"
|
||||
if myQ.tail==0 (echo myQ is empty) else (echo myQ is NOT empty)
|
||||
|
||||
:: Peek at the head of the queue
|
||||
call:peekQueue myQ val && echo a peek at the head of myQueue shows !val!
|
||||
|
||||
:: Process the first queue value
|
||||
call :dequeue myQ val && echo dequeued myQ value=!val!
|
||||
|
||||
:: Add some more values to the queue
|
||||
for %%A in (value4 value5 value6) do call :enqueue myQ %%A
|
||||
|
||||
:: Process the remainder of the queue
|
||||
:processQueue
|
||||
call :dequeue myQ val || goto :queueEmpty
|
||||
echo dequeued myQ value=!val!
|
||||
goto :processQueue
|
||||
:queueEmpty
|
||||
|
||||
:: Test if queue is empty using the empty "method"/"macro". Use of the
|
||||
:: second IF statement serves to demonstrate the negation of the empty
|
||||
:: "method". A single IF could have been used with an ELSE clause instead.
|
||||
if %myQ.empty% echo myQ is empty
|
||||
if not %myQ.empty% echo myQ is NOT empty
|
||||
exit /b
|
||||
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: FIFO queue definition
|
||||
|
||||
:newQueue qName
|
||||
set /a %~1.head=1, %~1.tail=0
|
||||
:: Define an empty "method" for this queue as a sort of macro
|
||||
set "%~1.empty=^!%~1.tail^! == 0"
|
||||
exit /b
|
||||
|
||||
:enqueue qName value
|
||||
set /a %~1.tail+=1
|
||||
set %~1.!%~1.tail!=%2
|
||||
exit /b
|
||||
|
||||
:dequeue qName returnVar
|
||||
:: Sets errorlevel to 0 if success
|
||||
:: Sets errorlevel to 1 if failure because queue was empty
|
||||
if !%~1.tail! equ 0 exit /b 1
|
||||
for %%N in (!%~1.head!) do (
|
||||
set %~2=!%~1.%%N!
|
||||
set %~1.%%N=
|
||||
)
|
||||
if !%~1.head! == !%~1.tail! (set /a "%~1.head=1, %~1.tail=0") else set /a %~1.head+=1
|
||||
exit /b 0
|
||||
|
||||
:peekQueue qName returnVar
|
||||
:: Sets errorlevel to 0 if success
|
||||
:: Sets errorlevel to 1 if failure because queue was empty
|
||||
if !%~1.tail! equ 0 exit /b 1
|
||||
for %%N in (!%~1.head!) do set %~2=!%~1.%%N!
|
||||
exit /b 0
|
||||
Loading…
Add table
Add a link
Reference in a new issue