Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Calculation::calcMPC(Event *event) {
- //Если событие - базисное
- if((event->mode() == Event::end)) {
- return;
- }
- //Если событие имеет операцию дизъюнкции
- if((event->mode() == Event::dis)) {
- QList<QList<Event*> >::iterator iter;
- for(iter = mpc.begin(); iter != mpc.end(); ++iter) {
- //Если список содержит событие
- if(iter->contains(event)) {
- QList<Event*> tmpList = *iter;
- QList<Event*>::iterator it;
- for(it = tmpList.begin(); it != tmpList.end(); ++it) {
- if(*it == event){
- tmpList.erase(it);
- break;
- }
- }
- //Для каждого дочернего события
- // создаем новый список и добавляем его в общий
- foreach(Event* pevt, event->childs()) {
- QList<Event*> inList = tmpList;
- inList.append(pevt);
- mpc.append(inList);
- }
- mpc.erase(iter);
- }
- }
- foreach(Event* evt, event->childs()) { calcMPC(evt); }
- }
- //Если событие имеет операцию конъюнкции
- if((event->mode() == Event::con)) {
- QList<QList<Event*> >::iterator iter;
- for(iter = mpc.begin(); iter != mpc.end(); ++iter) {
- //В каждый список, в котором содержится это событие
- // добавляем его дочерние события
- QList<Event*>*tmpLst = &(*iter);
- if(tmpLst->contains(event)){
- foreach(Event* pevt, event->childs()) {
- tmpLst->append(pevt);
- }
- }
- QList<Event*>::iterator i;
- for(i = tmpLst->begin(); i != tmpLst->end(); ++i) {
- if(*i == event) {
- tmpLst->erase(i);
- break;
- }
- }
- }
- foreach(Event* evt, event->childs()) { calcMPC(evt); }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement