Commit graph

5 commits

Author SHA1 Message Date
Randy Heit
ac678ff7b8 Add script/function arrays to ACC
- Script arrays are semantically identical to map arrays: They have fixed
  sizes and can be multidimensional. They can also be initialized, although
  this is just syntactic sugar. e.g.
    int init_array[2] = { 10, 20 }
  produces code identical to:
    int init_array[2];
    init_array[0] = 10;
    init_array[1] = 20;
  Script arrays are also implicitly initialized to 0, just like any other
  variable in ACS.
- Unlike map arrays, they only exist for the life of the script, and each
  script gets its own copy of the array.
- Script arrays exists in a separate space from script variables. I did
  not repeat the bullshittery of map arrays here. (I still have no idea what I
  was thinking when I designed them that way.)
- Each script and function that uses local arrays is recorded with a new
  chunk: SARY for scripts and FARY for functions. The first two bytes are the
  script/function number, and the rest of the chunk consists of four-byte
  integers describing the size (in ints) of each array used by that
  script/function. To determine how many arrays a script/function uses,
  take the chunk length, subtract two, and divide by four.
2014-07-24 14:41:39 -05:00
Randy Heit
c447410ad8 Don't convert string constants to numbers for #define
- Fixed: You could not #define a string for use in a library, because it
  was converted to a number at definition time and not at use time. This
  is no longer the case. Symbolic constants now store the string in its
  original form, and they now expand into the string when encountered
  instead of their string table index.
2014-07-21 23:32:57 -05:00
Christoph Oelckers
dc777b74f1 - ACC changes for externally definable functions.
SVN r1576 (trunk)
2009-05-11 21:07:27 +00:00
Randy Heit
a96324456a - Fixed: Inside an ACS library, you could not use a normal #define to specify
the size of an array. Now #defines are fully processed inside an import but
  are forgotten when the import is popped if they weren't created with
  #libdefine.

SVN r280 (trunk)
2006-08-03 03:45:26 +00:00
Randy Heit
56f3ff15d8 Initial commit for ACC.
SVN r8 (trunk)
2006-02-24 05:03:04 +00:00