Queue/Definition: Difference between revisions

Content added Content deleted
Line 366:
 
=={{header|AutoHotkey}}==
<lang AutoHotkey>; TEST: push("qu", 2), 4push("qu", and 6 onto queue named44), push("qu", "xyz") ; TEST
push("qu", 2), push("qu", 4), push("qu", 6)
 
MsgBox % "Len = " len("qu") ; Number of entries
While !empty("qu") ; Repeat until queue is not empty
MsgBox % pop("qu") ; Print popped values (2, 444, 6xyz)
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,x_) { ; push x_ onto queue named "queue" (!=_), _ string not containing |
Global
%queue% .= %queue% .= "" ? _ : "|" x_
}
 
pop(queue) { ; pop value from queue named "queue" (!=_,_1,_2)
;---------------------------------------------------------------------------
Global
push(queue,x) { ; push x onto queue named "queue"
RegExMatch(%queue%, "([^\|]+)\|?(.*)", _)
;---------------------------------------------------------------------------
Return _1, ErrorLevel := -(%queue%=""), %queue% := _2
global
If (%queue% = "")
%queue% := x
Else
%queue% .= "|" x
}
 
empty(queue) { ; check if queue named "queue" is empty
 
Global
;---------------------------------------------------------------------------
IfReturn (%queue% = "")
pop(queue) { ; pop value from queue named "queue"
;---------------------------------------------------------------------------
global
StringSplit, Array, %queue%, |
If (Array0 = 0) {
ErrorLevel := -1,
Return, ""
}
If (Array0 = 1)
%queue% := ""
Else
%queue% := SubStr(%queue%, InStr(%queue%, "|") + 1)
Return, Array1
}
 
len(queue) { ; number of entries in "queue"
 
Global
;---------------------------------------------------------------------------
StringReplace %queue%, %queue%, |, |, UseErrorLevel
empty(queue) { ; check if queue named "queue" is empty
Return, %queue% = "" ? 0 : ErrorLevel+1
;---------------------------------------------------------------------------
global
Return, %queue% = ""
}</lang>