Skip to content

Commit 2cfe7b2

Browse files
authored
Merge pull request #28 from kyay10/vars-interfaces
Add VecXVars interface
2 parents da5f5c4 + decc2fb commit 2cfe7b2

File tree

8 files changed

+71
-59
lines changed

8 files changed

+71
-59
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package glm_.vec1
2+
3+
interface Vec1Vars<T : Number> {
4+
var x: T
5+
6+
fun component1() = x
7+
8+
9+
// -- Component accesses --
10+
11+
operator fun get(index: Int) = when (index) {
12+
0 -> x
13+
else -> throw IndexOutOfBoundsException()
14+
}
15+
}

src/main/kotlin/glm_/vec1/Vec1t.kt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,13 @@ import java.nio.*
1616
* Created bY GBarbieri on 05.10.2016.
1717
*/
1818

19-
abstract class Vec1t<T : Number>(_x: T): ToBuffer {
19+
abstract class Vec1t<T : Number>(_x: T): Vec1Vars<T>, ToBuffer {
2020

2121
// @JvmField TODO bug
22-
var x = _x
23-
24-
fun component1() = x
25-
22+
override var x = _x
2623

2724
// -- Component accesses --
2825

29-
operator fun get(index: Int) = when (index) {
30-
0 -> x
31-
else -> throw IndexOutOfBoundsException()
32-
}
33-
3426
open operator fun set(index: Int, value: T) = when (index) {
3527
0 -> x = value
3628
else -> throw IndexOutOfBoundsException()
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package glm_.vec2
2+
3+
import glm_.vec1.Vec1Vars
4+
5+
interface Vec2Vars<T : Number> : Vec1Vars<T> {
6+
var y: T
7+
8+
fun component2() = y
9+
10+
11+
// -- Component accesses --
12+
13+
override operator fun get(index: Int) = when (index) {
14+
1 -> y
15+
else -> super.get(index)
16+
}
17+
}

src/main/kotlin/glm_/vec2/Vec2t.kt

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,10 @@ import java.nio.*
1313
* Created bY GBarbieri on 05.10.2016.
1414
*/
1515

16-
abstract class Vec2t<T : Number>: ToBuffer {
17-
18-
abstract var x: T
19-
abstract var y: T
20-
21-
operator fun component1() = x
22-
operator fun component2() = y
16+
abstract class Vec2t<T : Number>: Vec2Vars<T>, ToBuffer {
2317

2418
// -- Component accesses --
2519

26-
operator fun get(index: Int) = when (index) {
27-
0 -> x
28-
1 -> y
29-
else -> throw IndexOutOfBoundsException()
30-
}
31-
3220
abstract operator fun set(index: Int, value: Number)
3321

3422
// -- infix Generic Constructors --
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package glm_.vec3
2+
3+
import glm_.vec2.Vec2Vars
4+
5+
interface Vec3Vars<T : Number> : Vec2Vars<T> {
6+
var z: T
7+
8+
fun component3() = z
9+
10+
11+
// -- Component accesses --
12+
13+
override operator fun get(index: Int) = when (index) {
14+
2 -> z
15+
else -> super.get(index)
16+
}
17+
}

src/main/kotlin/glm_/vec3/Vec3t.kt

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,10 @@ import glm_.vec4.Vec4bool
99
import glm_.vec4.Vec4t
1010
import java.nio.*
1111

12-
abstract class Vec3t<T : Number>: ToBuffer {
13-
14-
abstract var x: T
15-
abstract var y: T
16-
abstract var z: T
17-
18-
operator fun component1() = x
19-
operator fun component2() = y
20-
operator fun component3() = z
21-
12+
abstract class Vec3t<T : Number>: Vec3Vars<T>, ToBuffer {
2213

2314
// -- Component accesses --
2415

25-
operator fun get(index: Int) = when (index) {
26-
0 -> x
27-
1 -> y
28-
2 -> z
29-
else -> throw IndexOutOfBoundsException()
30-
}
31-
3216
abstract operator fun set(index: Int, value: Number)
3317

3418
// -- infix Generic Constructors --
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package glm_.vec4
2+
3+
import glm_.vec3.Vec3Vars
4+
5+
interface Vec4Vars<T : Number> : Vec3Vars<T> {
6+
var w: T
7+
8+
fun component4() = w
9+
10+
11+
// -- Component accesses --
12+
13+
override operator fun get(index: Int) = when (index) {
14+
3 -> w
15+
else -> super.get(index)
16+
}
17+
}

src/main/kotlin/glm_/vec4/Vec4t.kt

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,7 @@ import glm_.vec3.Vec3t
1010
import java.nio.*
1111

1212
// TODO other
13-
abstract class Vec4t<T : Number> : ToBuffer {
14-
15-
abstract var x: T
16-
abstract var y: T
17-
abstract var z: T
18-
abstract var w: T
19-
20-
operator fun component1() = x
21-
operator fun component2() = y
22-
operator fun component3() = z
23-
operator fun component4() = w
24-
25-
operator fun get(index: Int) = when (index) {
26-
0 -> x
27-
1 -> y
28-
2 -> z
29-
3 -> w
30-
else -> throw IndexOutOfBoundsException()
31-
}
13+
abstract class Vec4t<T : Number> : Vec4Vars<T>, ToBuffer {
3214

3315
abstract operator fun set(index: Int, value: Number)
3416

0 commit comments

Comments
 (0)