Simplified instruction pointer delta handling
This commit is contained in:
parent
11dac6494d
commit
270a3845cd
4 changed files with 12 additions and 19 deletions
|
@ -1,10 +0,0 @@
|
||||||
package pointer
|
|
||||||
|
|
||||||
type Delta struct {
|
|
||||||
x int
|
|
||||||
y int
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewDelta(x, y int) *Delta {
|
|
||||||
return &Delta{x: x, y: y}
|
|
||||||
}
|
|
|
@ -3,16 +3,19 @@ package pointer
|
||||||
import "git.adyxax.org/adyxax/gofunge/pkg/field"
|
import "git.adyxax.org/adyxax/gofunge/pkg/field"
|
||||||
|
|
||||||
type Pointer struct {
|
type Pointer struct {
|
||||||
x int
|
// the position
|
||||||
y int
|
x int
|
||||||
delta *Delta
|
y int
|
||||||
|
// The delta
|
||||||
|
dx int
|
||||||
|
dy int
|
||||||
// The Storage offset
|
// The Storage offset
|
||||||
sox int
|
sox int
|
||||||
soy int
|
soy int
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPointer() *Pointer {
|
func NewPointer() *Pointer {
|
||||||
return &Pointer{delta: NewDelta(1, 0)}
|
return &Pointer{dx: 1}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p Pointer) Split() *Pointer {
|
func (p Pointer) Split() *Pointer {
|
||||||
|
@ -20,5 +23,5 @@ func (p Pointer) Split() *Pointer {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pointer) Step(f field.Field) {
|
func (p *Pointer) Step(f field.Field) {
|
||||||
p.x, p.y = f.Step(p.x, p.y, p.delta.x, p.delta.y)
|
p.x, p.y = f.Step(p.x, p.y, p.dx, p.dy)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNewPointer(t *testing.T) {
|
func TestNewPointer(t *testing.T) {
|
||||||
require.Equal(t, NewPointer(), &Pointer{delta: &Delta{1, 0}})
|
require.Equal(t, NewPointer(), &Pointer{dx: 1})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSplit(t *testing.T) {
|
func TestSplit(t *testing.T) {
|
||||||
|
@ -23,8 +23,8 @@ func TestSplit(t *testing.T) {
|
||||||
// We check that p2 is a real copy
|
// We check that p2 is a real copy
|
||||||
p.Step(*f)
|
p.Step(*f)
|
||||||
p2.Step(*f)
|
p2.Step(*f)
|
||||||
require.Equal(t, p, &Pointer{x: 1, y: 0, delta: &Delta{1, 0}})
|
require.Equal(t, p, &Pointer{x: 1, y: 0, dx: 1})
|
||||||
require.Equal(t, p2, &Pointer{x: 1, y: 0, delta: &Delta{1, 0}})
|
require.Equal(t, p2, &Pointer{x: 1, y: 0, dx: 1})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStep(t *testing.T) { // Step is thoroughly tested in the field package
|
func TestStep(t *testing.T) { // Step is thoroughly tested in the field package
|
||||||
|
|
|
@ -5,7 +5,7 @@ func (p Pointer) GetStorageOffset() (x, y int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pointer) CalculateNewStorageOffset() {
|
func (p *Pointer) CalculateNewStorageOffset() {
|
||||||
p.sox, p.soy = p.x+p.delta.x, p.y+p.delta.y
|
p.sox, p.soy = p.x+p.dx, p.y+p.dy
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pointer) SetStorageOffset(x, y int) {
|
func (p *Pointer) SetStorageOffset(x, y int) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue