♦ Aztec Language Definition
♦ General purpose object oriented programming language
♦ Very friendly syntax - thoughtful use of keywords, minimal complexity and simple set of operators
♦ Strongly typed
♦ Four fundamental primitive data types
♦ int (8 byte signed integer)
♦ float (8 byte floating point)
♦ string (varying length up to 256 million)
♦ bool (true or false)
♦ Supports user defined enumerations
♦ Consistent interface across the entire language and framework
♦ Methods support default arguments.
♦ Comprehensive model for scope and visibility
♦ Supports multiple inheritance and polymorphism
♦ A class can "adopt" one or more classes.
♦ Allows adopted class to access all class members marked as "family".
♦ Satellite classes allow the definition of a class to be located in multiple locations.
♦ Instance methods and shared data can be added to "dynamic" classes.
♦ All classes in the Aztec framework are defined as dynamic.
♦ Spreading class definition across modules can also be used to provide controlled access of certain class members.
♦ Flexible model for memory handling including deterministic destructors
♦ Creative and powerful model for performing logic at compile time using multiple compiler passes
♦ Compile-time logic includes conditional execution and full expression evaluation.
♦ Compiler methods support all flow control statements.
♦ Provides powerful library of compiler methods for primitive objects, file I/O, dialogs and system utilities.
♦ Flexible array support with rectangular and jagged arrays
♦ All arrays, lists, ranges and other collections are one based.
♦ The end-of-statement delimiter (semi-colon) is not required.
♦ Method references are supported for shared/global methods and instance methods and are completely type safe.
♦ Flexible model for specifying the script startup class or method
♦ Derive "Main" class from Thread and VM automatically creates object and executes Run method.
♦ Optionally provide a "Main" global method or shared class method for startup.
♦ Name of "Main" class or method can be changed on Aztec Engine command line (-main XXX).
♦ The compiler looks across all source modules and libraries to match identifier names. No prototype method or data definitions are necessary.
♦ Aztec Class Framework
♦ Primitive data types are objects and are thread safe.
♦ Entire library of primitive methods are handled directly as VM instructions.
♦ Makes them as efficient as using operators.
♦ Applies to instance methods and global methods.
♦ Multiple thread support with flexible synchronization and thread communication features
♦ Events and Exceptions
♦ Powerful and consistent event and exception handling across the entire Aztec Class Framework
♦ Three separate options for handling events, including method references and abstract interface classes
♦ Event and exception handling can simultaneously occur across multiple threads.
♦ Variety of utility classes for date/time manipulation, timer alarms and collections
♦ Nice family of stream I/O classes including file I/O, memory I/O, socket I/O and stream filters
♦ The Socket class hierarchy provides separate client and server classes.
♦ ClientSocket provides "socket receive" and "socket close" events to simplify the communication.
♦ ServerSocket provides "socket connect" event to drive connnection process and create client socket for I/O.
♦ ClientSocket uses socket stream I/O for point to point communication with remote application.
♦ User interface framework is easy to use, thread safe and provides consistent event handling.
♦ Supports the capability to display the UI on one or more remote machines and process all UI events locally.
♦ Aztec Virtual Machine
♦ The Aztec Virtual Machine provides a completely safe execution environment.
♦ All critical services are monitored and exceptions are fired when necessary. Math operations, file I/O, socket I/O and memory are handled automatically.
♦ Object memory cleanup is handled automatically by the Virtual Machine, and the system ensures that object references are valid at all times.
♦ Primitive data types are completely thread safe (including strings), and access to references for all types of objects is controlled in a thread safe manner.
♦ Event handling is built right into the Virtual Machine and it can directly kick off event handlers in multiple threads as directed by the framework.
♦ Many optimizations have been designed into the Virtual Machine to provide extremely good run-time performance.
♦ Aztec Engine
♦ The size of the entire Aztec Engine is 1,047 KB, and it consists of just a single Windows executable file.
♦ Includes the Aztec Compiler, Aztec Virtual Machine and the entire Aztec Class Framework.
♦ Can also be run in "UI Display Server" mode for use in displaying remote UIs.
♦ Supports Windows XP, Vista and 7, with Linux and Unix versions planned for the future.
♦ The Aztec system is very nimble and easy to move around. No formal installation or setup is required.
♦ Supports C++ plug-in modules with a well defined API.
♦ Aztec classes, data and methods can be created from within the C++ plug-in.
♦ When the VM executes an Aztec method defined in C++ code, it executes the underlying C++ function. The API is used to access and modify the Aztec arguments and to communicate directly with the VM for a variety of services.
♦ Entire Aztec Class Framework is implemented using this C++ plug-in technology.
♦ Cold Spring Web Site
♦ This web site presents the Aztec documentation in the form of two separate books titled "Language Definition" and "Framework Definition".
♦ Each "book" provides a navigation bar on the left side and it displays each page in the content frame on the right side of the web site.
♦ A link is provided at the top and the bottom of each navigation bar to switch back and forth between the two.
♦ Each content page contains two sets of up and down arrows for easy navigation through the entire book.
♦ Pages are presented in a bulleted format to minimize the complexity and make it an easy read.
♦ Each content page contains an inheritance hierarchy with links to all classes that the class is derived from.
♦ "Derived Classes" and "See Also" sections provide further useful navigation through the framework.
♦ Each page provides a list of methods contained in the class, and each method in the list provides a link to the detailed definition of that method.
♦ All content pages have a consistent look and feel, and they all provide the following links
♦ Display the Web Site Home page with navigation bar, particularly useful when entering the site from a search engine
♦ Some pages contain musical lyrics from popular rock artists. The lyrics and the artists have no relationship or significance to this web site or the Aztec Programming Language. They are provided solely for amusement to help ease the pain of reading technical documentation, and they will be changed periodically.
♦ The Aztec documentation is designed for the first production release, so there are a few items that are documented but not yet available in the Aztec Engine.
♦ Those items which are not yet available are noted in the documentation and/or they are displayed using this color.
♦ Some uses for the Aztec Programming Language
♦ Great teaching language
♦ Encourages good OO design
♦ Small set of operators and clean language syntax
♦ Auto memory management and a well controlled run-time environment
♦ Well designed, consistent and uncluttered class framework
♦ Supports full multiple inheritance and easy to use multi-threading
♦ Very small footprint, easy to install and use, available for FREE
♦ General purpose application programming – client and server – where the use of a Virtual Machine is reasonable
♦ OS level scripts (directory/file/registry maintenance), product installation scripts, and other types of utility scripts
♦ Scripting language for 3rd party applications – VM could easily be modified to integrate with other applications
♦ The compact size and efficiency of the VM are a great fit for internet and mobile applications
♦ Compiler, VM and Framework are 95% ANSI C++ to minimize effort to port to other environments
♦ Aztec VM technology could easily be integrated into a web browser