57 listptr =
new std::list<Delay*>();
72 std::list<Delay *>::iterator i;
79 std::list<Delay *>::iterator i;
89#ifndef SIMLIB_public_Delay_Buffer
92 virtual void put(
double value,
double time) = 0;
93 virtual double get(
double time) = 0;
126 virtual void put(
double value,
double time)
override {
128#ifndef NO_DELAY_OPTIMIZATION
137 virtual double get(
double time)
override
142 std::deque<Pair>::iterator i;
145 for( n=0, i=
buf.begin(); i!=
buf.end(); ++i ) {
149 if( p.
time > time )
break;
155 if( p.
time < time ) {
186 Dprintf((
"Delay::Delay(in=%p, dt=%g, ival=%g)", &i, _dt, ival));
226 double oldtime =
Time -
dt;
242 if( newdelay>=0.0 && newdelay<=
Time )
continuous signal delay block
double Value() override
output of continuous delay block
double last_time
memory for delayed signal samples
void Init()
initialize delay block
double Set(double newDT)
change delay time (EXPERIMENTAL)
double last_value
last output value
void Sample()
sample input (called automatically)
double initval
initial value (used at start)
double dt
Parameter: delay time (should be > MaxStep)
~Delay()
remove buffer and delay block from list
Buffer * buffer
memory for past values
memory for delayed pairs (Time,value)
Pair last_insert
last inserted value (for optimization)
virtual void clear() override
initialize buffer
virtual double get(double time) override
read interpolated value
std::deque< Pair > buf
storage for samples
virtual void put(double value, double time) override
store value
static std::list< Delay * > * listptr
list of delay objects – singleton
static void InitAll()
function to initialize all delay objects
static void SampleAll()
function to scan inputs of all delay objects
static void Register(Delay *p)
static void UnRegister(Delay *p)
base for continuous blocks with single input and algebraic loop check
Simple delay block interface.
Internal header file for SIMLIB/C++.
#define INSTALL_HOOK(name, function)
Implementation of class CalendarList interface is static - using global functions in SQS namespace.
const double & Time
model time (is NOT the block)
void SIMLIB_error(const enum _ErrEnum N)
print error message and abort program
Main SIMLIB/C++ interface.
abstract base class for delayed signal samples storage
virtual void put(double value, double time)=0
store value
virtual void clear()=0
initialize buffer
virtual double get(double time)=0
read interpolated value
pair (t,val) for storing in buffer TODO: use std::tuple