Integer literals now support signs
This commit is contained in:
parent
0ce136585b
commit
776856a6a5
2
draw.go
2
draw.go
@ -214,6 +214,8 @@ func drawOctal (xOffset, yOffset int, number uint64) {
|
|||||||
application.SetColor(xOffset, yOffset, stone.ColorBlue)
|
application.SetColor(xOffset, yOffset, stone.ColorBlue)
|
||||||
application.SetColor(xOffset + 1, yOffset, stone.ColorBlue)
|
application.SetColor(xOffset + 1, yOffset, stone.ColorBlue)
|
||||||
|
|
||||||
|
number = drawSign(xOffset, yOffset, number)
|
||||||
|
|
||||||
for x := 0; x < 21; x ++ {
|
for x := 0; x < 21; x ++ {
|
||||||
bitOffset -= 3
|
bitOffset -= 3
|
||||||
|
|
||||||
|
6
main.go
6
main.go
@ -164,7 +164,11 @@ func onPress (button stone.Button, modifiers stone.Modifiers) {
|
|||||||
case *IntegerLiteral:
|
case *IntegerLiteral:
|
||||||
integer := selectedExpression.(*IntegerLiteral)
|
integer := selectedExpression.(*IntegerLiteral)
|
||||||
integer.value *= int64(integer.displayRadix)
|
integer.value *= int64(integer.displayRadix)
|
||||||
integer.value += int64(value)
|
if integer.value < 0 {
|
||||||
|
integer.value -= int64(value)
|
||||||
|
} else {
|
||||||
|
integer.value += int64(value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
redraw()
|
redraw()
|
||||||
|
11
tree.go
11
tree.go
@ -450,6 +450,13 @@ func (literal *IntegerLiteral) Previous () (previous Expression) {
|
|||||||
func (literal *IntegerLiteral) Render (target stone.Buffer, offset int) (moved int) {
|
func (literal *IntegerLiteral) Render (target stone.Buffer, offset int) (moved int) {
|
||||||
var output []rune
|
var output []rune
|
||||||
value := literal.value
|
value := literal.value
|
||||||
|
|
||||||
|
negative := false
|
||||||
|
if value < 0 {
|
||||||
|
negative = true
|
||||||
|
value *= -1
|
||||||
|
}
|
||||||
|
|
||||||
for value > 0 {
|
for value > 0 {
|
||||||
digit := rune(value % int64(literal.displayRadix))
|
digit := rune(value % int64(literal.displayRadix))
|
||||||
value /= int64(literal.displayRadix)
|
value /= int64(literal.displayRadix)
|
||||||
@ -479,6 +486,10 @@ func (literal *IntegerLiteral) Render (target stone.Buffer, offset int) (moved i
|
|||||||
output = append([]rune("0?"), output...)
|
output = append([]rune("0?"), output...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if negative {
|
||||||
|
output = append([]rune { '-' }, output...)
|
||||||
|
}
|
||||||
|
|
||||||
for _, character := range output {
|
for _, character := range output {
|
||||||
target.SetRune(offset + moved, 0, character)
|
target.SetRune(offset + moved, 0, character)
|
||||||
if selectedExpression == literal {
|
if selectedExpression == literal {
|
||||||
|
Loading…
Reference in New Issue
Block a user