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
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										4
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								main.go
									
									
									
									
									
								
							@ -164,8 +164,12 @@ 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)
 | 
				
			||||||
 | 
								if integer.value < 0 {
 | 
				
			||||||
 | 
									integer.value -= int64(value)
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
				integer.value += int64(value)
 | 
									integer.value += int64(value)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		redraw()
 | 
							redraw()
 | 
				
			||||||
		application.Draw()
 | 
							application.Draw()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user