68 const std::vector<DriveOwner>& drives);
71 virtual std::ostream&
Restart(std::ostream& out)
const;
81 typedef std::vector<DriveOwner>::const_iterator
iterator;
93 const std::vector<DriveOwner>& drives)
115 iDrive = floor(dSwitch);
119 iDrive = ceil(dSwitch);
123 iDrive = round(dSwitch);
133 if (iDrive < 0 || iDrive > iMaxIndex) {
134 silent_cerr(
"drive caller(" <<
GetLabel()
135 <<
"): argument " << iDrive
137 <<
" is not in range [0:" << iMaxIndex <<
"]"
143 return rgDrives[iDrive].pGetDriveCaller();
160 if (!i->bIsDifferentiable()) {
176 i->pGetDriveCaller()->Restart(out);
202 NeedDM(pDM, HP, bDeferred,
"switch");
212 silent_cerr(
"sorry, since the driver is not owned by a DataManager" << std::endl
213 <<
"no DOF dependent drivers are allowed;" << std::endl
214 <<
"aborting..." << std::endl);
231 silent_cerr(
"Keyword \"floor\" or \"ceil\" expected at line " << HP.
GetLineData() << std::endl);
237 if (iNumDrives < 1) {
238 silent_cerr(
"At least one drive caller expected at line " << HP.
GetLineData() << std::endl);
242 std::vector<DriveOwner> rgDrives;
244 rgDrives.reserve(iNumDrives);
246 for (
int i = 0; i < iNumDrives; ++i) {
270 #ifndef STATIC_MODULES
276 silent_cerr(
"switch_drive: "
277 "module_init(" << module_name <<
") "
278 "failed" << std::endl);
285 #endif // ! STATIC_MODULES
DriveCaller * pCopy(void) const
bool SetDriveCallerData(const char *name, DriveCallerRead *rf)
const DriveCaller * pGetDrive() const
#define MBDYN_EXCEPT_ARGS
virtual integer GetInt(integer iDefval=0)
int module_init(const char *module_name, void *pdm, void *php)
This function registers our user defined element for the math parser.
virtual std::ostream & Restart(std::ostream &out) const
virtual const DriveHandler * pGetDrvHdl(void) const
const DriveHandler * pGetDrvHdl(void) const
virtual doublereal dGetP(const doublereal &dVar) const
bool bIsDifferentiable(void) const
virtual bool IsKeyWord(const char *sKeyWord)
SwitchDriveCaller(const DriveHandler *pDH, const DriveOwner &oSwitch, Type eType, const std::vector< DriveOwner > &drives)
#define ASSERT(expression)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
DriveCaller * pGetDriveCaller(void) const
virtual doublereal dGet(void) const
virtual doublereal dGet(const doublereal &dVar) const =0
virtual doublereal dGetP(void) const
const std::vector< DriveOwner > rgDrives
doublereal dGet(const doublereal &dVar) const
DriveCaller * GetDriveCaller(bool bDeferred=false)
void NeedDM(const DataManager *pDM, MBDynParser &HP, bool bDeferred, const char *const name)
virtual HighParser::ErrOut GetLineData(void) const
unsigned int GetLabel(void) const
std::vector< DriveOwner >::const_iterator iterator
DriveCaller * Read(const DataManager *pDM, MBDynParser &HP, bool bDeferred)
virtual ~SwitchDriveCaller()