GreenCloud Simulator
resource.h
Go to the documentation of this file.
1 /*
2  * resource.h
3  *
4  * @date Mar 8, 2013
5  * @author Guzek:Mateusz
6  */
7 
8 #ifndef RESOURCE_H_
9 #define RESOURCE_H_
10 
11 #include <stdlib.h>
12 #include <vector>
13 #include <string.h>
14 #include <iostream>
15 #include <algorithm>
16 
17 
18 /*Update the last element if a new position is added to enum*/
19 enum res_type {
26 };
27 
28 class Capacity{
29 public:
30  Capacity();
31  Capacity(int i);
32  Capacity(double d);
33  double value;
34  std::vector<Capacity*> virtual_capacities;
35  Capacity& operator=(const double& val);
36  Capacity& operator=(const Capacity& c);
37  operator double();
38  Capacity& operator+=(const Capacity& rhs);
39  Capacity& operator-=(const Capacity& rhs);
40  Capacity& operator+=(const double& rhs);
41  Capacity& operator-=(const double& rhs);
42 
43  double getValueRecursive();
44 
45 
46 };
47 inline bool operator==(const Capacity& lhs, const Capacity& rhs){ return (lhs.value ==rhs.value);}
48 inline bool operator!=(const Capacity& lhs, const Capacity& rhs){return !operator==(lhs,rhs);}
49 inline bool operator< (const Capacity& lhs, const Capacity& rhs){ return (lhs.value < rhs.value);}
50 inline bool operator> (const Capacity& lhs, const Capacity& rhs){return operator< (rhs,lhs);}
51 inline bool operator<=(const Capacity& lhs, const Capacity& rhs){return !operator> (lhs,rhs);}
52 inline bool operator>=(const Capacity& lhs, const Capacity& rhs){return !operator< (lhs,rhs);}
53 
54 inline Capacity operator+(Capacity lhs, const Capacity& rhs)
55 {
56  lhs += rhs;
57  return lhs;
58 }
59 inline Capacity operator-(Capacity lhs, const Capacity& rhs)
60 {
61  lhs -= rhs;
62  return lhs;
63 }
64 inline bool operator==(const Capacity& lhs, const double& rhs){ return (lhs.value ==rhs);}
65 inline bool operator!=(const Capacity& lhs, const double& rhs){return !operator==(lhs,rhs);}
66 inline bool operator< (const Capacity& lhs, const double& rhs){ return (lhs.value < rhs);}
67 inline bool operator> (const Capacity& lhs, const double& rhs){return operator< (rhs,lhs);}
68 inline bool operator<=(const Capacity& lhs, const double& rhs){return !operator> (lhs,rhs);}
69 inline bool operator>=(const Capacity& lhs, const double& rhs){return !operator< (lhs,rhs);}
70 
71 inline Capacity operator+(Capacity lhs, const double& rhs)
72 {
73  lhs += rhs;
74  return lhs;
75 }
76 inline Capacity operator-(Capacity lhs, const double& rhs)
77 {
78  lhs -= rhs;
79  return lhs;
80 }
81 
82 class Resource {
83 public:
84  Resource(res_type t,double a ,std::vector <Capacity> cap);
85  void print();
86 
87  std::vector <Capacity> capacity;
88  virtual ~Resource();
89  res_type getType() {return type;};
90  double getArch() {return arch;};
91  static res_type translateType(const char* t);
92 protected:
93  Resource();
94 
96  /* Architecture, ordering of architectures shall be listed separately.
97  * For now higher number means more advanced architecture.
98  * (TODO: efficient orders implementation)*/
99  double arch;
100 
101  Resource& operator=(const Resource& r);
102  int setType(const char* t);
103  int setCapacity(std::vector <Capacity> cap);
104  void sortCapacity();
105 };
106 #endif /* RESOURCE_H_ */
Capacity()
Definition: resource.cc:11
std::vector< Capacity > capacity
Definition: resource.h:87
std::vector< Capacity * > virtual_capacities
Definition: resource.h:34
res_type type
Definition: resource.h:95
Capacity operator-(Capacity lhs, const Capacity &rhs)
Definition: resource.h:59
bool operator>=(const Capacity &lhs, const Capacity &rhs)
Definition: resource.h:52
bool operator!=(const Capacity &lhs, const Capacity &rhs)
Definition: resource.h:48
bool operator<(const Capacity &lhs, const Capacity &rhs)
Definition: resource.h:49
res_type
Definition: resource.h:19
bool operator==(const Capacity &lhs, const Capacity &rhs)
Definition: resource.h:47
double getValueRecursive()
Definition: resource.cc:59
double arch
Definition: resource.h:99
double getArch()
Definition: resource.h:90
Capacity operator+(Capacity lhs, const Capacity &rhs)
Definition: resource.h:54
bool operator<=(const Capacity &lhs, const Capacity &rhs)
Definition: resource.h:51
res_type getType()
Definition: resource.h:89
Capacity & operator=(const double &val)
Definition: resource.cc:23
Capacity & operator+=(const Capacity &rhs)
Definition: resource.cc:41
bool operator>(const Capacity &lhs, const Capacity &rhs)
Definition: resource.h:50
double value
Definition: resource.h:33
Capacity & operator-=(const Capacity &rhs)
Definition: resource.cc:45