summaryrefslogtreecommitdiff
path: root/examples/scala-js/library-aux/src/main/scala/scala/runtime/RefTypes.scala
blob: 4724d1364098e8e7e90b419b9ce5f64bfe57a0f7 (plain) (blame)
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
package scala.runtime

import java.io.Serializable

@inline
class BooleanRef(var elem: Boolean) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object BooleanRef {
  def create(elem: Boolean): BooleanRef = new BooleanRef(elem)
  def zero(): BooleanRef = new BooleanRef(false)
}

@inline
class VolatileBooleanRef(var elem: Boolean) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object VolatileBooleanRef {
  def create(elem: Boolean): VolatileBooleanRef = new VolatileBooleanRef(elem)
  def zero(): VolatileBooleanRef = new VolatileBooleanRef(false)
}

@inline
class CharRef(var elem: Char) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object CharRef {
  def create(elem: Char): CharRef = new CharRef(elem)
  def zero(): CharRef = new CharRef(0.toChar)
}

@inline
class VolatileCharRef(var elem: Char) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object VolatileCharRef {
  def create(elem: Char): VolatileCharRef = new VolatileCharRef(elem)
  def zero(): VolatileCharRef = new VolatileCharRef(0.toChar)
}

@inline
class ByteRef(var elem: Byte) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object ByteRef {
  def create(elem: Byte): ByteRef = new ByteRef(elem)
  def zero(): ByteRef = new ByteRef(0)
}

@inline
class VolatileByteRef(var elem: Byte) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object VolatileByteRef {
  def create(elem: Byte): VolatileByteRef = new VolatileByteRef(elem)
  def zero(): VolatileByteRef = new VolatileByteRef(0)
}

@inline
class ShortRef(var elem: Short) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object ShortRef {
  def create(elem: Short): ShortRef = new ShortRef(elem)
  def zero(): ShortRef = new ShortRef(0)
}

@inline
class VolatileShortRef(var elem: Short) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object VolatileShortRef {
  def create(elem: Short): VolatileShortRef = new VolatileShortRef(elem)
  def zero(): VolatileShortRef = new VolatileShortRef(0)
}

@inline
class IntRef(var elem: Int) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object IntRef {
  def create(elem: Int): IntRef = new IntRef(elem)
  def zero(): IntRef = new IntRef(0)
}

@inline
class VolatileIntRef(var elem: Int) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object VolatileIntRef {
  def create(elem: Int): VolatileIntRef = new VolatileIntRef(elem)
  def zero(): VolatileIntRef = new VolatileIntRef(0)
}

@inline
class LongRef(var elem: Long) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object LongRef {
  def create(elem: Long): LongRef = new LongRef(elem)
  def zero(): LongRef = new LongRef(0)
}

@inline
class VolatileLongRef(var elem: Long) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object VolatileLongRef {
  def create(elem: Long): VolatileLongRef = new VolatileLongRef(elem)
  def zero(): VolatileLongRef = new VolatileLongRef(0)
}

@inline
class FloatRef(var elem: Float) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object FloatRef {
  def create(elem: Float): FloatRef = new FloatRef(elem)
  def zero(): FloatRef = new FloatRef(0)
}

@inline
class VolatileFloatRef(var elem: Float) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object VolatileFloatRef {
  def create(elem: Float): VolatileFloatRef = new VolatileFloatRef(elem)
  def zero(): VolatileFloatRef = new VolatileFloatRef(0)
}

@inline
class DoubleRef(var elem: Double) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object DoubleRef {
  def create(elem: Double): DoubleRef = new DoubleRef(elem)
  def zero(): DoubleRef = new DoubleRef(0)
}

@inline
class VolatileDoubleRef(var elem: Double) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object VolatileDoubleRef {
  def create(elem: Double): VolatileDoubleRef = new VolatileDoubleRef(elem)
  def zero(): VolatileDoubleRef = new VolatileDoubleRef(0)
}

@inline
class ObjectRef[A](var elem: A) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object ObjectRef {
  def create[A](elem: A): ObjectRef[A] = new ObjectRef(elem)
  def zero(): ObjectRef[Object] = new ObjectRef(null)
}

@inline
class VolatileObjectRef[A](var elem: A) extends Serializable {
  override def toString() = String.valueOf(elem)
}
object VolatileObjectRef {
  def create[A](elem: A): VolatileObjectRef[A] = new VolatileObjectRef(elem)
  def zero(): VolatileObjectRef[Object] = new VolatileObjectRef(null)
}