Aztec Spaces
He helped her out of a jam, I guess...
But he used a little too much force.
- Bob Dylan
Every global (module level) Aztec identifier is created within the context of a “space”, which can contain one or more names separated by a period. This applies to all 'class', 'type' and 'enum' statements. It also applies to 'method' statements that are defined outside of a class and 'data' statements that are defined outside of a method or a class.
♦ The CompilerSetSpace() compiler method is used to set the current space within a module.
♦ If no explicit call to this compiler method, the default space at program startup is "aztec.script".
♦ All identifiers created after this call within the same module will be created within this space, by default.
♦ The Aztec space can always be included directly in the name when an Identifier is created, which will override the current default space for the identifier (e.g. class aztec.script.adg.MyClass { } ).
♦ The CompilerUseSpace() compiler method adds the name of a space to the list of “default” spaces for the compiler.
♦ This “default space” list is used to search for identifiers which are used without an explicit space.
♦ When a global identifier name is used, it can be referenced using its full name (space + ‘.’ + name) or it can be referenced using just its name.
♦ If the space is not included, the compiler searches through each separate space in the “default space” list looking for a match.
♦ When the compiler searches through the default space list, it requires a single match. If it finds multiple matches, it is flagged as a compile error, which is remedied by using the full space name together with the identifier name.
♦ CompilerRemoveSpace() removes a space from the default space list for the remainder of that module. CompilerUseSpace() can always be called again to add it back into the list.
♦ The Aztec Engine supports “-space”, “-use” and “–remove “ command line options to set default space, add to default space list and remove from default space list.
♦ Aztec uses the following system level space names. These are all automatically added to the “default space list” during Script startup, but can be manually removed using "-remove" on the Engine command line.