Skip to content

Fixed Array Type

IsaacShelton edited this page Mar 21, 2022 · 1 revision

Fixed Array Type

Fixed array types start with a positive integer indicating their length, optionally wrapped in square brackets:

16 int
[16] int

Since it's a type modifier, it can be repeated or combined with other type modifiers:

4 4 float
*10 10 10 bool
$#N 2 double
[$#N] String
[4] [4] [4] double

Dynamic Fixed Arrays

The size of a fixed array can be defined as a dynamic compile time variable when using square brackets

define ten = 10
define nineteen = 9 + 10

#define twenty_one 21

func exampleFunction {
    array1 [ten] int
    array2 [nineteen] int
    array3 [#get twenty_one] int
}

Accessing Elements

Elements can be accessed using the [] operator

matrix[0] = 1.0f

Conversion to Pointer

In some situations, obtaining the pointer to a fixed array is desired. In order to do this, you can do one of the following:

  • &my_fixed_array[0]
  • my_fixed_array at 0
  • &my_fixed_array as *ElementType
  • cast *ElementType &my_fixed_array

Obtaining the Length

Rather than hard-coding the length of a fixed array, you can do this:

my_array_length usize = sizeof(my_array) / sizeof ElementType

Polymorphic Fixed Array Lengths

In order to allow for fixed arrays of any size as function/method arguments, the polycount type modifier can be used:

func reverseFixedArray(array $#N $T) $#N $T {
   // ...
}

For more information on polymorphic fixed arrays, see polycount type modifiers

Clone this wiki locally