-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathManagerFreeRegVars.h
77 lines (59 loc) · 1.82 KB
/
ManagerFreeRegVars.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#ifndef MANAGERFREEREGVARS_H_INCLUDED
#define MANAGERFREEREGVARS_H_INCLUDED
#include <string>
#include <list>
#include <vector>
using namespace std;
/**
* class ManagerFreeReg
*/
class ManagerFreeRegVars
{
public:
/*Definicion de listas de registros variables*/
struct RegLibre{
unsigned short int offset;
unsigned short int size;
};
private:
list<RegLibre*> listaLibres;
public:
// Constructors/Destructors
//
/**
* Empty Constructor
*/
ManagerFreeRegVars ( );
/**
* Empty Destructor
*/
~ManagerFreeRegVars ( );
/**
* Devuelve la lista de variables corespondiente
*/
list<RegLibre*> getLista();
/**
* Inserta ordenado por offset en la lista de registros libres una nuevo elemento libre.
* @param offset Es el offset del nuevo registro libre
* @param size es el size de ese registro libre
*/
void insertarOrdenadoEnListaVariables(unsigned short int offset, unsigned short int size);
/**
* Recorre la lista de elementos libres busacndo hermanos a un determinado elemento
* @param el offset del registro a buscar en la lista
* @return Devuelve un vector cuya primera posicion tiene el offset del anterior, y la
* segunda la del siguiente. Si no tiene alguno de los 2, habra un valor "-1"
*/
vector<short int> obtenerVariablesHermanos(unsigned short int offset);
/**
* Recorre la lista utilizando algoritmo de FIRST FIT
* @param size El tamaño del registro a verificar en la lista
* @return la primera posicion donde entre el registro variable que se quiera guardar, sino devuelve -1
*/
short int obtenerVariablesPrimerLibre(unsigned short int size);
/**
* Elimina correctamente la lista de variables
*/
void eliminarListaLibres();
};
#endif // MANAGERFREEREGVARS_H_INCLUDED