Пример #1
0
void processFile (string filename) {
    DLList list;
    stringstream ss;
    ifstream fin(filename.c_str());
    if(!fin.fail()) {
        string nextline;
        while(!fin.eof()) {
            getline(fin, nextline);
            if(isalpha(nextline[0])) {
                list.insert(nextline);
            }
            else {
                list.cycle(atoi(nextline.c_str()));
                cout << list.ToString() <<endl << "Won this round" << endl;
                cout << list.getDeleted() << endl << "loses this round. " << endl << endl;
            }

        }
        cout <<"Congratulations to: " << list.getFront() << endl << "you won!" << endl;
        fin.close();
        list.clear();
        cout << "INPUT FINISHED" << endl;
    }
    else {
        cout << "Unable to open " << filename << " for processing." << endl;
    }
}
/**********************************************************************
 * Fib - setFibNumber
 * Inputs: n (int)
 * Calculates the n-th Fibonacci number 
 ***********************************************************************/
void Fib::setFibNumber(int n)
{
   if (n < 1)
   {
      cout << "Fibonacci subscript cannot be less than 1\n";
      return;
   }
    /*need to clear fibNumber. setFibNumber() may be called several times on an     object and you would have problems if you didn't erase all previous data*/
   fibNumber.clear();
   fibNumber.insert(1,0); // fibNumber will start as f1. f1 = 1;
   fibSubscript = n;
   
   if (n < 3) // can return here if n is 1 or 2. 
      return;
   
   DLList<int> f2;
   f2.insert(1,0); // fibNumber(aka f1) = 1 and f2 = 1. We are rdy to start.
   Node<int>* p1;// traversal pointers for DLList objects fibNumber(f1) and f2
   Node<int>* p2;
   int temp = 0; // used as f1's node value placeholder. 
   int carry = 0;

   for (int i = 0; i < n - 2; i++) //run n - 2 times. f1 and f2 done already
   {
      //reset pointers to respective beginnings of lists. reset carry to 0
      p1 = fibNumber.getFirstNode();
      p2 = f2.getFirstNode();
      carry = 0;
      //Add both lists. fibNumber becomes sum, f2 becomes what fibNumber was
      while (p1 != NULL) 
      {
         temp = p1->getData();
         p1->setData((p1->getData() + p2->getData() + carry) % 1000000000); 
         carry = (temp + p2->getData()) / 1000000000;
         p2->setData(temp);
         p1 = p1->getNext();
         p2 = p2->getNext();
      }
      if (carry == 1) // Account for carry on addition of final nodes.
      {
         fibNumber.insert(1, fibNumber.getNumItems());
         f2.insert(0, f2.getNumItems());
      }
   }      
}
Пример #3
0
//
// I_AddDeferredEvent
//
// haleyjd 03/06/13: Some received input events need to be deferred until at
// least one tic has passed before they are posted to the event queue.
// "Trigger" style keys such as mousewheel up and down are the chief offenders.
// Rather than shoehorning a bunch of code for this into I_GetEvent, it is
// now handled here uniformly for all event types.
//
static void I_AddDeferredEvent(const event_t &ev, int tic)
{
   deferredevent_t *de;

   if(i_deferredfreelist.head)
   {
      de = *i_deferredfreelist.head;
      i_deferredfreelist.remove(de);
   }
   else
      de = estructalloc(deferredevent_t, 1);

   de->ev  = ev;
   de->tic = tic;
   i_deferredevents.insert(de);
}
Пример #4
0
// Efficiently Computing Static Single Assignment Form and
//  the Control Dependence Graph,
// R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, F. K. Zadeck
bool
Function::convertToSSA()
{
   // 0. calculate live in variables (for pruned SSA)
   buildLiveSets();

   // 1. create the dominator tree
   domTree = new DominatorTree(&cfg);
   reinterpret_cast<DominatorTree *>(domTree)->findDominanceFrontiers();

   // 2. insert PHI functions
   DLList workList;
   LValue *lval;
   BasicBlock *bb;
   int var;
   int iterCount = 0;
   int *hasAlready = new int[allBBlocks.getSize() * 2];
   int *work = &hasAlready[allBBlocks.getSize()];

   memset(hasAlready, 0, allBBlocks.getSize() * 2 * sizeof(int));

   // for each variable
   for (var = 0; var < allLValues.getSize(); ++var) {
      if (!allLValues.get(var))
         continue;
      lval = reinterpret_cast<Value *>(allLValues.get(var))->asLValue();
      if (!lval || lval->defs.empty())
         continue;
      ++iterCount;

      // TODO: don't add phi functions for values that aren't used outside
      //  the BB they're defined in

      // gather blocks with assignments to lval in workList
      for (Value::DefIterator d = lval->defs.begin();
           d != lval->defs.end(); ++d) {
         bb = ((*d)->getInsn() ? (*d)->getInsn()->bb : NULL);
         if (!bb)
            continue; // instruction likely been removed but not XXX deleted

         if (work[bb->getId()] == iterCount)
            continue;
         work[bb->getId()] = iterCount;
         workList.insert(bb);
      }

      // for each block in workList, insert a phi for lval in the block's
      //  dominance frontier (if we haven't already done so)
      for (DLList::Iterator wI = workList.iterator(); !wI.end(); wI.erase()) {
         bb = BasicBlock::get(wI);

         DLList::Iterator dfIter = bb->getDF().iterator();
         for (; !dfIter.end(); dfIter.next()) {
            Instruction *phi;
            BasicBlock *dfBB = BasicBlock::get(dfIter);

            if (hasAlready[dfBB->getId()] >= iterCount)
               continue;
            hasAlready[dfBB->getId()] = iterCount;

            // pruned SSA: don't need a phi if the value is not live-in
            if (!dfBB->liveSet.test(lval->id))
               continue;

            phi = new_Instruction(this, OP_PHI, typeOfSize(lval->reg.size));
            dfBB->insertTail(phi);

            phi->setDef(0, lval);
            for (int s = 0; s < dfBB->cfg.incidentCount(); ++s)
               phi->setSrc(s, lval);

            if (work[dfBB->getId()] < iterCount) {
               work[dfBB->getId()] = iterCount;
               wI.insert(dfBB);
            }
         }
      }
   }
   delete[] hasAlready;

   RenamePass rename(this);
   return rename.run();
}
Пример #5
0
void unittest2 ()
{
	cout << "\nSTARTING UNIT TEST\n\n";
	
	DLList list;
	
	try {
		evaluate(list.getSize() == 0);
		cout << "Passed TEST 1: default constructor (size) \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 1: default constructor (size) #\n";
	}
	
	try {
		evaluate(list.toString() == "");
		cout << "Passed TEST 2: toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 2: toString #\n";
	}
	
	list.insert(10);
	try {
		evaluate(list.getSize() == 1 && list.toString() == "10");
		cout << "Passed TEST 3: insert(10)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 3: insert(10)/getSize/toString #\n";
	}
	
	list.insert(50);
	try {
		evaluate(list.getSize() == 2 && list.toString() == "10,50");
		cout << "Passed TEST 4: insert(50)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 4: insert(50)/getSize/toString #\n";
	}
	
	list.insert(30);
	try {
		evaluate(list.getSize() == 3 && list.toString() == "10,30,50");
		cout << "Passed TEST 5: insert(30)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 5: insert(30)/getSize/toString #\n";
	}
	
	list.insert(5);
	try {
		evaluate(list.getSize() == 4 && list.toString() == "5,10,30,50");
		cout << "Passed TEST 6: insert(5)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 6: insert(5)/getSize/toString #\n";
	}
	
	list.insert(55);
	try {
		evaluate(list.getSize() == 5 && list.toString() == "5,10,30,50,55");
		cout << "Passed TEST 7: insert(55)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 7: insert(55)/getSize/toString #\n";
	}
	
	list.insert(20);
	try {
		evaluate(list.getSize() == 6 && list.toString() == "5,10,20,30,50,55");
		cout << "Passed TEST 8: insert(20)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 8: insert(20)/getSize/toString #\n";
	}
	
	list.insert(40);
	try {
		evaluate(list.getSize() == 7 && list.toString() == "5,10,20,30,40,50,55");
		cout << "Passed TEST 9: insert(40)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 9: insert(40)/getSize/toString #\n";
	}
	
	list.insert(30);
	try {
		evaluate(list.getSize() == 8 && list.toString() == "5,10,20,30,30,40,50,55");
		cout << "Passed TEST 10: insert(30)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 10: insert(30)/getSize/toString #\n";
	}
	
	list.insert(5);
	try {
		evaluate(list.getSize() == 9 && list.toString() == "5,5,10,20,30,30,40,50,55");
		cout << "Passed TEST 11: insert(5)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 11: insert(5)/getSize/toString #\n";
	}
	
	try {
		evaluate(list.removeFirst(1) == false);
		cout << "Passed TEST 12: removeFirst(1) \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 12: removeFirst(1) #\n";
	}
	
	try {
		evaluate(list.removeFirst(5) == true && list.getSize() == 8 && list.toString() == "5,10,20,30,30,40,50,55");
		cout << "Passed TEST 13: removeFirst(5)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 13: removeFirst(5)/getSize/toString #\n";
	}
	
	try {
		evaluate(list.removeFirst(30) == true && list.getSize() == 7 && list.toString() == "5,10,20,30,40,50,55");
		cout << "Passed TEST 14: removeFirst(30)/getSize/toString \n";
	} catch (MyException e){
		cout << "# FAILED TEST 14: removeFirst(30)/getSize/toString #\n";
	}
	
	try {
		evaluate(list.removeFirst(30) == true && list.getSize() == 6 && list.toString() == "5,10,20,40,50,55");
		cout << "Passed TEST 15: removeFirst(30)/getSize/toString \n";
	} catch (MyException e){
		cout << "# FAILED TEST 15: removeFirst(30)/getSize/toString #\n";
	}
	
	try {
		evaluate(list.removeFirst(55) == true && list.getSize() == 5 && list.toString() == "5,10,20,40,50");
		cout << "Passed TEST 16: removeFirst(55)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 16: removeFirst(55)/getSize/toString #\n";
	}
	
	try {
		evaluate(list.removeFirst(10) == true && list.getSize() == 4 && list.toString() == "5,20,40,50");
		cout << "Passed TEST 17: removeFirst(10)/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 17: removeFirst(10)/getSize/toString #\n";
	}
	
	list.popFront();
	try {
		evaluate(list.getSize() == 3 && list.toString() == "20,40,50");
		cout << "Passed TEST 18: removeHead/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 18: removeHead/getSize/toString #\n";
	}
	
	list.popBack();
	try {
		evaluate(list.getSize() == 2 && list.toString() == "20,40");
		cout << "Passed TEST 19: removeTail/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 19: removeTail/getSize/toString #\n";
	}
	
	list.clear();
	try {
		evaluate(list.getSize() == 0 && list.toString() == "");
		cout << "Passed TEST 20: clear/getSize/toString \n";
	} catch (MyException e) {
		cout << "# FAILED TEST 20: clear/getSize/toString #\n";
	}
	
	cout << "\nUNIT TEST COMPLETE\n\n";
	
	
}
Пример #6
0
void unittest ()
{
	cout << "\n  STARTING UNIT TEST!!!!!\n\n";
	
	DLList list;
	DLList list1;
	DLList list2;

	try {
		evaluate (list.getFront() == 0);
		cout << "Passed TEST 1: getFront '0' pushFront/getFront";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 1: getFront";
	}
	cout << endl;
	
	try {
		evaluate (list.getSize() == 0);
		cout << "Passed TEST 2: getSize '0' ";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 2: getSize";
	}
	cout << endl;
	
	try {
		evaluate (list.getBack() == 0);
		cout << "Passed TEST 3: getBack '0' ";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 3: getBack";
	}
	
	cout << "\n\n  FINISHED TESTING EMPTY LISTS!!!!!\n\n";
	
	list.pushFront(20);
	list.pushBack(5);
	list1.pushFront(63);
	list1.pushBack(12);
	list2.pushFront(14);
	list2.pushBack(99);	
	list.insert(44);
	list1.insert(87);
	list2.insert(56);
	
	try {
		evaluate (list.getFront() == 20);
		cout << "Passed TEST 4: getFront '20' pushFront/getFront ";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 4: getFront '20' pushFront/getFront";
	}
	cout << endl;
	
	try {
		evaluate (list1.getFront() == 63);
		cout << "Passed TEST 5: getFront '63' pushFront/getFront";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 5: getFront '63' pushFront/getFront";
	}
	cout << endl;
	
	cout << list2.getFront() << endl;
	try {
		evaluate (list2.getFront() == 14);
		cout << "Passed TEST 6: getFront '14' pushFront/getFront";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 6: getFront '14' pushFront/getFront";
	}
	cout << endl;
	
	try {
		evaluate (list.getBack() == 5);
		cout << "Passed TEST 7: getBack '5' pushBack/getBack";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 7: getBack '5' pushBack/getBack";
	}
	cout << endl;
	
	try {
		evaluate (list1.getBack() == 12);
		cout << "Passed TEST 8: getBack '12' pushBack/getBack";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 8: getBack '12' pushBack/getBack";
	}
	cout << endl;
	
	try {
		evaluate (list2.getBack() == 99);
		cout << "Passed TEST 9: getBack '99' pushBack/getBack";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 9: getBack '99' pushBack/getBack";
	}
	cout << endl;
	
	cout << "\n  FINISHED TESTING push/get-Back/Front!!!!!\n\n";
	
	try {
		evaluate (list.get(20) == true);
		cout << "Passed TEST 10: get '20' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 10: get '20' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list1.get(63) == true);
		cout << "Passed TEST 11: get '63' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 11: get '63' get(target";
	}
	cout << endl;
	
	try {
		evaluate (list2.get(14) == true);
		cout << "Passed TEST 12: get '14' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 12: get '14' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list.get(5) == true);
		cout << "Passed TEST 13: get '5' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 13: get '5' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list1.get(12) == true);
		cout << "Passed TEST 14: get '12' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 14: get '12' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list2.get(99) == true);
		cout << "Passed TEST 15: get '99' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 15: get '99' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list.get(1) == false);
		cout << "Passed TEST 16: get '1' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 16: get '1' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list1.get(2) == false);
		cout << "Passed TEST 17: get '2' get(target";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 17: get '2' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list2.get(3) == false);
		cout << "Passed TEST 18: get '3' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 18: get '3' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list.get(44) == true);
		cout << "Passed TEST 19: get '44' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 19: get '44' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list1.get(87) == true);
		cout << "Passed TEST 20: get '87' get(target";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 20: get '87' get(target)";
	}
	cout << endl;
	
	try {
		evaluate (list2.get(56) == true);
		cout << "Passed TEST 21: get '56' get(target)";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 21: get '56' get(target)";
	}
	cout << endl;
	
	DLList list3;
	
	list3.pushFront(4);
	list3.pushFront(5);
	list3.pushFront(6);
	list3.pushFront(7);

	list3.popFront();
	try {
		evaluate (list3.getFront() == 6);
		cout << "Passed TEST 22: popFront '6' popBack/popFront";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 22: popFront '6' popBack/popFront";
	}
	cout << endl;
	
	list3.popFront();
	try {
		evaluate (list3.getFront() == 5);
		cout << "Passed TEST 23: popFront '5' popBack/popFront";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 23: popFront '5' popBack/popFront";
	}
	cout << endl;
	
	list3.popFront();
	try {
		evaluate (list3.getFront() == 4);
		cout << "Passed TEST 24: popFront '4' popBack/popFront";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 24: popFront '4' popBack/popFront";
	}
	cout << endl;	
	
	list3.pushBack(9);
	list3.pushBack(10);
	list3.pushBack(11);		
	list3.pushBack(12);
	
	list3.popBack();
	try {
		evaluate (list3.getBack() == 11);
		cout << "Passed TEST 25: popBack '11' popBack/popFront";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 25: popBack '11' popBack/popFront";
	}
	cout << endl;

	list3.popBack();
	try {
		evaluate (list3.getBack() == 10);
		cout << "Passed TEST 26: popBack '10' popBack/popFront";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 26: popBack '10' popBack/popFront";
	}
	cout << endl;

	list3.popBack();
	try {
		evaluate (list3.getBack() == 9);
		cout << "Passed TEST 27: popBack '9' popBack/popFront";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 27: popBack '9' popBack/popFront";
	}
	cout << endl;
	
	cout << "\n  FINISHED TESTING get(target)-popBack/popFront!!!!!\n\n";

	DLList list4;	
	
	list4.pushFront(7);
	list4.pushFront(8);
	list4.pushFront(9);
	list4.pushFront(10);
	list4.pushFront(11);
	list4.pushFront(12);
	list4.pushBack(3);
	
	try {
		evaluate (list4.removeFirst(9) == true);
		cout << "Passed TEST 28: removeFirst '9' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 28: removeFirst '9' removeFirst/removeAll";
	}
	cout << endl;
	
	try {
		evaluate (list4.removeFirst(7) == true);
		cout << "Passed TEST 29: removeFirst '7' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 28: removeFirst '7' removeFirst/removeAll";
	}
	cout << endl;
	
	try {
		evaluate (list4.removeFirst(15) == false);
		cout << "Passed TEST 30: removeFirst '15' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 30: removeFirst '15' removeFirst/removeAll";
	}
	cout << endl;
	
	try {
		evaluate (list4.removeFirst(9) == false);
		cout << "Passed TEST 31: removeFirst '9' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 31: removeFirst '9' removeFirst/removeAll";
	}
	cout << endl;
	
	try {
		evaluate (list4.removeFirst(3) == true);
		cout << "Passed TEST 32: removeFirst '3' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 32: removeFirst '3' removeFirst/removeAll";
	}
	cout << endl;
	
	DLList list5;	
	list5.pushFront(4);	list5.pushFront(3);	list5.pushFront(7);	list5.pushFront(6);	list5.pushFront(8);	list5.pushFront(7);
	list5.pushFront(4);	list5.pushFront(3);	list5.pushFront(7);	list5.pushFront(6);	list5.pushFront(8);	list5.pushFront(7);
	list5.pushFront(4);	list5.pushFront(3);	list5.pushFront(7);	list5.pushFront(6);	list5.pushFront(8);	list5.pushFront(7);
	list5.pushFront(4);	list5.pushFront(3);	list5.pushFront(7);	list5.pushFront(6);	list5.pushFront(8);	list5.pushFront(7);
	list5.pushFront(4);	list5.pushFront(3);	list5.pushFront(7);	list5.pushFront(6);	list5.pushFront(8);	list5.pushFront(7);
	list5.pushFront(4);	list5.pushFront(3);	list5.pushFront(7);	list5.pushFront(6);	list5.pushFront(8);	list5.pushFront(7);
	list5.pushBack(4); list5.pushBack(3); list5.pushBack(7); list5.pushBack(6); list5.pushBack(8); list5.pushBack(7);
	list5.pushBack(4); list5.pushBack(3); list5.pushBack(7); list5.pushBack(6); list5.pushBack(8); list5.pushBack(7);
	list5.pushBack(4); list5.pushBack(3); list5.pushBack(7); list5.pushBack(6); list5.pushBack(8); list5.pushBack(7);

	try {
		evaluate (list5.removeAll(3) == true);
		cout << "Passed TEST 33: removeAll '3' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 33: removeAll '3' removeFirst/removeAll";
	}
	cout << endl;
	
	try {
		evaluate (list5.removeAll(7) == true);
		cout << "Passed TEST 34: removeAll '7' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 34: removeAll '7' removeFirst/removeAll";
	}
	cout << endl;

	try {
		evaluate (list5.removeAll(4) == true);
		cout << "Passed TEST 35: removeAll '4' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 35: removeAll '4' removeFirst/removeAll";
	}
	cout << endl;
		
	try {
		evaluate (list5.removeAll(6) == true);
		cout << "Passed TEST 36: removeAll '6' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 36: removeAll '6' removeFirst/removeAll";
	}
	cout << endl;
			
	try {
		evaluate (list5.removeAll(8) == true);
		cout << "Passed TEST 37: removeAll '8' removeFirst/removeAll";
	} catch (MyException e) {
		cout << "#" << e.message << " TEST 37: removeAll '8' removeFirst/removeAll";
	}
	cout << endl;
	
}
Пример #7
0
void processFile(char* filename) {
    
    //set up the input file stream and attempt to open the file
    ifstream fin;
    fin.open(filename);
    
    //if the file is successfully opened
    if (!fin.fail()) {
        
        //create a Doubly Linked List pointer (set to NULL)
        DLList* list = NULL;
        
        //set up reusable string stream object, int variable, and string nextLine
        stringstream ss;
        int value = 0;
        string nextLine;
        
        //while loop that continues until the end of the file is reached
        while (!fin.eof()){
            
            //get the next line from the file
            getline(fin, nextLine);
            
            //pull the first character from nextLine and make sure it is uppercase
            char firstCharacter = toupper(nextLine[0]);
            
            //if the character is C
            if (firstCharacter == 'C') {
                
                //if there is already a list, delete it first
                if (list != NULL) {
                    delete list;
                    list = NULL;
                }
                
                //create a new list and output success to the console
                list = new DLList;
                cout << "LIST CREATED" << endl;
                
            //if the first character is #
            } else if (firstCharacter == '#') {
                
                //do nothing
                
            } else {
                
                //any operation other than C requires a list instance
                //if there is no list instance
                if (list == NULL) {
                    
                    //output requirement to the console
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                    
                } else {
                    
                    //if there is a list instance perform an operation based on the first character of nextLine
                    switch(firstCharacter) {
                        
                        //if the character is X
                        case 'X':
                        
                            //clear the list and output success to the console
                            list->clear();
                            cout << "LIST CLEARED" << endl;
                        break;
                        
                        //if the character is D
                        case 'D':
                        
                            //delete the list, set the list pointer to NULL, and output success to the console
                            delete list;
                            list = NULL;
                            cout << "LIST DELETED" << endl;
                        break;
                        
                        //if the character is I
                        case 'I':
                        
                            //get the integer value that follows the character
                            ss.str(nextLine.substr(2));
                            ss >> value;
                            
                            //insert a Node into the list with the integer value from the input file as contents (ascending order)
                            list->insert(value);
                            
                            //output success to the console
                            cout << "VALUE " << value << " INSERTED" << endl;
                            
                            //clear the stringstream
                            ss.clear();
                        break;
                        
                        //if the character is F
                        case 'F':
                        
                            //get the integer that follows the character
                            ss.str(nextLine.substr(2));
                            ss >> value;
                            
                            //insert a Node at the head pointer with the value from the input file as contents
                            list->pushFront(value);
                            
                            //output success to the console
                            cout << "VALUE " << value << " ADDED TO HEAD" << endl;
                            
                            //clear the stringstream
                            ss.clear();
                        break;
                        
                        //if the character is B
                        case 'B':
                        
                            //get the integer that follows the character
                            ss.str(nextLine.substr(2));
                            ss >> value;
                            
                            //insert a Node at the tail pointer with the value from the input file as contents
                            list->pushBack(value);
                            
                            //output success to the console
                            cout << "VALUE " << value << " ADDED TO TAIL" << endl;
                            
                            //clear the stringstream
                            ss.clear();
                        break;
                        
                        //if the character is A
                        case 'A':
                        
                            //attempt to output the value of the Node a the head pointer to the console
                            try {
                                
                                //output success to the console
                                cout << "VALUE " << list->getFront() << " AT HEAD" << endl;
                                
                            //if the attempt is unsuccessful (head is NULL)
                            } catch (string err) {
                                
                                //output failure to the console
                                cout << err << endl;
                            }
                        break;
                        
                        //if the character is Z
                        case 'Z':
                        
                            //attempt to output the value of the Node at the tail pointer to the console
                            try {
                                
                                //output success to the console
                                cout << "VALUE " << list->getBack() << " AT TAIL" << endl;
                                
                            //if the attempt is unsuccessful (tail is NULL)    
                            } catch (string err) {
                                
                                //output failure to the console
                                cout << err << endl;
                            }
                        break;
                        
                        //if the character is T
                        case 'T':
                        
                            //if the list is empty
                            if (list->getSize() < 1) {
                                
                                //output failure to the console
                                cout << "LIST EMPTY" << endl;
                                
                            } else {
                                
                                //remove the Node at the head pointer and output success to the console
                                list->popFront();
                                cout << "REMOVED HEAD" << endl;
                            }
                        break;
                        
                        //if the character is K
                        case 'K':
                        
                            //if the list is empty
                            if (list->getSize() < 1) {
                                
                                //output failure to the console
                                cout << "LIST EMPTY" << endl;
                                
                            } else {
                                
                                //remove the Node at the tail pointer and output success to the console
                                list->popBack();
                                cout << "REMOVED TAIL" << endl;
                            }
                        break;
                        
                        //if the character is E
                        case 'E':
                        
                            //get the integer that follows the character
                            ss.str(nextLine.substr(2));
                            ss >> value;
                            
                            //attempt to remove all instances of Nodes with the integer value from the list
                            if (list->removeAll(value) == true) {
                                
                                //output success to the console
                                cout << "VALUE " << value << " ELIMINATED" << endl;
                                
                            } else {
                                
                                //output failure to the console
                                cout << "VALUE " << value << " NOT FOUND" << endl;
                            }
                            
                            //clear the stringstream
                            ss.clear();
                        break;
                        
                        //if the character is R
                        case 'R':
                        
                            //get the integer value that follows the character  
                            ss.str(nextLine.substr(2));
                            ss >> value;
                            
                            //attempt to remove the first instance of a Node with the integer value from the list
                            if (list->removeFirst(value) == true) {
                                
                                //output success to the console
                                cout << "VALUE " << value << " REMOVED" << endl;
                                
                            } else {
                                
                                //output failure to the console
                                cout << "VALUE " << value << " NOT FOUND" << endl;
                            }
                            
                            //clear the stringstream
                            ss.clear();
                        break;
                        
                        //if the character is G
                        case 'G':
                        
                            //get the integer value that follows the character
                            ss.str(nextLine.substr(2));
                            ss >> value;
                            
                            //attempt to locate a Node with the integer value
                            if (list->get(value) == true) {
                                
                                //output success to the console
                                cout << "VALUE " << value << " FOUND" << endl;
                                
                            } else {
                                
                                //output failure to the console
                                cout << "VALUE " << value << " NOT FOUND" << endl;
                            }
                            
                            //clear the stringstream
                            ss.clear();
                        break;
                        
                        //if the character is N
                        case 'N':
                        
                            //output the number of Nodes in the list
                            cout << "LIST SIZE IS " << list->getSize() << endl;
                        break;
                        
                        //if the character is P
                        case 'P':
                        
                            //if the list is empty
                            if (list->getSize() < 1){
                                
                                //output failure to the console
                                cout << "LIST EMPTY" << endl;
                                
                            } else {
                                
                                //output the contents of every node in the list, from head to tail
                                cout << *list << endl;
                            }
                        break;
                    }
                }
            }
        }
        
        //close the file input stream
        fin.close();
        
    } else {
Пример #8
0
int main(int argc, char *argv[])
{
    if(argc <= 1){
        cout << "Error: No command-line argument." << endl;
    }
    else{
        DLList<int> *intList = NULL;
	
    	ifstream fileIn(argv[1]);
    	
    	if(!fileIn.good()){
    	    cout << "Error: File could not be opened." << endl;
    	}
    	else{
    	    string line;
            while(getline(fileIn, line)){
                char operation = line[0];
                
                //cout << operation << " : ";
                
                if(operation == '#'){
                    //cout << "COMMENT" << endl;
                }
                else if(operation == 'C'){
                    cout << "LIST CREATED" << endl;
                    if(intList != NULL){
                        delete intList;
                    }
                    intList = new DLList<int>;
                }
                else if(intList == NULL){
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                }
                else{
                    if(operation == 'X'){
                        cout << "LIST CLEARED" << endl;
                        intList->clear();
                    }
                    else if(operation == 'D'){
                        cout << "LIST DELETED" << endl;
                        delete intList;
                        intList = NULL;
                    }
                    else if(operation == 'A'){
                        try{
                            cout << "VALUE " << intList->getFront() << " AT HEAD" << endl;
                        }
                        catch (string e){
                            cout << e << endl;
                        }
                    }
                    else if(operation == 'Z'){
                        try{
                            cout << "VALUE " << intList->getBack() << " AT TAIL" << endl;
                        }
                        catch (string e){
                            cout << e << endl;
                        }
                    }
                    else if(operation == 'T'){
                        if(intList->getSize() > 0){
                            intList->popFront();
                            cout << "REMOVED HEAD" << endl;
                        }
                        else{
                            cout << "LIST EMPTY" << endl;
                        }
                    }
                    else if(operation == 'K'){
                        if(intList->getSize() > 0){
                            intList->popBack();
                            cout << "REMOVED TAIL" << endl;
                        }
                        else{
                            cout << "LIST EMPTY" << endl;
                        }
                    }
                    else if(operation == 'N'){
                        cout << "LIST SIZE IS " << intList->getSize() << endl;
                    }
                    else if(operation == 'P'){
                        if(intList->getSize() > 0){
                            cout << *intList << endl;
                        }
                        else{
                            cout << "LIST EMPTY" << endl;
                        }
                    }
                    else{
                        string str = line.substr(2);
                        stringstream ss(str);
                        int value = 0;
                        ss >> value;
                        
                        if(operation == 'I'){
                            cout << "VALUE " << value << " INSERTED" << endl;
                            intList->insert(value);
                        }
                        else if(operation == 'F'){
                            cout << "VALUE " << value << " ADDED TO HEAD" << endl;
                            intList->pushFront(value);
                        }
                        else if(operation == 'B'){
                            cout << "VALUE " << value << " ADDED TO TAIL" << endl;
                            intList->pushBack(value);
                        }
                        else if(operation == 'E'){
                            if(intList->removeAll(value)){
                                cout << "VALUE " << value << " ELIMINATED" << endl;
                            }
                            else{
                                cout << "VALUE " << value << " NOT FOUND" << endl;
                            }
                        }
                        else if(operation == 'R'){
                            if(intList->removeFirst(value)){
                                cout << "VALUE " << value << " REMOVED" << endl;
                            }
                            else{
                                cout << "VALUE " << value << " NOT FOUND" << endl;
                            }
                        }
                        else if(operation == 'G'){
                            if(intList->get(value)){
                                cout << "VALUE " << value << " FOUND" << endl;
                            }
                            else{
                                cout << "VALUE " << value << " NOT FOUND" << endl;
                            }
                            
                        }
                    }
                }
            }
    	}
    	if(intList != NULL){
    	    delete intList;
    	    intList = NULL;
    	}
    	
    	fileIn.close();
    }
    
	return 0;
}
Пример #9
0
void processFile(string filename) {

    ifstream inputstream;
    DLList *list = NULL;
    inputstream.open(filename.c_str());

    if (inputstream.fail()) {
        cout << "Unable to open " << filename << " for processing." << endl;
    } else {
        string nextline;
        while (! inputstream.eof()) {

            stringstream ss;
            int value = 0;
            getline(inputstream, nextline);
            char firstCharacter = nextline[0];

            switch (toupper(firstCharacter)) {
            case 'C':
                if (list != NULL) {
                    delete list;
                }
                list = new DLList;
                cout << "LIST CREATED" << endl;
                break;
            case 'T':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else if (list->getSize() > 0) {
                    list->popFront();
                    cout << "REMOVED HEAD" << endl;
                } else {
                    cout << "LIST EMPTY" << endl;
                }
                break;
            case 'I':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    ss.str(nextline.substr(2));
                    ss >> value;
                    list->insert(value);
                    cout << "VALUE " << value << " INSERTED" << endl;
                }
                break;
            case 'P':
                if (list ==  NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else if (list->getSize() > 0) {
                    cout << (*list) << endl;
                } else {
                    cout << "LIST EMPTY" << endl;
                }
                break;
            case 'X':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    list->clear();
                    cout << "LIST CLEARED" << endl;
                }
                break;
            case 'D':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    delete list;
                    list = NULL;
                    cout << "LIST DELETED" << endl;
                }
                break;
            case 'F':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    ss.str(nextline.substr(2));
                    ss >> value;
                    list->pushFront(value);
                    cout << "VALUE " << value << " ADDED TO HEAD" << endl;
                }
                break;
            case 'B':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    ss.str(nextline.substr(2));
                    ss >> value;
                    list->pushBack(value);
                    cout << "VALUE " << value << " ADDED TO TAIL" << endl;
                }
                break;
            case 'A':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    try {
                        cout << "VALUE " << list->getFront() << " AT HEAD" << endl;
                    } catch (string e) {
                        cout << e << endl;
                    }
                }
                break;
            case 'Z':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    try {
                        cout << "VALUE " << list->getBack() << " AT TAIL" << endl;
                    } catch (string e) {
                        cout << e << endl;
                    }
                }
                break;
            case 'K':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else if (list->getSize() > 0) {
                    list->popBack();
                    cout << "REMOVED TAIL" << endl;
                } else {
                    cout << "LIST EMPTY" << endl;
                }
                break;
            case 'E':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    ss.str(nextline.substr(2));
                    ss >> value;
                    if (list->removeAll(value) == true) {
                        cout << "VALUE " << value << " ELIMINATED" << endl;
                    } else {
                        cout << "VALUE " << value << " NOT FOUND" << endl;
                    }
                }
                break;
            case 'R':
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    ss.str(nextline.substr(2));
                    ss >> value;
                    if (list->removeFirst(value) == true) {
                        cout << "VALUE " << value << " REMOVED" << endl;
                    } else {
                        cout << "VALUE " << value << " NOT FOUND" << endl;
                    }
                }
                break;
            case 'G':
                ss.str(nextline.substr(2));
                ss >> value;
                if (list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else if (list->get(value) == true) {
                    cout << "VALUE " << value << " FOUND" << endl;
                } else {
                    cout << "VALUE " << value << " NOT FOUND" << endl;
                }
                break;
            case 'N':
                if (list ==  NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                } else {
                    cout << "LIST SIZE IS " << list->getSize() << endl;
                }
                break;
            default:
                break;

            }
        }
        inputstream.close();
    }
}
Пример #10
0
void run_project3(string filename){

	ifstream myfile(filename.c_str());
    
	if (myfile.is_open()){
		string line;
		string charLetter;
		bool doesListExist = false;
		
		DLList* list;
        
		while (getline(myfile,line)){
			
			charLetter = line.at(0);
			line.erase(0,1);
			int newNumber = 0;
			stringstream converter(line);
			converter >> newNumber;
			
			//creating a list.
			if(charLetter == "C"){
				if(doesListExist == false){
					list = new DLList;
				}
				else if (doesListExist == true){
					delete list;
					list = new DLList;
				}
					
				cout << "LIST CREATED" << endl;
				doesListExist = true;
			}
	
	        //clear the list if there is a list.
			if(charLetter == "X" && doesListExist == true){
				list->clear();
				cout << "LIST CLEARED" << endl;
			}
			
			//delete the list if there is a list.
			if(charLetter == "D" && doesListExist == true){
				delete list;
				list = NULL;
				cout << "LIST DELETED" << endl;
				doesListExist = false;
			}
			
			//insert a newNumber into the list if there is list.
			if(charLetter == "I" && doesListExist == true){
				list->insert(newNumber);
				cout << "VALUE " << newNumber << " INSERTED" << endl;
			}
			
			//add a newNumber into the front of the list if there is list.
			if(charLetter == "F" && doesListExist == true){
				list->pushFront(newNumber);
				cout << "VALUE " << newNumber << " ADDED TO HEAD" << endl;
			}
			
			//insert a newNumber into the back of the list if there is list.
			if(charLetter == "B" && doesListExist == true){
				list->pushBack(newNumber);
				cout << "VALUE " << newNumber << " ADDED TO TAIL" << endl;
			}
			
			//get the first element in the list if there is list.
			if(charLetter == "A" && doesListExist == true){
				try{
					btassert<bool>(list->getSize() != 0);
					cout << "VALUE " << list->getFront() << " AT HEAD" << endl;
				}
				catch (bool b){
					cout << "LIST EMPTY" << endl;
				}
			}
			
			//get the last element in the list if there is list.
			if(charLetter == "Z" && doesListExist == true){
				try{
					btassert<bool>(list->getSize() != 0);
					cout << "VALUE " << list->getBack() << " AT TAIL" << endl;
				}
				catch (bool b){
					cout << "LIST EMPTY" << endl;
				}
			}
	
	        //remove element from front of the list if there is a list.
			if(charLetter == "T" && doesListExist == true){
				if(list->getSize() == 0){
					cout << "LIST EMPTY" << endl;
				}
				else{
					list->popFront();
					cout << "REMOVED HEAD" << endl;
				}	
			}
			
			//remove element from back of the list if there is a list.
			if(charLetter == "K" && doesListExist == true){
				if(list->getSize() == 0){
					cout << "LIST EMPTY" << endl;
				}
				else{
					list->popBack();
					cout << "REMOVED TAIL" << endl;
				}
			}
			
			//get an element from the list if there is a list.
			if(charLetter == "G" && doesListExist == true){
				if(list->get(newNumber) == true){
					cout << "VALUE " << newNumber << " FOUND" << endl;
				}
				else{
					cout << "VALUE " << newNumber << " NOT FOUND" << endl;
				}
			}
			
			//eliminate all the same element, the element to be eliminate will be newNumber.
			if(charLetter == "E" && doesListExist == true){
				if(list->removeAll(newNumber) == true){
					cout <<"VALUE " << newNumber << " ELIMINATED" << endl;
				}
				else{
					cout << "VALUE " << newNumber << " NOT FOUND" << endl;
				}
			}

            //remove an element from the list, the element to be remove will be newNumber.
			if(charLetter == "R" && doesListExist == true){
				if(list->removeFirst(newNumber) == true){
					cout << "VALUE " << newNumber << " REMOVED" << endl;
				}
				else{
					cout << "VALUE " << newNumber << " NOT FOUND" << endl;
				}
			}

            //show number of element in the list.
			if(charLetter == "N" && doesListExist == true){
						cout << "LIST SIZE IS " << list->getSize() << endl;
			}

            //print the element(s) in the list.
			if(charLetter == "P" && doesListExist == true){
				if(list->getSize() == 0){
					cout << "LIST EMPTY" << endl;
				}
				else{
					cout << *list << endl;
				}
			}
			
			//display message if there is no list for an operation.
			if(doesListExist == false && charLetter != "#" && line != ""){
				cout << "MUST CREATE LIST INSTANCE" << endl;
			}
		}
		myfile.close();
		
		//delete the list if there is a list before exiting. NULL list pointer.
		if(doesListExist == true){
			delete list;
			list = NULL;
		}
	}
Пример #11
0
int main(int argc, char* argv[]) {

  DLList* list;
  stringstream ss;
  string strValue;
  int intValue;

  if (argc != 2) {
    cout << "USAGE: " << argv[0] << " FILENAME" << endl;

  } else {
    string currentLine;
    char input;
    cout << "PROCESSING FILE: " << argv[1] << endl;

    ifstream theFile(argv[1]);
    if (theFile.good()) {

      while (getline(theFile, currentLine)) {
        ss.clear();
        intValue = 0;
        strValue = "";
        bool activeList = false;

        input = currentLine.at(0);

          switch (input) {
            
            case 'C':
              if (activeList == false)
              list = new DLList;
              else if (activeList == true) {
              delete list; 
              list = new DLList; 
              }
              activeList = true;
              cout << "LIST CREATED" << endl;
              break;
              
            case 'X':
              list->clear();
              cout << "LIST CLEARED" << endl;
              break;

            case 'D':
              delete list;
              list = NULL;
              cout << "LIST DELETED" << endl;
              break;

             case 'I':
              strValue = currentLine.substr(2);
              ss << strValue;
              ss >> intValue;
              cout << "VALUE " << intValue << " INSERTED" << endl;
              list->insert(intValue);
              break;

            case 'F':
              strValue = currentLine.substr(2);
              ss << strValue;
              ss >> intValue;
              cout << "VALUE " << intValue << " ADDED TO HEAD" << endl;
              list->pushFront(intValue);
              break;

            case 'B':
              strValue = currentLine.substr(2);
              ss << strValue;
              ss >> intValue;
              cout << "VALUE " << intValue << " ADDED TO TAIL" << endl;
              list->pushBack(intValue);
              break;

            case 'A':
              cout << "VALUE " << list->getFront() << " AT HEAD" << endl;
              break;

            case 'Z':
              cout << "VALUE " << list->getBack() << " AT TAIL" << endl;
              break;

            case 'T':
              list->popFront();
              cout << "REMOVED HEAD" << endl;
              break;

            case 'K':
              list->popBack();
              cout << "REMOVED TAIL" << endl;
              break;

            case 'E':
              strValue = currentLine.substr(2);
              ss << strValue;
              ss >> intValue;
              if (list->removeAll(intValue))
                cout << "VALUE " << intValue << " ELIMINATED" << endl;
              else
                cout << "VALUE " << intValue << " NOT FOUND" << endl;
              break;

              case 'G':
              strValue = currentLine.substr(2);
              ss << strValue;
              ss >> intValue;
              if (list->get(intValue))
                cout << "VALUE " << intValue << " FOUND" << endl;
              else
                cout << "VALUE " << intValue << " NOT FOUND" << endl;
              break;

             case 'P':
              cout << list->toString() << endl;
              break;

            case 'N':
              cout << "LIST SIZE IS " << list->getSize() << endl;
              break;

            case 'R':
              strValue = currentLine.substr(2);
              ss << strValue;
              ss >> intValue;
              if (list->removeFirst(intValue))
                cout << "VALUE " << intValue << " REMOVED" << endl;
              else
                cout << "VALUE " << intValue << " NOT FOUND" << endl;
              break;

            default:
              cout << "UNKNOWN COMMAND" << endl;
              break;

          }
        }
      }
     theFile.close();

  }

  return 0;
}
Пример #12
0
//
// I_PutDeferredEvent
//
// Put a deferredevent_t back on the freelist.
//
static void I_PutDeferredEvent(deferredevent_t *de)
{
   i_deferredevents.remove(de);
   i_deferredfreelist.insert(de);
}
Пример #13
0
void processFile (string filename) {
    stringstream ss;
    int value = 0;
    DLList* list = NULL;
    char firstCharacter;
    ifstream fin(filename.c_str());
    if(!fin.fail()) {
        string nextline;
        while(!fin.eof()) {
            getline(fin, nextline);
            firstCharacter = nextline[0];
            switch(firstCharacter) {
            case '#':
                break;
            case 'C':
                if(list != NULL) { //if there was a previous list delete it
                    delete list;
                }
                else {
                    //creates a new list of type DLList
                    list = new DLList();
                    cout << "LIST CREATED" << endl;
                }
                break;
            case 'X':
                //if no list was created yet create list first
                if(list == NULL) {
                    cout << "MUST CREAT LIST INSTANCE" << endl;
                } //if there was a list clear it with the clear function
                else {
                    list->clear();
                    cout << "LIST CLEARED" << endl;
                }
                break;
            case 'D':
                //if there is a list deleted it
                if(list!= NULL) {
                    delete list;
                    cout << "LIST DELETED" << endl;
                }//if there isn't show warning
                else
                    cout << "MUST CREAT LIST INSTANCE" << endl;
                break;
            case 'I':
                if(list == NULL) {
                    cout << "MUST CREAT LIST INSTANCE" << endl;
                }
                else {
                    ss.str(nextline.substr(2));//gets the next whole value after the first value on a line
                    ss >> value;//puts the from input into an int
                    list->insert(value);//inserts the value into a node on the list
                    cout << "VALUE " << value << " INSERTED" << endl;
                    ss.clear();
                    ss.str("");
                }
                break;
            case 'F':
                ss.str(nextline.substr(2));
                ss >> value;
                list->insertHead(value);//inserts the value from input into the first node
                cout << "VALUE " << value << " ADDED TO HEAD" << endl;
                ss.clear();
                ss.str("");
                break;
            case 'B':
                ss.str(nextline.substr(2));
                ss >> value;
                list->insertTail(value);
                cout << "VALUE " << value << " ADDED TO TAIL" << endl;
                ss.clear();
                ss.str("");
                break;
            case 'A':
                if(list == NULL) {
                    cout << "VALUE NULL AT HEAD" << endl;
                }
                else {
                    list->getHead();
                    cout << "VALUE " << list->getHead() << " AT HEAD" << endl;
                }
                break;
            case 'Z':
                list->getTail();
                cout << "VALUE "  << list->getTail() << " AT TAIL" << endl;
                break;
            case 'T':
                if(list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                }
                else if (list->getSize() > 0) {
                    list->removeHead();
                    cout << "REMOVED HEAD" << endl;
                }
                else {
                    cout << "LIST EMPTY" << endl;

                }
                break;
            case 'K':
                if(list == NULL) {
                    cout << "MUST CREATE LIST INSTANCE" << endl;
                }
                else if(list->getSize() > 0) {
                    list->removeTail();
                    cout << "REMOVED TAIL" << endl;
                }
                else
                    cout << "LIST EMPTY" << endl;
                break;
            case 'E':
                ss.str(nextline.substr(2));
                ss >> value;
                list->removeFirst(value);
                cout << "VALUE " << value << " ELIMINATED" << endl;
                ss.clear();
                ss.str("");
                break;
            case 'R':
                break;
            case 'G':
                break;
            case 'N':
                break;
            case 'P':
                list->toString();
                break;
            }
        }
        cout << "INPUT FINISHED" << endl;
        fin.close();
    }
Пример #14
0
//
// XIBaseEffect Constructor
//
XIBaseEffect::XIBaseEffect(uint32_t p_startTime, uint32_t p_duration)
   : ZoneObject(), startTime(p_startTime), duration(p_duration), links() 
{
   effects.insert(this);
}
Пример #15
0
bool processIntFile(string filename)
{
	
    ifstream infile(filename.c_str());
    if (infile.is_open()){
		string str;

		DLList<int>* list = NULL;
		bool listAlive = false;
        while (! infile.eof()){
			getline(infile, str);
			int data = 0;
            if (str[0] == '#'){
			}
			else if (str[0] == 'C'){
				if(listAlive){
					delete list;
					list = new DLList<int>;
				}
				else{
					list = new DLList<int>;
					listAlive = true;
				}
				cout << "LIST CREATED" << endl;
			}
            else if (str[0] == 'X'){
				if(listAlive){
					list->clear();
					cout << "LIST CLEARED" << endl;
				}
				else if(!listAlive){
					cout << "MUST CREATE LIST INSTANCE\n";
				}
				else{
					cout << "LIST EMPTY\n";
				}
			}
            else if (str[0] == 'D'){
				if(listAlive){
					delete list;
					list = NULL;
					listAlive = false;
					cout << "LIST DELETED" << endl;
					
				}
				else{
					cout << "MUST CREATE LIST INSTANCE\n";
				}
			}
            else if (str[0] == 'I'){
				if(listAlive){
					stringstream ss(str.substr(2));
					ss >> data;
					list->insert(data);
					cout << "VALUE " << data << " INSERTED" << endl;
				}
				else if(!listAlive){
					cout << "MUST CREATE LIST INSTANCE\n";
				}
				else{
					cout << "LIST EMPTY\n";
				}
			}
			else if (str[0] == 'F'){