ContigousMemory / memories / FauxMemory.h
FauxMemory.h
Raw
#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