32 lines
1.0 KiB
AutoHotkey
32 lines
1.0 KiB
AutoHotkey
push("qu", 2), push("qu", 44), push("qu", "xyz") ; TEST
|
|
|
|
MsgBox % "Len = " len("qu") ; Number of entries
|
|
While !empty("qu") ; Repeat until queue is not empty
|
|
MsgBox % pop("qu") ; Print popped values (2, 44, xyz)
|
|
MsgBox Error = %ErrorLevel% ; ErrorLevel = 0: OK
|
|
MsgBox % pop("qu") ; Empty
|
|
MsgBox Error = %ErrorLevel% ; ErrorLevel = -1: popped too much
|
|
MsgBox % "Len = " len("qu") ; Number of entries
|
|
|
|
push(queue,_) { ; push _ onto queue named "queue" (!=_), _ string not containing |
|
|
Global
|
|
%queue% .= %queue% = "" ? _ : "|" _
|
|
}
|
|
|
|
pop(queue) { ; pop value from queue named "queue" (!=_,_1,_2)
|
|
Global
|
|
RegExMatch(%queue%, "([^\|]*)\|?(.*)", _)
|
|
Return _1, ErrorLevel := -(%queue%=""), %queue% := _2
|
|
}
|
|
|
|
empty(queue) { ; check if queue named "queue" is empty
|
|
Global
|
|
Return %queue% = ""
|
|
}
|
|
|
|
len(queue) { ; number of entries in "queue"
|
|
Global
|
|
StringReplace %queue%, %queue%, |, |, UseErrorLevel
|
|
Return %queue% = "" ? 0 : ErrorLevel+1
|
|
}
|