Variable types¶
At their core, all variables in Sierra Script are 16-bit values. They are untyped, meaning you can assign a number, an object, or a pointer to a buffer to the same variable. That said, it is useful to note the kinds of things that can be assigned to variables.
Number¶
A 16-bit number between -32768 and 32767.
Example:
; An immediate
(Wait 1234)
; Assigned to a variable
= someNum 1234
(Wait someNum)
Boolean¶
A TRUE or FALSE expression. This is the same as a number, but is evaluated differently. If it’s value is 0, it is a FALSE expression, otherwise it is a TRUE expression.
String¶
A string of characters. A string is a pointer to memory containing null-terminated text.
HeapPtr¶
A pointer to a block of memory. Blocks of memory can contain anything, from classes, to strings, to variables.
Examples:
; An immediate string
(Display "Hello World")
; A string variable
(string
helloStr = "Hello World"
)
...
(Display helloString)
; A variable (local, global, var, param, property) containing a pointer to a string
= strPtr "Hello World"
(Display strPtr)
; A pointer to a variable (local, global, var, param)
(local
[strBuf 40]
)
; then in code:
(StrCpy @strBuf "Hello World")
(Display @strBuf)
Rect¶
An array of four variables defining a rectangle
Example:
(procedure (SomeFunc &tmp [rect 4])
(TextSize @rect)
(= yMin [rect 0])
(= xMin [rect 1])
(= yMax [rect 2])
(= xMax [rect 3])
)
Point¶
An array of two variables defining a point
Example:
(procedure (SomeFunc &tmp [point 2])
(= y [point 0])
(= x [point 1])
)