#ifndef FAUXMEMORY_H #define FAUXMEMORY_H #include <stdio.h> #include <vector> #include "../blocks/HoleBlock.imp.h" #include "../blocks/ProgramBlock.imp.h" #include "../blocks/MemBlock.imp.h" using namespace std; /********************************************************************************* This is the abstract class for memories that employ different allocation methods.* **********************************************************************************/ class FauxMemory { vector<MemBlock*> allBlocks; vector<string> allErrors; int limit_register; // Max size int free; int last_bid; protected: string strategy; public: // Constructor FauxMemory(int max_size); //Setters void setLimit(int maxSize); void setFree(int maxSize); void setBid(int new_bid); //Getters vector<MemBlock*>* getAllBlocks(); vector<string>* getAllErrors(); string getStrategy(); int* getBid(); int* getLimit(); int* getFree(); int getTotalSize(); void incrementBid(); void addAllocError(int inst_num); void addDallocError(int inst_num, int block_id); float fragmentation(); virtual bool allocMem(ProgramBlock* new_block) = 0; bool deallocMem(int id); bool compactMem(void); }; #endif