ODIN
Public Member Functions | List of all members
SeqCounterDriver Class Referenceabstract

#include <seqcounter.h>

Inherits SeqDriverBase.

Public Member Functions

virtual bool prep_driver ()=0
 
virtual void update_driver (const SeqCounter *counter, const SeqObjList *seqlist, const List< SeqVector, const SeqVector *, const SeqVector & > *vectors) const =0
 
virtual double get_preduration () const =0
 
virtual double get_postduration () const =0
 
virtual double get_preduration_inloop () const =0
 
virtual double get_postduration_inloop () const =0
 
virtual bool create_program (programContext &context, const STD_string &loopkernel) const =0
 
virtual STD_string get_program_head (programContext &context, const STD_string &loopkernel, unsigned int times) const =0
 
virtual STD_string get_program_tail (programContext &context, const STD_string &loopkernel, unsigned int times) const =0
 
virtual STD_string get_program_head_unrolled (programContext &context, unsigned int index) const =0
 
virtual STD_string get_program_iterator (programContext &context) const =0
 
virtual void pre_vecprepevent (eventContext &context) const =0
 
virtual void post_vecprepevent (eventContext &context, int repcounter) const =0
 
virtual void outdate_cache () const =0
 
virtual bool unroll_program (const SeqCounter *counter, const SeqObjList *seqlist, const List< SeqVector, const SeqVector *, const SeqVector & > *vectors, programContext &context) const =0
 
virtual SeqCounterDriverclone_driver () const =0
 

Detailed Description

The base class for platform specific drivers of counters objects to iterate over vectors

Definition at line 38 of file seqcounter.h.

Member Function Documentation

◆ clone_driver()

virtual SeqCounterDriver* SeqCounterDriver::clone_driver ( ) const
pure virtual

Return an exact copy of this driver

◆ create_program()

virtual bool SeqCounterDriver::create_program ( programContext context,
const STD_string &  loopkernel 
) const
pure virtual

Asks driver whether a program has to be created at all for the given context and loopkernel, useful to avoid 'empty' loops in the program

◆ get_postduration()

virtual double SeqCounterDriver::get_postduration ( ) const
pure virtual

Duration the loop itself takes after its kernel is iterated

◆ get_postduration_inloop()

virtual double SeqCounterDriver::get_postduration_inloop ( ) const
pure virtual

Duration the loop itself takes after each iteration

◆ get_preduration()

virtual double SeqCounterDriver::get_preduration ( ) const
pure virtual

Duration the loop itself takes before iteration is started

◆ get_preduration_inloop()

virtual double SeqCounterDriver::get_preduration_inloop ( ) const
pure virtual

Duration the loop itself takes before each iteration

◆ get_program_head()

virtual STD_string SeqCounterDriver::get_program_head ( programContext context,
const STD_string &  loopkernel,
unsigned int  times 
) const
pure virtual

Returns the head of the loop, i.e. code before the loop kernel

◆ get_program_head_unrolled()

virtual STD_string SeqCounterDriver::get_program_head_unrolled ( programContext context,
unsigned int  index 
) const
pure virtual

Returns the head of the loop, i.e. code before the loop kernel if the loop is unrolled

◆ get_program_iterator()

virtual STD_string SeqCounterDriver::get_program_iterator ( programContext context) const
pure virtual

Returns commands to iterate vectors manually

◆ get_program_tail()

virtual STD_string SeqCounterDriver::get_program_tail ( programContext context,
const STD_string &  loopkernel,
unsigned int  times 
) const
pure virtual

Returns the tail of the loop, i.e. code after the loop kernel

◆ outdate_cache()

virtual void SeqCounterDriver::outdate_cache ( ) const
pure virtual

Will be called if any attribute of the counter was changed

◆ post_vecprepevent()

virtual void SeqCounterDriver::post_vecprepevent ( eventContext context,
int  repcounter 
) const
pure virtual

Will be called after vectors are prepped for the current iteration If repcounter>=0, the repetition display of the platform will be updated to 'repcounter'

◆ pre_vecprepevent()

virtual void SeqCounterDriver::pre_vecprepevent ( eventContext context) const
pure virtual

Will be called before vectors are prepped for the current iteration

◆ prep_driver()

virtual bool SeqCounterDriver::prep_driver ( )
pure virtual

Will be called once during prepping the sequence

◆ unroll_program()

virtual bool SeqCounterDriver::unroll_program ( const SeqCounter counter,
const SeqObjList seqlist,
const List< SeqVector, const SeqVector *, const SeqVector & > *  vectors,
programContext context 
) const
pure virtual

Asks driver whether the loop should be unrolled i.e. whether each iteration will be explicitely written to the program, seqlist can be zero

◆ update_driver()

virtual void SeqCounterDriver::update_driver ( const SeqCounter counter,
const SeqObjList seqlist,
const List< SeqVector, const SeqVector *, const SeqVector & > *  vectors 
) const
pure virtual

Function to update driver internals which is called before the driver is queried for actions, seqlist can be zero


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