SIMLIB/C++  3.07
Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
simlib3::CalendarQueue Class Reference

CQ implementation of calendar. More...

Inheritance diagram for simlib3::CalendarQueue:
Inheritance graph
[legend]
Collaboration diagram for simlib3::CalendarQueue:
Collaboration graph
[legend]

Public Member Functions

virtual void ScheduleAt (Entity *p, double t) override
 enqueue More...
 
virtual EntityGet (Entity *p) override
 dequeue More...
 
virtual EntityGetFirst () override
 dequeue first More...
 
virtual void clear (bool destroy=false) override
 remove all More...
 
virtual const char * Name () override
 
virtual void debug_print () override
 for debugging only More...
 
void visualize (const char *msg)
 CalendarQueue::visualize – output suitable for Gnuplot. More...
 
- Public Member Functions inherited from simlib3::Calendar
bool Empty () const
 
unsigned Size () const
 
double MinTime () const
 time of activation of first item More...
 

Static Public Member Functions

static CalendarQueuecreate ()
 create calendar instance More...
 
- Static Public Member Functions inherited from simlib3::Calendar
static Calendarinstance ()
 create/get single instance (singleton) More...
 
static bool instance_exists ()
 check if the instance exists More...
 

Private Types

typedef CalendarListImplementation BucketList
 

Private Member Functions

bool list_impl ()
 
int time2bucket (double t)
 Convert time to bucket number. More...
 
double time2bucket_top (double t)
 Compute bucket top limit. More...
 
double estimate_bucket_width ()
 compute new bucket width — EXPERIMENTAL More...
 
void switchtocq ()
 switch to calendar queue implementation More...
 
void switchtolist ()
 switch to list implementation More...
 
 CalendarQueue ()
 Initialize calendar queue. More...
 
 ~CalendarQueue ()
 Destroy calendar queue. More...
 
void Resize (int grow=0)
 Resize bucket array. More...
 
void SearchMinTime (double starttime)
 compute new mintime More...
 

Private Attributes

BucketListbuckets
 
BucketList list
 
unsigned nbuckets
 
unsigned hi_bucket_mark
 
unsigned low_bucket_mark
 
unsigned nextbucket
 
unsigned numop
 
double bucket_width
 
double buckettop
 
double last_dequeue_time
 
double sumdelta
 
unsigned ndelta
 

Additional Inherited Members

- Protected Member Functions inherited from simlib3::Calendar
void SetMinTime (double t)
 set cache for faster access More...
 
 Calendar ()
 
virtual ~Calendar ()
 clear is called in derived class dtr More...
 
- Static Protected Member Functions inherited from simlib3::Calendar
static void delete_instance ()
 destroy single instance More...
 
- Protected Attributes inherited from simlib3::Calendar
unsigned _size
 number of scheduled items More...
 

Detailed Description

CQ implementation of calendar.

Definition at line 547 of file calendar.cc.

Member Typedef Documentation

◆ BucketList

Definition at line 548 of file calendar.cc.

Constructor & Destructor Documentation

◆ CalendarQueue()

simlib3::CalendarQueue::CalendarQueue ( )
private

Initialize calendar queue.

Definition at line 625 of file calendar.cc.

References Dprintf, simlib3::Calendar::SetMinTime(), and simlib3::SIMLIB_MAXTIME.

◆ ~CalendarQueue()

simlib3::CalendarQueue::~CalendarQueue ( )
private

Destroy calendar queue.

Definition at line 1121 of file calendar.cc.

References simlib3::allocator, simlib3::EventNoticeAllocator::clear(), clear(), and Dprintf.

Member Function Documentation

◆ clear()

void simlib3::CalendarQueue::clear ( bool  destroy = false)
overridevirtual

◆ create()

static CalendarQueue* simlib3::CalendarQueue::create ( )
inlinestatic

◆ debug_print()

void simlib3::CalendarQueue::debug_print ( )
overridevirtual

◆ estimate_bucket_width()

double simlib3::CalendarQueue::estimate_bucket_width ( )
private

◆ Get()

Entity * simlib3::CalendarQueue::Get ( Entity p)
overridevirtual

◆ GetFirst()

Entity * simlib3::CalendarQueue::GetFirst ( )
overridevirtual

◆ list_impl()

bool simlib3::CalendarQueue::list_impl ( )
inlineprivate

Definition at line 564 of file calendar.cc.

Referenced by clear(), Get(), GetFirst(), ScheduleAt(), and visualize().

◆ Name()

virtual const char* simlib3::CalendarQueue::Name ( )
inlineoverridevirtual

Implements simlib3::Calendar.

Definition at line 604 of file calendar.cc.

References simlib3::Calendar::debug_print().

◆ Resize()

void simlib3::CalendarQueue::Resize ( int  grow = 0)
private

◆ ScheduleAt()

void simlib3::CalendarQueue::ScheduleAt ( Entity p,
double  t 
)
overridevirtual

◆ SearchMinTime()

void simlib3::CalendarQueue::SearchMinTime ( double  starttime)
private

◆ switchtocq()

void simlib3::CalendarQueue::switchtocq ( )
private

◆ switchtolist()

void simlib3::CalendarQueue::switchtolist ( )
private

◆ time2bucket()

int simlib3::CalendarQueue::time2bucket ( double  t)
inlineprivate

Convert time to bucket number.

Definition at line 567 of file calendar.cc.

Referenced by estimate_bucket_width(), Get(), GetFirst(), Resize(), ScheduleAt(), SearchMinTime(), and switchtocq().

◆ time2bucket_top()

double simlib3::CalendarQueue::time2bucket_top ( double  t)
inlineprivate

◆ visualize()

void simlib3::CalendarQueue::visualize ( const char *  msg)

Member Data Documentation

◆ bucket_width

double simlib3::CalendarQueue::bucket_width
private

Definition at line 557 of file calendar.cc.

Referenced by estimate_bucket_width(), Resize(), SearchMinTime(), switchtocq(), and visualize().

◆ buckets

BucketList* simlib3::CalendarQueue::buckets
private

◆ buckettop

double simlib3::CalendarQueue::buckettop
private

Definition at line 558 of file calendar.cc.

Referenced by SearchMinTime().

◆ hi_bucket_mark

unsigned simlib3::CalendarQueue::hi_bucket_mark
private

Definition at line 552 of file calendar.cc.

Referenced by Resize(), ScheduleAt(), and switchtocq().

◆ last_dequeue_time

double simlib3::CalendarQueue::last_dequeue_time
private

Definition at line 559 of file calendar.cc.

Referenced by clear(), GetFirst(), and switchtocq().

◆ list

BucketList simlib3::CalendarQueue::list
private

Definition at line 550 of file calendar.cc.

Referenced by clear(), Get(), GetFirst(), ScheduleAt(), switchtocq(), and switchtolist().

◆ low_bucket_mark

unsigned simlib3::CalendarQueue::low_bucket_mark
private

Definition at line 553 of file calendar.cc.

Referenced by Get(), GetFirst(), Resize(), and switchtocq().

◆ nbuckets

unsigned simlib3::CalendarQueue::nbuckets
private

◆ ndelta

unsigned simlib3::CalendarQueue::ndelta
private

Definition at line 561 of file calendar.cc.

Referenced by clear(), estimate_bucket_width(), GetFirst(), and switchtocq().

◆ nextbucket

unsigned simlib3::CalendarQueue::nextbucket
private

Definition at line 554 of file calendar.cc.

Referenced by GetFirst(), and SearchMinTime().

◆ numop

unsigned simlib3::CalendarQueue::numop
private

Definition at line 556 of file calendar.cc.

Referenced by clear(), Get(), GetFirst(), Resize(), ScheduleAt(), switchtocq(), and visualize().

◆ sumdelta

double simlib3::CalendarQueue::sumdelta
private

Definition at line 560 of file calendar.cc.

Referenced by clear(), estimate_bucket_width(), GetFirst(), and switchtocq().


The documentation for this class was generated from the following file: