Acorn C/C++ Product Information =============================== Update 1 of the Acorn C/C++ product (SKB78) is now available via ftp from: ftp.acorn.co.uk:/pub/riscos/releases/Cupdate1.arc This Update should only be used in conjunction with Acorn C/C++ and is covered by the same licence conditions. For those who do not have ftp access, a floppy disc will shortly be made available for a small administration charge. The disc will be available through Acorn Direct at: Acorn Direct 13 Denington Road Wellingborough Northants NN8 2RL. Registered Developers who have purchased Acorn C/C++ will be receiving the Update 1 disc free of charge over the next few days. Included with the Update is a list of changes which is reproduced below. Also available via ftp are two application notes (including example code) explaining how to write your own Toolbox Object and Gadget modules. These are Application Notes 280 and 281, and are to be found in: ftp.acorn.co.uk:/pub/documents/appnotes/276-290/280.ps OR ftp.acorn.co.uk:/pub/documents/appnotes/276-290/280.arc AND ftp.acorn.co.uk:/pub/documents/appnotes/276-290/281.ps OR ftp.acorn.co.uk:/pub/documents/appnotes/276-290/281.arc where files with a .ps extension are PostScript files and files with a .arc extension are archived plain text files. A version of SparkPlug is available for dearchiving these files in: ftp.acorn.co.uk:/pub/riscos/releases/dearchive.bas Ian Johnson 9th June 1995. (Acorn C/C++ Project Mgr) ========================================================================= Update List =========== 1. User Interface Toolbox ========================= Toobox ------ Acorn C/C++ version: 1.33 Update version : 1.36 - parent and ancestor components of a newly created Object are now correctly initialised to -1 (previously 0). - if a null event is delivered to the client application, it is ALWAYS let through, even if the client was apparently not expecting a null (as indicated by its event mask). This is because Wimp_StartTask returns in a manner which makes a null event appear to return from Wimp_Poll, and this must be passed through unclaimed, or Wimp_StartTask will cause a fatal error in the client. The only side-effect of this is that clients of the Toolbox may receive unexpected null events, if an Object Module has enabled them on its behalf. - Object IDs are now more likely to remain unique over time. Previously an Object ID was just an RMA address, and so deleting an Object and then immediately creating another Object had a high probability of "re-using" the deleted Object's ID. Now we have a counter which is OR'ed into the address. This means that Object IDs now appear in a different range of integer values, but this will not affect client application use, since no interpretation may be applied to an Object ID. Iconbar ------- Acorn C/C++ version: 1.11 Update version: 1.12 - corrected interactive help behaviour. Previously the module only checked the icon number of a help request, without checking it was for the iconbar window handle - this would cause interactive help for some windows to "flicker". ColourDbox ---------- Acorn C/C++ version: 0.14 Update version: 0.15 - doesn't RMEnsure 310support module for versions of RISC OS later than 3.10. ColourMenu ---------- Acorn C/C++ version: 0.16 Update version: 0.17 - slight memory leak removed when a colourmenu was shown via Toolbox_ShowObject. Previously, showing a ColourMenu without a "none" entry would leak 5 bytes. FileInfo -------- Acorn C/C++ version: 0.13 Update version: 0.14 - memory leak removed from FileInfo_GetModified. Previously it would leak 32 bytes on each call. FontDbox -------- Acorn C/C++ version: 0.13 Update version: 0.14 - new Window template has 10pt gadget same size as the other font size gadgets. Fontmenu -------- Acorn C/C++ version: 0.16 Update version: 0.17 - corrected behaviour on ADJUST-click. Previously two submenus would be created if Fontmenu Object was created as a submenu, resulting in incorrect font choice events. Menu ---- Acorn C/C++ version: 0.22 Update version: 0.24 - fixed Menu_SetTextEntry. Previously if the old entry and the new entry were identical in the first character, then an infinite loop would result. This also fixes Menu_SetEntrySprite and Menu_SetTitle in the same respect. - menu entries which use sprites now look for those sprites in the client's sprite area first and then the Wimp sprite area. Previously such sprites had to be in the Wimp sprite area. PrintDbox --------- Acorn C/C++ version: 0.08 Update version: 0.09 - help string for the "copies" gadget corrected. Previously it was the same as the "scale" gadget help text. - allowable chars for the from/to gadgets corrected to disallow the character 'a'. Previously 'a' was a permitted character. - uses SWI PDriver_Info to get the currently selected printer rather than Printer$. SaveAs ------ Acorn C/C++ version: 0.10 Update version: 0.11 - uses the hourglass when saving on behalf of "type 1" clients. - setting of the "safe" bit corrected. Previously "safe" bit was being set after certain error conditions. - "type 1" clients now correctly set estimated file size at the beginning of a data transfer. Previously this was always 0. - corrected behaviour of "type 2" clients when "Save" is clicked and the filename chosen is "long" (255 chars). Previously this caused undefined behaviour in the client application. - SaveAs_GetFileName corrected. Previously this would also set filetype to 0. Scale ----- Acorn C/C++ version: 0.10 Update version: 0.11 - corrected delivery of events when client's own dbox is used for a Scale Object. Previously scale factor was always reported as 0. Window ------ Acorn C/C++ version: 1.29 Update version: 1.31 - removed memory leak when Window deleted which had a radio button in it. Also removed memory leak when task exits with Windows still in existence which have toolbars. - made decimal point character used in number ranges dependent on currently configured territory. - behaviour of draggable gadget corrected to allow the pointer to the edge of the screen when dragging. Previously the dragged object was bound to the screen. - improved support for new gadget types. 2. C++ Compiler =============== Acorn C/C++ version: 3.0 Update version: 3.1 - c++ command now calls the C preprocessor in ANSI mode to allow ANSI preprocessing directives (eg ##). Previously this caused compilation errors when using assert.h. 3. C Compiler ============= Acorn C/C++ version: 5.05 Update version: 5.06 - corrected behaviour using shorts with right-shift and addition. Previously, the register allocator was wrongly removing narrowing operations; ie where only 16 bits of result are used in a = b + c, it is deduced that only 16 bits are needed from b and c; the allocator was wrongly applying this to a = b + (c>>16) as well. - corrected behaviour in basic blocks which caused fatal internal error: insertblockbetween. 4. Tools ======== !ResEd ------ Acorn C/C++ version: 0.28 Update version: 0.32 - FontDbox editor dbox now consistent with other dboxes. - Window extent and coords fields now allow -999999 to 9999999. Previously limits were -9999 to 99999. - Title of String Set dbox corrected from "String Set" to "String set". - Redraw problem fixed for gadget bbox "ears" under certain conditions (eg ADJ-drag on a resize handle). - Support added for unknown Objects and Gadgets. These can now be edited using a generic word offset interface. Previously they were faulted. - Gadgets and objects with zero-size bodies are now processed correctly. - The "Import warning" dialogue box now responds correctly to a RETURN keypress. !ResCreate ---------- Acorn C/C++ version: none Update version: 0.03 - new application designed to "bootstrap" the process of creating new Object Templates. This application can be used to create a blank Object Template, allowing the ResEd palette file to be added to. 5. Libraries ============ C++Lib ------ - if attached to a tty, cin is now line buffered (ie input is terminated by EOL rather than EOF - Ctrl/D). EventLib -------- - event_deregister_toolbox_handler now correctly removes the handler. Previously all toolbox handlers remained registered for the lifetime of the client application. FlexLib ------- - new library formed by extracting c.flex from RISC_OSLib which was part of the Desktop C product. Use is described in the header file h.flex. This library is mostly API-compatible with RISC_OSLib except flex_init which now requires 2 extra parameters to deal with error handling. ToolboxLib ---------- - h.wimp: corrected the typedef for a WimpWindow. Previously it had a single Wimp Icon block at the end of it, thus making sizeof(WimpWindow) 3 words too big.