Improved usage of CoreModelParametersBuilder
[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 CoreModelParametersBuilder builder()
24         {
25                 return new CoreModelParametersBuilder();
26         }
27
28         public static class CoreModelParametersBuilder
29         {
30                 public int wireTravelTime;
31                 public int gateProcessTime;
32                 public int hardcodedComponentProcessTime;
33
34                 private CoreModelParametersBuilder()
35                 {
36                 }
37
38                 public CoreModelParametersBuilder wireTravelTime(int wireTravelTime)
39                 {
40                         this.wireTravelTime = wireTravelTime;
41                         return this;
42                 }
43
44                 public CoreModelParametersBuilder gateProcessTime(int gateProcessTime)
45                 {
46                         this.gateProcessTime = gateProcessTime;
47                         return this;
48                 }
49
50                 public CoreModelParametersBuilder hardcodedComponentProcessTime(int hardcodedComponentProcessTime)
51                 {
52                         this.hardcodedComponentProcessTime = hardcodedComponentProcessTime;
53                         return this;
54                 }
55
56                 public CoreModelParameters build()
57                 {
58                         return new CoreModelParameters(this);
59                 }
60         }
61 }