Description
You will rewrite your CPUProgram of HW5 class so that uses dynamic memory. Your new
CPUProgramDyn class has the same public member functions and overloaded operators. Therefore
the customers of your class will not see any difference. However, your new class will not use any
vectors and it has to allocate and deallocate its memory as required. Additionally you should follow
the following rules
Use your own namespace for this class.
There is no maximum number of lines limit.
All error checking should be done, for example [] should exit the program if out of index error
is encountered.
Do not forget to indent your code and provide comments.
You should submit your work to the moodle page. Use the following main function as one of
the test cases. You will also provide other test cases of your own.
#include “requiredIncs.h”
void testFunc(CPUProgramDyn myCPUProgram)
{
myCPUProgram.ReadFile(filename);
cout << myCPUProgram[0] << endl;
cout << myCPUProgram[myCPUProgram.size() – 1] << endl;
//op +
cout << ((myCPUProgram + “MOV R1, #45”)[myCPUProgram.size() – 1]) << endl;
//op +=
myCPUProgram += “MOV R2, #50”;
cout << myCPUProgram[myCPUProgram.size() – 1] << endl;
//op + <<
CPUProgramDyn myOtherCPUProgram(option);
myOtherCPUProgram.ReadFile(filename);
cout << (myCPUProgram + myOtherCPUProgram) << endl;
//op COMP —
cout << (myCPUProgram == myOtherCPUProgram ? “DONE” : “FAIL”) << endl;
cout << (myCPUProgram <= myOtherCPUProgram ? “DONE” : “FAIL”) << endl;
cout << (myCPUProgram > myOtherCPUProgram ? “FAIL” : “DONE”) << endl;
–myOtherCPUProgram;
cout << (myCPUProgram != myOtherCPUProgram ? “DONE” : “FAIL”) << endl;
cout << (myCPUProgram >= myOtherCPUProgram ? “DONE” : “FAIL”) << endl;
cout << (myCPUProgram < myOtherCPUProgram ? “FAIL” : “DONE”) << endl;
//op ()
cout << myCPUProgram(5, 10) << endl;
//error check
cout << myCPUProgram[myCPUProgram.size()] << endl;
myCPUProgram += “”;
cout << myCPUProgram[myCPUProgram.size() – 1] << endl;
//////////////////////////////////////////////////////////////////////////
}
int main(int argc, char** argv){
//////////////////////////////////////////////////////////////////////////
//command line parameters
const char* filename = argv[1];
int option = atoi(argv[2]);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//Testing class CPUProgramDyn
CPUProgramDyn myProg(option);
testFunc(myProg)
// Test again
testFunc(myProg)
// Test with a copy
CPUProgramDyn myProgCopy(myProg);
testFunc(myProgCopy);
return 0;
}