Operand (const Operand &cp) { action = cp.GetAction(); variable = cp.GetVariable(); time = cp.GetTime(); location = cp.GetLocation(); if (cp.GetTimeRange() != NULL) { time_range = new string[2]; time_range[0] = cp.GetTimeRange()[0]; time_range[1] = cp.GetTimeRange()[1]; } else time_range = NULL; if (cp.GetNodeRange() != NULL) { node_range = new string[2]; node_range[0] = cp.GetNodeRange()[0]; node_range[1] = cp.GetNodeRange()[1]; } else node_range = NULL; }
bool FixMissingEntriesAndFillTheBucket(queue<Operand*> &ods, stack<string> &bucket) { //Fix missing entries queue<Operand*> temp; register bool inside = 0; temp = ods; while (ods.size() != 1) ods.pop(); Operand *tmpod = new Operand(*(ods.front())); string *rt = tmpod->GetTimeRange(); string *rl = tmpod->GetNodeRange(); string tact = tmpod->GetAction(); string rtime = tmpod->GetTime(); string rloc = tmpod->GetLocation(); ods = temp; //pop entire queue string when = BlankSpace, loc = BlankSpace; while (ods.size() != 0) { when = BlankSpace, loc = BlankSpace; Operand *t = new Operand(*(ods.front())); when.append(t->GetTime());when.append(BlankSpace); loc.append(t->GetLocation()); loc.append(BlankSpace); if (t->GetTimeRange() == NULL) { t->SetTimeRange(rt); } if (t->GetNodeRange() == NULL) t->SetNodeRange(rl); if (t->GetAction() == DefaultAction) t->SetAction(tact); if (t->GetTime() == DefaultWhen) t->SetTime(rtime); if (t->GetLocation() == DefaultLocation) t->SetLocation(rloc); if (t->GetTimeRange() != NULL) { when.append(t->GetTimeRange()[0]); if (t->GetTimeRange()[1] != EmptyString) { when.append(ToKeyword); when.append(t->GetTimeRange()[1]); } } else { when.append(DefaultWhenValue); } if (t->GetNodeRange() != NULL) { loc.append(t->GetNodeRange()[0]); if (t->GetNodeRange()[1] != EmptyString) { loc.append(ToKeyword); loc.append(t->GetNodeRange()[1]); } } else { loc.append(DefaultLocationValue); } if ((t->GetVariable() != DefaultComponent) || (t->GetAction() != DefaultAction)) { inside = 1; bucket.push(BlankSpace); bucket.push(when); bucket.push(loc); bucket.push(t->GetAction()); bucket.push(BlankSpace); bucket.push(t->GetVariable()); } ods.pop(); } return inside; }