(index ("isa?" 0) (":" 105) ("size" 266) ("empty?" 389) ("count" 506) ("send!" 631) ("send/blocking!" 809) ("receive!" 1323) ("send-list/anyway!!" 1465) ("receive-all!" 1886))
(def (sig (procedure "(isa? *) -> boolean" (id isa?))) (p "Test predicate for " (tt "PIGEON-HOLE") "."))
(def (sig (procedure "(: make (&optional NAME #!key (capacity: 0) -> {{PIGEON-HOLE}}))" (id :))) (p "Return a " (tt "PIGEON-HOLE") " constrained by capacity."))
(def (sig (procedure "(size PIGEON-HOLE) -> fixnum" (id size))) (p "Return number of pigeons in " (tt "PIGEON-HOLE") "."))
(def (sig (procedure "(empty? PIGEON-HOLE) -> boolean" (id empty?))) (p "Test " (tt "PIGEON-HOLE") " to be empty."))
(def (sig (procedure "(count PIGEON-HOLE) -> fixnum" (id count))) (p "Return number of waiters on " (tt "PIGEON-HOLE") "."))
(def (sig (procedure "(send! PIGEON-HOLE VALUE) -> boolean" (id send!))) (p "Immediately send " (tt "VALUE") " to " (tt "PIGEON-HOLE") ".  Does *not* respect capacity limits!"))
(def (sig (procedure "(send/blocking! PIGEON-HOLE VALUE [BLOCK]) -> boolean" (id send/blocking!))) (p "Send " (tt "VALUE") " to " (tt "PIGEON-HOLE") ", blocks if capacity is reached.") (p (tt "BLOCK") " is either a boolean or a procedure taking the queue as argument and returning a boolean.  If it is a procedure it is call in tail position when the call would block.  If " (tt "#f") " does not block but return #f.  Default if " (tt "#t") ": block for capacity.") (p "Return: " (tt "#t") " if value was send."))
(def (sig (procedure "(receive! PIGEON-HOLE) -> *" (id receive!))) (p "Receive value from " (tt "PIGEON-HOLE") ", block if none available."))
(def (sig (procedure "(send-list/anyway!! PIGEON-HOLE LIST [NUM LAST]) -> undefined" (id send-list/anyway!!))) (p "Append all values from " (tt "LIST") " to " (tt "PIGEON-HOLE") ".") (p "It is an error to access " (tt "LIST") " after this call.  Optional " (tt "NUM") " and " (tt "LAST") " may be given for optimization.  Must be the length of the " (tt "LIST") " and the last pair of it.  All bets are off otherwise."))
(def (sig (procedure "(receive-all! PIGEON-HOLE) -> LIST" (id receive-all!))) (p "Receive list of all currently available values from " (tt "PIGEON-HOLE") "."))
