6 `uvm_object_utils(cl_syoscb_queue_iterator_std)
8 function new(string name = "cl_syoscb_queue_iterator_std");
16 extern
virtual function bit
has_next();
19 extern
virtual function bit
first();
20 extern
virtual function bit
last();
21 extern
virtual function bit
set_queue(cl_syoscb_queue_base owner);
29 if(!this.has_next()) begin
30 `uvm_error("ITER_ERROR", $sformatf("Cannot get next item for std-queue %0s with %0d elements. Already pointing to last element", qh.get_name(), qh.get_size()))
41 return this.
position < qh.get_size();
45 function cl_syoscb_proxy_item_base cl_syoscb_queue_iterator_std::previous();
46 cl_syoscb_queue_base qh = this.get_queue();
47 if(!this.has_previous()) begin
48 `uvm_error("ITER_ERROR", $sformatf("Cannot get previous item for std-queue %0s with %0d elements. Already pointing to first element", qh.get_name(), qh.get_size()))
53 return this.get_item_proxy();
57 function bit cl_syoscb_queue_iterator_std::has_previous();
58 return (this.position > 0);
64 if(this.owner.get_size() == 0) begin
74 if(this.owner.get_size() == 0) begin
86 if(owner == null) begin
88 `uvm_error("ITER_ERROR", "Unable to associate queue with iterator as argument was null")
90 end else if(this.owner != null) begin
92 `uvm_error("ITER_ERROR", $sformatf("Cannot reassign queue owner. Use create_iterator() to create an iterator for queue %s", owner.get_name()))
94 end else if(!$cast(qs, owner)) begin
95 `uvm_error("ITER_ERROR", $sformatf({"Cannot assign queue %0s to iterator %0s, as the types do not match.\n",
96 "Expected a queue of type cl_syoscb_queue_std, got %0s"}, owner.get_name(), this.get_name(), owner.get_type_name()))
109 proxy_item_std = cl_syoscb_proxy_item_std::type_id::create("proxy_item_std");
112 return proxy_item_std;
cl_syoscb_queue_base owner
The owner of this iterator.
virtual cl_syoscb_proxy_item_base next()
Iterator API: See cl_syoscb_queue_iterator_base::next for details
virtual cl_syoscb_queue_base get_queue()
Iterator API: Internal API: Returns the queue over which this iterator is iterating.
virtual cl_syoscb_proxy_item_base previous()
Iterator API: See cl_syoscb_queue_iterator_base::previous for details
Base class for all proxy items.
virtual cl_syoscb_proxy_item_base get_item_proxy()
Iterator API: See cl_syoscb_queue_iterator_base::get_item_proxy for details
virtual bit set_queue(cl_syoscb_queue_base owner)
Iterator API: See cl_syoscb_queue_iterator_base::set_queue for details
virtual bit has_next()
Iterator API: See cl_syoscb_queue_iterator_base::has_next for details
virtual bit has_previous()
Iterator API: See cl_syoscb_queue_iterator_base::has_previous for details
Queue iterator class for iterating over std queues.
cl_syoscb_cfg cfg
Local handle to the SCB cfg.
Queue iterator base class defining the iterator API used for iterating over queues.
virtual bit last()
Iterator API: See cl_syoscb_queue_iterator_base::last for details
int unsigned position
Current position in the queue.
Class which represents the base concept of a queue.
Standard implementation of a queue.
virtual bit first()
Iterator API: See cl_syoscb_queue_iterator_base::first for details
Proxy item implementation for standard queues.