finish test 1 (succesfully)

This commit is contained in:
2023-10-17 14:18:38 +02:00
parent b3cec6c926
commit c1e65d41ee
4 changed files with 78 additions and 38 deletions

View File

@@ -6,11 +6,13 @@
// TODO done: Implement code for XFBehavior class
XFBehavior::XFBehavior() {
this->deleteOnTerminate_ = false;
}
XFBehavior::~XFBehavior() {
if (this->deleteOnTerminate()) {
delete this;
}
}
void XFBehavior::startBehavior() {
@@ -18,20 +20,22 @@ void XFBehavior::startBehavior() {
}
void XFBehavior::pushEvent(XFEvent *pEvent) {
pEvent->setBehavior(this);
if(pEvent->getBehavior()==nullptr) {
pEvent->setBehavior(this);
}
this->getDispatcher()->pushEvent(pEvent);
}
bool XFBehavior::deleteOnTerminate() const {
return deleteOnTerminate_;
return this->deleteOnTerminate_;
}
void XFBehavior::setDeleteOnTerminate(bool deleteBehaviour) {
deleteOnTerminate_ = deleteBehaviour;
this->deleteOnTerminate_ = deleteBehaviour;
}
const XFEvent *XFBehavior::getCurrentEvent() const {
return pCurrentEvent_;
return this->pCurrentEvent_;
}
interface::XFDispatcher *XFBehavior::getDispatcher() {
@@ -40,23 +44,26 @@ interface::XFDispatcher *XFBehavior::getDispatcher() {
const XFTimeout *XFBehavior::getCurrentTimeout() {
if(pCurrentEvent_->getEventType() == XFEvent::Timeout) {
return (XFTimeout*) pCurrentEvent_;
return (XFTimeout*) this->pCurrentEvent_;
} else {
return nullptr;
}
}
void XFBehavior::setCurrentEvent(const XFEvent *pEvent) {
pCurrentEvent_ = pEvent;
this->pCurrentEvent_ = pEvent;
}
XFBehavior::TerminateBehavior XFBehavior::process(const XFEvent *pEvent) {
setCurrentEvent(pEvent);
this->setCurrentEvent(pEvent);
XFEventStatus status = XFEventStatus::Unknown;
status = processEvent();
if(status == XFEventStatus::Consumed) {
return deleteOnTerminate_;
} else {
return false;
status = this->processEvent();
if(status == XFEventStatus::Consumed && pEvent->deleteAfterConsume()) {
delete pEvent;
}
XFBehavior::TerminateBehavior terminateBehavior = false;
if(status == XFEventStatus::Terminate) {
terminateBehavior = true;
}
return terminateBehavior;
}