-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSCMachine.inl.h
119 lines (91 loc) · 3.46 KB
/
SCMachine.inl.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*------------------------------------------------------------------------------+
| |
| SCL - Simulation Class Library |
| |
| (c) 1994-98 Marc Diefenbruch, Wolfgang Textor |
| University of Essen, Germany |
| |
+---------------+-------------------+---------------+-------------------+-------+
| Module | File | Created | Project | |
+---------------+-------------------+---------------+-------------------+-------+
| SCMachine | SCMachine.inl.h | 26. Jul 1995 | SCL | |
+---------------+-------------------+---------------+-------------------+-------+
| |
| Change Log |
| |
| Nr. Date Description |
| ----- -------- ------------------------------------------------------- |
| 001 |
| 000 --.--.-- Neu angelegt |
| |
+------------------------------------------------------------------------------*/
/* Lineal
000000000011111111112222222222333333333344444444445555555555666666666677777777778
012345678901234567890123456789012345678901234567890123456789012345678901234567890
*/
#ifndef __SCMACHINE_INL__
#define __SCMACHINE_INL__
#include "SCRequestType.h"
_SCINLINE_ SCDiscipline SCMachine::GetDiscipline (void) const
{
return (discipline);
}
_SCINLINE_ SCNatural SCMachine::NumOfServers (void) const
{
return (servers);
}
_SCINLINE_ SCNatural SCMachine::NumOfServices (void) const
{
return (services);
}
_SCINLINE_ SCDuration *SCMachine::GetSpeeds (void) const
{
return (speeds);
}
_SCINLINE_ const char *SCMachine::GetName (void) const
{
return (name);
}
_SCINLINE_ SCRequestSaveList *SCMachine::GetServiceQueue (void) const
{
return (serviceQueue);
}
_SCINLINE_ SCDuration SCMachine::Speed (const SCRequestType *requestType) const
{
return (speeds[requestType->GetID()]);
}
_SCINLINE_ SCNatural SCMachine::NumOfFreeServers (void) const
{
switch (GetDiscipline())
{
case scDiscIS: // should never be called!
return NumOfServers();
case scDiscPS:
// for PS machines it IS possible that the number
// of elements in the service queue is greater
// than the number of servers!!
if (GetServiceQueue()->NumOfElems() >= NumOfServers())
{
return 0;
}
// no break here!
default:
return (NumOfServers() - GetServiceQueue()->NumOfElems());
}
}
_SCINLINE_ SCMachine * SCMachine::GetMachineFromName (const char * name)
{
SCMachineIter iter(*machineList);
SCMachine * machine;
if (name == NULL)
return NULL;
for (machine = iter++;
machine;
machine = iter++)
{
if (!strcmp(machine->GetName(), name))
return machine;
}
return NULL;
}
#endif // __SCMACHINE_INL