1 package org.djutils.base;
2
3 import java.util.Objects;
4
5 /**
6 * A simple version of a mutable integer with get() and set(int) functions.
7 * <p>
8 * Copyright (c) 2023-2025 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See
9 * for project information <a href="https://djutils.org" target="_blank"> https://djutils.org</a>. The DJUTILS project is
10 * distributed under a three-clause BSD-style license, which can be found at
11 * <a href="https://djutils.org/docs/license.html" target="_blank"> https://djutils.org/docs/license.html</a>.
12 * </p>
13 * @author <a href="https://www.tudelft.nl/averbraeck">Alexander Verbraeck</a>
14 */
15 public class MutableInt
16 {
17 /** the current value of the mutable integer. */
18 private int value;
19
20 /**
21 * Initialize the mutable integer with a value.
22 * @param value the initial value of the mutable integer
23 */
24 public MutableInt(final int value)
25 {
26 set(value);
27 }
28
29 /**
30 * set the mutable integer to a new value.
31 * @param newValue the new value of the mutable integer
32 */
33 public void set(final int newValue)
34 {
35 this.value = newValue;
36 }
37
38 /**
39 * @return the current value of the mutable integer
40 */
41 public int get()
42 {
43 return this.value;
44 }
45
46 /**
47 * Increment the modifiable int with a value.
48 * @param increment the value to increment the modifiable int with
49 */
50 public void inc(final int increment)
51 {
52 this.value += increment;
53 }
54
55 /**
56 * Increment the modifiable int with 1.
57 */
58 public void inc()
59 {
60 inc(1);
61 }
62
63 /**
64 * Decrement the modifiable int with a value.
65 * @param decrement the value to decrement the modifiable int with
66 */
67 public void dec(final int decrement)
68 {
69 this.value -= decrement;
70 }
71
72 /**
73 * Decrement the modifiable int with 1.
74 */
75 public void dec()
76 {
77 dec(1);
78 }
79
80 /**
81 * Increment the modifiable int with a value.
82 * @param multiplier the value to multiply the modifiable int with
83 */
84 public void mul(final int multiplier)
85 {
86 this.value *= multiplier;
87 }
88
89 /**
90 * Divide the modifiable int by a value.
91 * @param divisor the value to divide the modifiable int by
92 */
93 public void div(final int divisor)
94 {
95 this.value /= divisor;
96 }
97
98 @Override
99 public int hashCode()
100 {
101 return Objects.hash(this.value);
102 }
103
104 @Override
105 @SuppressWarnings("checkstyle:needbraces")
106 public boolean equals(final Object obj)
107 {
108 if (this == obj)
109 return true;
110 if (obj == null)
111 return false;
112 if (getClass() != obj.getClass())
113 return false;
114 MutableInt other = (MutableInt) obj;
115 return this.value == other.value;
116 }
117
118 @Override
119 public String toString()
120 {
121 return "MutableInt [value=" + this.value + "]";
122 }
123
124 }