Short: Make methods and tags bases 1.15 (21.06.01) Author: Przemyslaw 'SENSEI' Gruchala Uploader: Przemyslaw \\'SENSEI\\' Gruchala Type: dev/misc Version: 1.15 (21.06.01) Replaces: dev/misc/MakeTagBase.lha Requires: OS 2.0+, any CPU Architecture: m68k-amigaos Keywords: maketagbase redgroup sensei gruchala polska poland WHAT'S THIS? This is a small utility to create method and tag bases for BOOPSI and MUI classes, libraries and normal applications. DISCLAIMER This software is provided as-is, without warranty of any kind, either expressed or implied. Under no circumstances will the authors be liable for direct, indirect, incidental or consequential damages either to hardware or software or data loss resulting from the use of MakeTagBase. The entire risk as to the results of MakeTagBase is assumed by the user. DESCRIPTION MakeTagBase can work in two modes: 1) Convert string to bases mode. When you want to create new bases you should write for example: MakeTagBase ID BLAH and if the ID is correct you'll receive for the example above: Converting ID "BLAH"... Base 0x16A94880 TagBase 0x96A94880 Now you can use 'Base' as a method dummy and 'TagBase' as tag base (it's 'Base' bit or TAG_USER). 2) Convert bases to string mode. It could be useful if you forgot what string you used to create bases, or if you'd like to check MakeTagBase or existing bases. Example of usage: MakeTagBase BASE 0x16A94880 Converting TagBase 0x16A94880... ID "BLAH" The template for MakeTagBase is ID,BASE=TAGBASE where ID is a four character long string which contains upper case A-Z and 0-9 numbers. If other characters are present or the length is incorrect, an error will occur. BASE=TAGBASE is a base which you would like to convert to a string. It should start with 0x or $ if it's a hexadecimal number, and with 0-9 if it's a decimal number. In other cases an error will occur. You can't use ID and BASE=TAGBASE at the same time! Note that any unused bits, like bit 31, are ignored by MakeTagBase. So MakeTagBase BASE 0x16A94880 and MakeTagBase TAGBASE 0x96A94880 will produce the same result. Note that you're not allowed to use f.e. "0000" as source string because it'll be converted to 0!!! HOW IT WORKS? In making bases mode the specified string is packed to a long word number (using special packing techniques (which you can learn on request, but I doubt that anybody will mail me for it ;) ). In making string mode the specified long word number is unpacked to a string. REGISTERED BASES Currently "registered" bases are: - CMDL Base 0x18B1AA80 TagBase 0x98B1AA80 for command.library. If you're using this utility please contact me and I'll add your base to this list, so nobody will use the same bases as you (it's important to create unique bases f.e. when you're writing MUI subclasses. If two or more objects use the same base, and are placed in one group, when you use a method or set the attributes of one of these classes on a group object, the attribute will be set only for the top object in the group list! In other words, it wont do what you want... It's better to think about this in the design stage, because when everyone is using your MCC it's too late to change anything...). "Registration" is free, so just contact me. And always download new versions of MakeTagBase when they're released because they could contain a more recent list of registered bases. FUTURE Anything you want, just contact me ;). New registered bases and bugs fixes if any. HISTORY 1.15 (21.06.01): - First public version. - Better error handling (when there's no arguments specified it's now reporting 'required argument missing' instead of 'wrong number of arguments'. 1.1 (17.06.01): - Cleanup the source code. Better error handling (now it's using dos.library error codes instead of custom ones). - No stdio printf() routines any more! It's using dos.library instead. The result is 2.5 times smaller executable file... - Fixed BASE=TAGBASE mode (which stopped working after using dos.library Printf() because I used %c instead of %lc ;). - BASE=TAGBASE now accepts several types of tagbases: if it starts with 0x or $, base is in hexadecimal format and if first character is between 0 and 9, base is in decimal format. - Compiled with size optimization turned on using SAS/C v6.58. 1.01 (24.08.00): - Some fixes are made (I don't remember what exactly). 1.0 (??.08.00): - First internal version. AUTHOR Idea, testing and main programmer: Przemyslaw 'SENSEI' Gruchala English support: Stephen Brookes