Using Builder pattern for CoreModelParameters now
[Mograsim.git] / plugins / net.mograsim.logic.model / src / net / mograsim / logic / model / modeladapter / CoreModelParameters.java
1 package net.mograsim.logic.model.modeladapter;
2
3 public class CoreModelParameters
4 {
5         public final int wireTravelTime;
6         public final int gateProcessTime;
7         public final int hardcodedComponentProcessTime;
8
9         public CoreModelParameters(int wireTravelTime, int gateProcessTime, int hardcodedComponentProcessTime)
10         {
11                 this.wireTravelTime = wireTravelTime;
12                 this.gateProcessTime = gateProcessTime;
13                 this.hardcodedComponentProcessTime = hardcodedComponentProcessTime;
14         }
15
16         private CoreModelParameters(CoreModelParametersBuilder builder)
17         {
18                 this.wireTravelTime = builder.wireTravelTime;
19                 this.gateProcessTime = builder.gateProcessTime;
20                 this.hardcodedComponentProcessTime = builder.hardcodedComponentProcessTime;
21         }
22
23         public static class CoreModelParametersBuilder
24         {
25                 public int wireTravelTime;
26                 public int gateProcessTime;
27                 public int hardcodedComponentProcessTime;
28
29                 public CoreModelParametersBuilder wireTravelTime(int wireTravelTime)
30                 {
31                         this.wireTravelTime = wireTravelTime;
32                         return this;
33                 }
34
35                 public CoreModelParametersBuilder gateProcessTime(int gateProcessTime)
36                 {
37                         this.gateProcessTime = gateProcessTime;
38                         return this;
39                 }
40
41                 public CoreModelParametersBuilder hardcodedComponentProcessTime(int hardcodedComponentProcessTime)
42                 {
43                         this.hardcodedComponentProcessTime = hardcodedComponentProcessTime;
44                         return this;
45                 }
46
47                 public CoreModelParameters build()
48                 {
49                         return new CoreModelParameters(this);
50                 }
51         }
52 }