File

teal-src/util/queue.d.tl @ 12763:d26eefe98d09

util.dbuffer: Add efficient shortcuts for discard() in certain cases If the buffer is already empty, nothing to do. If we're throwing away the whole buffer, we can just empty it and avoid read_chunk() (which in turn may collapse()). These shortcuts are much more efficient.
author Matthew Wild <mwild1@gmail.com>
date Tue, 11 Oct 2022 11:37:55 +0100
parent 12622:ef59fb975d3e
line wrap: on
line source

local record lib
	record queue<T>
		size : integer
		count : function (queue<T>) : integer
		enum push_errors
			"queue full"
		end

		push : function (queue<T>, T) : boolean, push_errors
		pop : function (queue<T>) : T
		peek : function (queue<T>) : T
		replace : function (queue<T>, T) : boolean, push_errors
		type iterator = function (T, integer) : integer, T
		items : function (queue<T>) : iterator, T, integer
		type consume_iter = function (queue<T>) : T
		consume : function (queue<T>) : consume_iter
	end

	new : function<T> (size:integer, allow_wrapping:boolean) : queue<T>
end
return lib;