![]() | Chapter 21: Extensions | ![]() ![]() |
21.19. Longer extracts of Inform 6 code |
Whole routines, object and class definitions (or any other directives) can be pasted in wholesale using sentences like so:
Include (-
[ MyInform6Routine a b; return a*b; ];
-).
Such inclusions should not be too long (Inform has a maximum length of literal verbatim text of about 2K), but of course any number of inclusions like this can be made. They are pasted into the final compiled code at the end of the file, after the I6 grammar has been declared.
In such extracts, we sometimes need to refer to objects, variables or values which can't be described using I6: or rather, which can be described, but we don't know how. To this end, any text in an inclusion written in "(+" and "+)" parentheses is treated as an I7 value, and compiled accordingly, with all type-checking waived for the occasion. For instance:
Include (-
Global my_global = (+ the tartan rucksack +);
-).
Here "the tartan rucksack" is translated into "O18_tartan_rucksack", or something similar: the I6 object created to represent the rucksack. Thus the actual line of code produced is
Global my_global = O18_tartan_rucksack;
(Note that the brace notation seen before for Inform 6-defined inline phrases is not allowed here. But this is better anyway.)
| ![]() A status line which has only the name of the location, centered. |
Previous | Contents | Next |