Short: Typed Modules (V40) for Amiga E Author: m88jrh@ecs.ox.ac.uk (Jason R. Hulance) Uploader: m88jrh ecs ox ac uk (Jason R Hulance) Architecture: m68k-amigaos This archive contains typed modules created from the V40 Amiga includes. They differ from the standard modules in that they enable multiple dereferencing of system objects without requiring repeated "::". For instance, to access the signal bit of a window's message port you can now type: win.userport.sigbit and win.rport.layer.scroll_x instead of: win.userport::mp.sigbit and win.rport::rastport.layer::layer.scroll_x (Note: You are still required to include the module for any object referred to in this way.) A bonus is that the sources show the dependencies of the modules. For instance, 'graphics/layers' depends on 'exec/lists', 'exec/semaphores' and 'graphics/clip'. This is a short list to search for the definition of 'layer' (which is in 'graphics/clip', quite surprisingly). Again, the names used conform to the standard modules (where possible) and these are based on the Assembly includes. This means that you still need to be aware of the differences in names from the C includes. A number of useful (standard) macros have been added, e.g., ITEMNUM() from 'intuition/intuition'. To use these you must specify "OPT PREPROCESS" in your source file. The library modules for all of the V40 system libraries are included. Note that this *includes* those for the built-in libraries: 'dos', 'exec', 'graphics' and 'intuition'. This is a stop-gap feature since EC v3.1a does not contain any V40 function calls (but v3.2a probably will). Use these four modules at your own risk! (They seem to behave correctly...) Some of the problems highlighted in the previous (V39) release have been solved by manipulation of the module files. This means that, once again, you *CANNOT* recreate the modules from the sources. The sources are purely for reference. The problems solved are: unions and misaligned elements. There are three badly aligned elements in the standard includes, which are caused by odd sized CHAR arrays. Two are in the 'countryprefs' object in 'prefs/locale' (which cause a number of the following elements to be badly aligned, too), and one is in the 'conunit' object of 'devices/conunit'. The changes made to these modules are completely transparent. There are a number of unions in the includes. One example is the 'printerdata' object of 'devices/prtbase', in which "s0:ioextser" is unioned with "p0:ioextpar", presumably because your printer may be connected to your serial or parallel port. (In fact, this object has incorrect offsets in the standard modules.) Unions have been admitted by fiddling the module file (in a safe way). The one disadvantage is that creating an object-typed list for an object that contains a union is probably undefined now (at least, I can't guarantee what would happen). This may not be a great problem as a lot of these objects contain nested object instances (e.g., an element "x:obj") which means an object-typed list cannot be created anyway. The complete list of objects which have unions is: Module Object ------------------------------ dos/dosextens dospacket dos/dosextens doslist dos/notify notifyrequest exec/memory me exec/tasks tc graphics/copper copins These E modules and sources are Copyright (C) 1994-1995, Jason R. Hulance. The original C and Assembly includes are Copyright (C) 1985-1992, Commodore-Amiga Inc. Wouter van Oortmerssen is free to do what he likes with all this. Everyone else must adhere to the usual Freeware conditions. In particular, you are free to use these modules to create your programs (whether they are freeware or commercial), but if you wish to distribute any part of this archive you must include it all, unmodified, and with this "readme" file.