diff -r 000000000000 -r bde4ae8d615e os/ossrv/lowlevellibsandfws/apputils/group/RELEASE.TXT --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/lowlevellibsandfws/apputils/group/RELEASE.TXT Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,2829 @@ +Version 1.00.103 +=================================== +Released into: GT Mainline 578 +Built against: GT Mainline 574b ALL VARIENTS +Released by: Franco Bellu +Uses: EUSER ESOCK INSOCK IMUT INETPROTUTIL BAFL +For debug, add: FLOGGER EFSRV +For tests, add: HTTPTESTUTILS, C32 +Changelist: xxx +Website: http://lon-wapbuild01.INTRA/HTTP_Project/ + + +Summary +======= + + + +Defects Fixed +============= +* Fixed defect SAM-54WFUN : " String pool does not return an error when a string cannot be found in a string table using StringF() method " +* Fixed defect BEU-55CND8 "using the CStringPoolImplementation from an empty string causes an access violation " +* Fixed defect CLE-536M4D "String pool comparison operators should ASSERT_DEBUG check for use of multiple table " + +API Changes +=========== +None + +Other Significant Changes +========================= +None + + +Known Issues +============ +None + + +----------- +Version 1.00.102 +================ +Tim and Arun, 3 July 2001 + +CR for BAFL and LocE32: allow customizable language downgrade paths to be specified as +part of the locale. + +Version 1.00.101 +================ +Made by Kevin, 11 August 1999 + +Requires RCOMP 318 because of the BC break in the handling of TEXT16 resources. + +Added TResourceReader::AlignCountedPtr16 which returns the counted string length and +adjusts the pointer past both the length byte and any additional padding byte. The value +of the padding byte is checked with an __ASSERT_DEBUG(): the wrong value will cause a +panic with code EBafPanicUnicodeTextPaddingError (=14). + +Added AlignCountedPtr16 calls to the functions which read a Unicode descriptor from +a resource. + + TResourceReader::ReadHBufC16L() + TResourceReader::ReadTPtrC16() + TResourceReader::ReadTPtrC16(TInt aIndex,const TDesC8* aBuffer) + +Modified T_RSC.CPP to correct the r_text_signature check which discriminated between a Unicode +resource file and an 8-bit resource file: the RCOMP padding algorithm puts in an additional +padding byte, which is now checked. Used _LIT() for the resource file names and arranged to build +the TRSC resource via the T_RSC.MMP file. + +Extended T_RSREAD.CPP to test resources and arrays which contains a mixture of 8 and 16 bit text, +organised to test zero-length strings and Unicode strings with both odd and even alignment. +Added the TRSC resource to the T_RSREAD.MMP file for good measure, and get the resource file name +from the shared T_RSC.H include file. + +Modified BLD.INF to mark T_CLINE as a manual test and T_LIBT as a supporting DLL. + +NB ALSO INCLUDES CHANGES MADE IN RELEASE 100 WHICH ARE NOT DOCUMENTED HERE + + +Version 1.00.091 +================ +Made by DavidK, 27 May 1999 + +Uses as 090. Identical release to 090 apart from wins urel and Marm variants also built. + +Version 1.00.090 +================ +Made By DavidK, 26 May 1999 + +Uses E32/156, F32/122, STORE/050, E32UTILS/019, + E32TOOLS/095, E32TOOLP/098, EIKTOOLS 133 + +Renamed the class BaflFileSortTable to CBaflFileSortTable so source incompatible but BC with 089 +(which was a frozen deffile version of 088) +Intended for use with the first public release of Uikon. + +Version 1.00.088 +================ +Made by MarcoS, 29 April 1999 + + Uses E32/156, F32/122, STORE/050, E32UTILS/019, + E32TOOLS/095, E32TOOLP/098, EIKTOOLS 128 + +The sound staff has been moved from Bafl to form a new component: BaflSnd. + +Most of the utilities defined on EikUtils (Eikon) have been transferred +to BaflUtils (Bafl). + + +Version 1.00.087 +================ +Made by ChrisD, 4 December 1998 + + Uses E32/156, F32/122, STORE/050, E32UTILS/019, + E32TOOLS/095, E32TOOLP/098, EIKTOOLS 128 + +Minor source changes for boilerplating Symbian copyright text. +MNT command changed to use new version of E32TOOLP (098) and +valid command modified to use new evalid command for validation. +ROM building scripts updated so ROM could be built. + +Built using VC5 and Service Pack 3. Release tested on the following +variants: + +wins/deb marm/deb +wins/rel marm/rel +wins/udeb marm/udeb +wins/urel marm/urel + +All tests passed on a PB rack. Note that test code T_SNDDA will fail +under WINS on PC's without a soundcard. + +Version 1.00.086 +================ +Made by MattM 28 October 1998 + + Uses E32/156, F32/122, STORE/050, E32UTILS/019, + E32TOOLS/095, E32TOOLS/096, EIKTOOLS 128 + +Changed Unicode third UID on BAFL.DLL +Changed Unicode second UID on clipboard file + +Version 1.00.085 +================ +(Made by SimonC, 29 September 1998) + + Uses E32/125, F32/095, STORE/047, E32UTILS/019, + E32TOOLS/092, E32TOOLS/091, EIKTOOLS 128 + +Backwards but not forwards compatible with 078 +Built using VC5. .PDBs are incompatible with VC4 + +1) Changed RResourceFile::ConfirmSignatureL() to always confirm resource +file signatures on the assumption that no-one can possibly be using version +003 files any longer (they were superceded two years ago) and the existing +resource layout and structures are fixed now for as long as we support BC. + +2) Added RResourceFile::SignatureL() which returns the signature of the +resource file. This shouldn't be required by anyone or anything other than +Eikon. + +3) Changed const TUint KBaflCharTruncation in BAUTILS.H to a const TUint to +prevent a VC5 warning. + +Note that test code T_SNDDA will fail in wins builds on pcs without a sound card + + + +Version 1.00.078 +================ +(Made by SimonC, 16 Mar 1998) + + Uses E32/125, F32/095, STORE/047, E32UTILS/019, + E32TOOLS/092, E32TOOLS/091, EIKTOOLS 125 + +No source changes - rebuilt with E32 125 et al + +Changed *.IBY to support unicode ROMs and reflect recent E32 changes + +All WINS and MARM release releases entirely forward compatible +MARM Debug releases are incompatible + + + +Version 1.00.077 +================ +(Made by SimonC, 9 Dec 1997) + + Uses E32/107, F32/074, STORE/043, E32TOOLS/082, EIKTOOLS 123 + +Backward but not forward compatible with 076 + +From MartinT +In bacline.*, class CCommandLineArguments(), which gives Count() and +Arg() functions whose purpose is similar to argv and argc parsing in +conventional C/C++ programming. This class is mainly intended for WINC +programs which, unlike most regular EPOC32 programs, actively use their +command-line arguments. + +From SimonC +Converted to MAKMAKE and moved building verbs from MNT.CMD to EBLD.BAT + + +Version 1.00.076 +================ +(Made by DavidW, 28 May 1997) + + Uses E32/107, F32/074, STORE/043, E32TOOLS/067 + +Completely BC with 075 + +Built with Platform 001 releases + + Size of BAFL.DLL: 28,432 bytes (ARMREL) + 35,568 bytes (ARMDEB) + +MNT VALID works on a clean drive + +1) Upgraded to Platform 001 releases + +2) Fixed SW3-868: Resource language file look-up fails to find a +*.R01 file (though, as is often the cases with "simple fixes", the +fix wasn't quite so simple after all!) + +3) Fixed SW3-827 by adding MAP files to the releasable file lists + +4) The advent of EChangesSystemTime in E32 106 had the side-effect +of breaking a very restrictive test in Bafl test code T_CNTF. This +could be viewed as highlighting a non-BC feature in the E32 changes; +but it's already been decided that we can live with this (no real app +ought to be making a test like that in T_CNTF). This test code has +now been improved to avoid this problem (and, hopefully, to make it +immune against any future additions to the TChanges enum) + +5) Fixed a problem with building the test code in ARMDEB (shown up +when there was no prior build of the test code in ARMREL) + + +Version 1.00.075 +================ +(Made by DavidW, 8 May 1997) + + Uses E32/101, F32/069, STORE/042, E32TOOLS/063 + + **Almost** completely compatible with 074 + + **IMPORTANT** See note about "descriptor arrays" below + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Size of BAFL.DLL: 28,420 bytes (ARMREL) + 35,556 bytes (ARMDEB) + +MartinB has pointed out that the API of the descriptor array classes +has one real drawback to it: the MdcaPoint() functions were returning + + const TDesC& + +whereas there are many advantages to them instead returning + + TPtrC + +For example, this causes real problems for the Shell, and has in the +past caused real problems with the printer model name array in Eikon + +After prolonged discussions with MartinB, Bill, and Geert and myself, +we decided to "do the right thing" and *** break API compatibility +*** to that extent. This will avoid much lurking death in the +future, to do with temporary variables disappearing as the stack +unwinds, etc. + +All code that uses descriptor arrays - whether of the MDesCArray or +CDesCArray or whatever type - should be recompiled. That should be +the only change necessary. + +Note however that if you previously assigned the result of an +MdcaPoint operation to a + + const TDesC& + +reference variable on the stack in some code, you should now change +this code to assign it to a + + TPtrC + +variable instead. + +*** Note that because the operator[] function of CDesCArray is +defined as being equivalent to its MdcaPoint() function, you may need +some care to find these cases. + +All EXPORTed functions retain their same ordinal values. + + +Version 1.00.074 +================ +(Made by DavidW, 7 May 1997) + + Uses E32/101, F32/069, STORE/042, E32TOOLS/063 + + Completely compatible with 073 + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Size of BAFL.DLL: 28,284 bytes (ARMREL) + 35,440 bytes (ARMDEB) + +From AndrewT: +------------- +1. Fixed a potential bug with "change leakage" in + CEnvironmentChangeNotifier, when a change happening between + the beginning and the end of a RunL could go undetected + + Removed the source-code dependency on the EChangesAll enum, + which makes the source code build compatible with E32 105 + (and with any further changes to this enum that E32 might + introduce in a future version) + + Updated test code to match. + + +Version 1.00.073 +================ +(Made by DavidW, 6 May 1997) + + Uses E32/101, F32/069, STORE/042, E32TOOLS/063 + + Backwards binary compatible with 072, but not forwards + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Size of BAFL.DLL: 28,284 bytes (ARMREL) + 35,440 bytes (ARMDEB) + +1. New header file BAERRHAN.H, defining the interface of an + abstract "error handler" + + New function CBaActiveScheduler::LeaveForErrorHandler + which takes a const CBaErrorHandler* pointer + + The implementor of the DisplayError function in the concrete + subclass of CBaActiveScheduler (or something to which that + delegates, eg the implementor of CEikonEnv::HandleError) must + follow the contract that - + + - when the Leave has unwound, the CBaErrorHandler object gets + sent a HandleError() function. This function is declared + pure virtual at the CBaErrorHandler level. + + There are two parameters to this function - a reference to an + "error text" descriptor, and one to a "context text" + descriptor. The function can fill these in with text that + the environment will then display. + + The HandleError() function should return one of + + EAlertDisplay - use the standard alert dialog + EInfoDisplay - use an info message + (context text will be ignored) + ENoDisplay - no display required + (both text buffers will be ignored) + EErrorNotHandled - fall back to standard processing + + Some test code for CBaErrorHandler has been added to T_SCHED + + ** Note that this BAERRHAN.H is an enhancement to the copy of + this file provisionally contained in EIKON 183. In order to + move up to BAFL 073, you must also move up to EIKON 184 + +2. Removed the last remaining scare comments from BAFL source code + +3. Provided explicit enumeration for all the panics in BAFLPAN.H + +4. Tweak to T_RSC test code to cope with the file copied from + ROM to RAM nowadays ending up as read-only (bad news if you + want to run the test more than once) + +*** Known limitation - the test code fails to build cleanly for +Unicode (WINS) and so several of the test apps fail. No problems +with any of the Narrow builds or test code, though + + + +Version 0.06.072 +================ +(Made by AjThoelke, 30 April 1997) + +1. Uses E32/101, F32/069, STORE/042, E32TOOLS/063 + + Backwards binary compatible with 071, but not forwards: + + Build against 072 only if you use CSoundPlayer::PlayTone() or + SoundUtilities::PlayTone() + Build against 071 if you use CClipboard::Clear() + Otherwise build against 069 + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Size of BAFL.DLL: 28,252 bytes (ARMREL) + 35,392 bytes (ARMDEB) + +From Brendan + +1. Fixed SW-4266. Incorrect assert in matcher code. + +From DavidW + +2. Fixed SW-4477. KErrLeaveNoAlert is passed on to + CBaActiveScheduler::DisplayError() for EIKON to cancel busy messages. + +From AndrewT + +3. Fixed SW-4619. Sound files are not assumed to have the default extension + ".snd". + + Note for ROM builders: Alarm samples in Z:\System\Alarms\ should not have + the extension ".snd" any more. They will still work, but the public + alarm name will be reported as "Soft Bells.snd" rather than "Soft Bells" + for example. (The files released as BAFL ALARMS have not changed their + names and still have a .snd extension) + +4. Fixed SW-4610. Ensure that the sample is left in a valid state when + trying to complete the recording when in a Disk Full situation. + +5. Implemented SW-4007. Two new services are provided by BAFL. + + void CSoundPlayer::PlayTone(TInt aFrequency,TTimeIntervalMicroSeconds32 aDuration,TInt aAmplitude) + + This makes the player play a sine-wave generated tone on the sound + device at the frequency and amplitude specified for aDuration. + Completion is notified via the observer as for other CSoundPlayer + Play... services. + + TInt SoundUtilities::PlayTone(TInt aFrequency,TTimeIntervalMicroSeconds32 aDuration, + TInt aAmplitude,TDeviceVolume aVolume) + + This service opens and configures the sound device and plays a sine-wave + generated tone as specified, then closes the device. The function only + returns after the tone has finished playing. + + The TDeviceVolume parameter maps onto the sound device volume settings. + Experimenting with the device volume and amplitude values is recommended + for getting a good tone volume... + + +Version 0.06.071 +================ +(Made by AjThoelke, 24 April 1997) + +1. Uses E32/099, F32/069, STORE/042, E32TOOLS/063 + + Backwards binary compatible with 070, but not forwards + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Size of BAFL.DLL: 27,748 bytes (ARMREL) + 34,844 bytes (ARMDEB) + +2. Added new exported function + + static TInt CClipboard::Clear(RFs&); + + This will clear the clipboard of its contents. Initially it will + try to do this by truncating the file, if this fails then it will + attempt to delete the file. I the clipboard cannot be cleared the + error is returned + + +Version 0.06.070 +================ +(Made by AjThoelke, 22 April 1997) + +1. Uses E32/099, F32/069, STORE/042, E32TOOLS/063 + + Binary compatible with 069 + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Size of BAFL.DLL: 27,564 bytes (ARMREL) + 34,656 bytes (ARMDEB) + +2. Fixed SW-3879. Over-aggressive asserts have been modified to handle + abort states in CSoundData objects, and more graceful handling of + serious file server failures (i.e. not panicing). + + +Version 0.06.069 +================ +(Made by AjThoelke, 16 April 1997) + +1. Uses E32/098, F32/068, STORE/042, E32TOOLS/063 + + Binary compatible with 068 + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Size of BAFL.DLL: 27,504 bytes (ARMREL) + 34,572 bytes (ARMDEB) + +2. New Uid scheme adopted for MARM releasables. For MARM, requires + E32 098 for anything other than narrow release. + +3. Refixed SW-2836. The relevant parties have been beaten into submission: + + a) F32 will not report changes when the first 16 bytes of a file + are touched. + + b) The clipboard has reverted to the 065 behaviour: try to open, + if that succeeds truncate the file and carry on, if it fails + replace the file. + + c) The Shell will hold off from scanning for a short delay + before checking what's happened to allow files to have their + header written before the Shell interrogates their type. + + d) Components which are too slow even for this should be using a + temporary file to write to in the first place, and rename it to + the final destination once it is good (and typed). Temporary + files do not cause change notification. + +4. Revert following failure on CSoundData has been added to CommitHeaderL(), + ExternalizeL() and SaveL(). Previously a seek would have been required + to force it to revert. + + +Version 0.06.068 +================ +(Made by AjThoelke, 14 April 1997) + +1. Uses E32/097, F32/067, STORE/041 + + Binary compatible with 067 + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Size of BAFL.DLL: 27,364 bytes (ARMREL) + 34,452 bytes (ARMDEB) + +2. Fixed the T_SNDDA bug. I had been testing against BC test executables, + which did not pick up that the constant KSoundDataChunkLength had been + mangled (8 instead of 800). This would have also caused CSoundSampler + and CSoundPlayer to be broken. + + +Version 0.06.067 +================ +(Made by DavidW, 13 April 1997) + +1. Uses E32/097, F32/067, STORE/041 + + *Not* binary compatible with any previous version + (But source compatible with 065) + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Size of BAFL.DLL: 27,364 bytes (ARMREL) + 34,452 bytes (ARMDEB) + +2. Consolidated some code from CONE's CCoeActiveScheduler into + BAFL's CBaActiveScheduler (shame it will never make it all + the way into CActiveScheduler) + + Virtual function DisplayError() defined in CBaActiveScheduler + no implementation at BAFL level + + The CActiveScheduler function Error() now has the following + implementation in BAFL: + +EXPORT_C void CBaActiveScheduler::Error(TInt aError) const + { + if (aError==KLeaveExit) + User::Leave(KLeaveExit); + if (aError==KLeaveWithoutAlert) + return; + DisplayError(aError); + } + + New function DisplayExtendedError(), as follows + +EXPORT_C void CBaActiveScheduler::DisplayExtendedError(TUid aComponent,TInt aErrorNumber) + { // static + CBaActiveScheduler* pS=((CBaActiveScheduler*)CActiveScheduler::Current()); + pS->iExtendedError.iInformation=EFalse; + pS->iExtendedError.iComponent=aComponent; + pS->iExtendedError.iErrorNumber=aErrorNumber; + pS->DisplayError(KErrExtended); + } + + The difference between DisplayExtendedError() and eg + ExtendedLeave() is that the former calls Leave first, and + relies on the Error() function being called later. + Whereas the former calls the Error() function directly, + and is then free eg to retry the current operation. + + So, the assumption is that the Error() function will be + implemented "with wait". + +3. New test app T_SCHED testing the CBaActiveScheduler class + +4. Put two virtual Reserved_xxx() functions into CBaActiveScheduler + +5. Changed KUidBaflDll from 0x10000043 to 0x100004e to avoid a clash + +6. Fixed the MNT VALID verb + +7. Known limitations + + * the way DEF files get archived for WINS looks wrong + + * test code T_SNDDA hangs under ARM (and runs horribly horribly + slowly under WINS) - note this is true in 066 too and isn't + anything I have introduced + + +Version 0.06.066 +================ +(Made by AjThoelke, 11 April 1997) + +1. Uses E32/097, F32/067, STORE/041 + + To all known purposes: Binary compatible with 065. + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + +2. The protected interface of CSoundData, CSoundSampler and CSoundPlayer + has been privatised. This is for future BC purposes, and they couldn't + usefully be derived from anyway. + +3. System file and path names within BAFL (e.g. the clipboard) now use + capitalised names. + +4. CSoundSampler is now using a block length of 800 samples (previously + 400). This means that samples recorded with BAFL 066 will not be + playable with 065, but older samples will play happily on 066. + +5. CSoundSampler has gained TInt Volume() and void SetVolume(TInt). + These squeeze an extra bit of data into the persistent data of a sound + sample: the player/sampler do not utilise this information, it is + provided for the RECORD app. + + The limitation is that the repeat count is limited to 65535 (big deal + eh?), and the volume stored must be in the range 0-65535. + +6. Unfixed SW-2836. The file system now reports changes even if the header + of a file is re-written so the scheme in place was not effective. + Clipboard is still being replaced every time now. + + +Version 0.06.065 +================ +(Made by AjThoelke, 9 April 1997) + +1. Uses E32/096, F32/065, STORE/040 + + Binary compatible with 064 except for one thing (see 2). + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + +2. The two extended errors for clipboard use have been removed. This upsets + the enum ordering in BAERROR.H and introduces an incompatibility if you + use this enumeration. I understand this affects almost nobody: certainly + no-one who has yet built against BAFL 064, and so have been advised to + let this one slip in at this stage. So if you do include BAERROR.H, make + sure you compile against 065 not 064. + +3. All MARM releasables are pre-PETRAN'd, so get rid of your obey file + UIDs for BAFL. + +4. Sampled alarm sounds now live in \system\alarms\, previously + \system\sounds\, as this better reflects what this directory is used + for. + +5. Fixed bug SW-2836. The clipboard now attempts to open the clipboard file + and truncate it, rather than always replace it, in order to prevent the + clipboard generate unecessary change notification. + +6. Fixed bug SW-2721. If the clipboard store has no root stream when + destroyed, the clipboard file is deleted. This handles any case of + failure during copying to the clipboard. Note that the first thing that + happens during a paste operation is that the current contents of the + clipboard are discarded. + +7. Modified the behaviour of the clipboard when trying to read when the + clipboard does not exist, is being copied to, is corrupt or otherwise + damaged. In all these situations an empty CClipboard object is returned + from CClipboard::NewForReadingL[C](). More serious errors (or OOM) are + reported as normal. + + These situations are all considered to be equivalent to there being no + data to paste from the clipboard, and will therefore be handled already + by the code which attempts to find some suitable data type in the + clipboard stream dictionary. + + This has resulted in the two clipboard extended errors being no longer + required. + +8. New releasables: + + WINSCPR contains DEF files for all WINS builds of compressor DLLs. + EMARMCPR contains FRZ files for all MARM builds of compressor DLLs. + + They require that the DLLs exports a function with the prototype: + + CCompressorBase* NewCompressorL(); + + See the dummy compressors which are part of the BAFL source for examples + of how to build them for WINS and ARM: WINS adds a /def option to the + linker command line, MARM uses freeze file technology. + + These releaseables are extracted to \epoc32\release\wins and + epoc32\release\marm as part of MNT GETREL. + + +Version 0.06.064 +================ +(Made by AjThoelke, 7 April 1997) + +1. Uses E32/096, F32/065, STORE/040 + + Binary incompatible with 063. + Source compatible with 063 with the exception of the CFindFileByType + class. + + WINS release, debug, unicode release and unicode debug + ARM release, debug, unicode release and unicode debug + + Further review for the purposes of binary compatibility issues and + conversion from export to inline has resulted in more changes. + +2. WINS builds are now link-by-ordinal. + +3. MARM builds now incorporate type-safe linkage: BAFL's uid3 is 0x10000043. + +4. Added CBaflUtils::NearestLanguageFile(RFs& aFs,TFileName& aFileName). + This has been taken from the EIKON utility of the same name. The last + two characters of the filename are replaced with the language code if + such a file exists, otherwise the name is left unchanged. + +5. CFindFileByType now has the following API: + + CFindFileByType(RFs& aFs); + ~CFindFileByType(); + TInt FindFirst(const TDesC& aName,const TDesC& aDir,const TUidType& aType); + TInt FindNext(); + const TEntry& Entry() const; + const TParse& File() const; + + Following construction, the object can be used for mulitple finding + sessions. + + To initiate a find, call FindFirst(): the name can have wild + cards, any path information not in aName is taken from aDir. A file type + is also specified in aType. For any Uids in aType which are not KNullUid, + a matching file will have the same Uid in that position. i.e. to find + document files use TUidType(KNullUid,KUidAppDllDoc). + + FindFirst() returns KErrNone if it has found a match, FindNext() will + continue to search for the next matching file. KErrNotFound is returned + when there are no more matches, any other return is an error code. + + When a matching file has been found, Entry() returns the TEntry for that + file, and File() returns a TParse object containing the parsed full name + for the file. + +The following changes do not affect source compatibility: + +6. CEnvironmentChangeNotifier now takes a const TCallback& in its NewL() + and Set() members. Previously took TCallBack&. + +7. Various exported functions are now inline as befits their purpose. + +8. CDesC8Array constuctor is now protected, CDesC8ArrayFlat has a exported + destructor to reduce extra vtable generation in any sub-classers. Ditto + for CDesC8ArraySeg, and the unicode variants. + +9. TLibAssoc has a general base class TLibAssocBase, to hold the common + code, reducing the template generated code, and also removes the + templated assertion (now in TLibAssocBase). + +10. Improved the performance of the TResourceReader class. + +11. Factored common code in RIncrMatcherBase to reduce code volume. + + +Version 0.06.063 +================ +(Made by AjThoelke, 2 April 1997) + +1. Uses E32/095, F32/064, STORE/040 + + Binary compatible with 062 + + WINS release, debug, unicode release and unicode debug + ARM release and debug + + Following full review of BAFL code, I have fixed some bugs (see below) + and tidied some other code resulting in some code savings. There are a + few outstanding binary-incompatible changes that are on the waiting list. + +2. Fixed CEnvironmentChangeNotifier to close the RChangeNotifier when it is + destroyed. + +3. Fixed RTextBuf to use the delete [] operator as it is using the new [] + operator. Previously it was not using the array delete operator. + +4. Major fixes to SoundUtilities: No non-leaving functions can now leave, + no alloc heaven following failures at any stage, private static members + are now local static to the source file and removed from the class + declaration. + +5. Fixed SW-2001. Duplicate names in the list of alarm sounds or samples + are ignored. This matches the behaviour of CSoundPlayer: as soon as a + viable sound is found which matches the name, it is played. + + Note that this means it though may be possible to save an sample as an + alarm called "Chimes", it'll never get played as an alarm while an + algorithmic sound of the same name exists. + +6. Revised code for CFindFileByType to attempt a reduction in stack usage + by TFileName and TParse objects, to reduce code size, and to eliminate + problems when handling failures. + +7. Removed unecessary (inline) copy constructors from TCellRef and + TRangeRef. + +8. Included s32file.h into baclipb.h as CClipboard::Store() requires the + derivation relationship between CFileStore and CStreamStore. + +9. CClipboard::CopyToL(const TReal&) now commits the stream it has written. + +10. The clipboard has been moved from the very strangely named + c:\system\clipbd\main.sto to the somewhat more sensible sounding + c:\system\data\clipboard + +11. Beefed up CSoundData's handling of in-place sample files being corrupt + or requiring truncation when opened or following (serious) failure. + + + +Version 0.06.062 +================ +(Made by AjThoelke, 26 March 1997) + +1. Uses E32/094, F32/063, STORE/038 + + Binary compatible with 061 + + WINS release, debug, unicode release and unicode debug + ARM release and debug + +2. Fixed a bug when recording to the end of a just-opened sample, which + resulted in data loss, and end of file errors. + +3. Correctly update the current position during recording when a compressor + is in use. + +4. Avoid a panic from CActive when abandoning the background indexing, and + ensure the sampler restores its active priority as necessary. + +5. Allow UseSeekIndexL to be called any number of times without causing + stray signals, or other nasty problems. + + +Version 0.06.061 +================ +(Made by AjThoelke, 26 March 1997) + +1. Uses E32/094, F32/063, STORE/038 + + Binary compatible with 060 if you are not the RECORD app. + + WINS release, debug, unicode release and unicode debug + ARM release and debug + +2. Renamed CSoundPlayerRecorder to CSoundSampler, similarly for its + observer. + +3. Fully construct the CTimer part of CSoundSampler, previously this + caused a panic when playing a sample. + +4. Added CSoundSampler::TruncateL() to truncate the sample to the current + position. + +5. Implemented a compressed sound data manager. This can use a temporary + index to enable fast random seeking in the sample. + + The default is not to have one, as it is not needed for playing sounds, + enabling it will result in an index being built as the sound is + played (and so can cause OOM errors while playing). Compressed samples + do not allow random seeking without the index, only seeking to the + beginning or end of the sample. + + CSoundSampler::UseSeekIndexL() will enable the indexing, and will cause + the sampler to build the index in the background, which is abandoned + whenever another operation is started. + +6. Generally improved the robustness of the sampler when recording + terminates in resticted memory or disk space scenarios, and ordered the + file header re-writes to maintain document integrity in the presence of + failures. + + +Version 0.06.060 +================ +(Made by AjThoelke, 25 March 1997) + +1. Uses E32/094, F32/063, STORE/038 + + For most people: Binary compatible with 059. + Binary incompatible if you use any of the functions + + CSoundData::NewL(CStreamStore&,TStreamId); + CSoundPlayerRecorder::NewL(MSoundPlayerRecorderObserver&,CStreamStore&,TStreamId); + CSoundData::SaveToL(RFile&); + CSoundPlayerRecorder::SaveToL(RFile&); + + (This should only be the RECORD app). + +2. The two NewL() functions above now take a const CStreamStore&. + +3. The SaveTOL() functions have morphed into: + + SaveL(RFile& aNewFile,TBool aUseNewFile=EFalse); + + The sample is saved into the new file passed in. If aUseNewFile is true, + then the sampler starts using the new file, and closes the old file. If + false (the default) the new file is closed following this function. + + On any failure, the new file is closed automatically. + +4. Added CSoundPlayer::SoundType() returning TSoundType, which is one of + ESoundAlgorithmic and ESoundSample. This reports the type of sound + last played (or currently playing) using this object. + +5. Exported SoundUtilities::SoundStreamIdL(CPersistentStore&) to extract + the sound stream id from the stream dictionary in sound samples. + + +Version 0.06.059 +================ +(Made by AjThoelke, 24 march 1997) + +1. Uses E32/094, F32/063, STORE/038 + + Binary incompatible with 058. + + WINS release, debug, unicode release and unicode debug + ARM release and debug + + The main thrust of this release is to re-engineer the sound services to: + + * enable in-place recording of sound samples + * modify the sound sample data format to improve seek performance + * remove the TRequestStatus asynchronous API. + + Meanwhile I have totally revamped the API for the CSoundPlayer, + CSoundPlayerRecorder and CSoundData classes. Code which does not use any + of the sound classes or utilities will not need any modification to use + this new version of BAFL. + + This release comes not entirely tested, and not entirely complete, in + order to freeze the API now, rather than later. Binary compatible + releases will be forth coming as the missing code is added and tested. + +From NeilD + +2. Transferred the utility EikThread::ExtractAppNameFromFullName(...) + from EIKON to BAFL, now BaflUtils::ExtractAppNameFromFullName(...). + This will be removed from EIKON as and when appropriate. + +From AndrewT + +3. CBulkData has been removed from the public API. + +4. CSoundPlayer is similar to its previous API: + + static CSoundPlayer* NewL(MSoundPlayerObserver& anObserver,RDevSound& aDev); + void PlaySoundL(const TDesC& aName,RFs& aFs); + void PlayFileL(const TDesC& aName,RFs& aFs); + void PlayAlarm(const TDesC& aName); + void PlayAlarm(TInt aAlarmIndex); + void PlayFallBackAlarm(); + void Stop(); + TBool IsPlaying() const; + + To replace the I/O Semaphore API for notification of completion, an + MSoundPlayerObserver object is required. It's virtual PlayComplete(TInt) + member is invoked when the player has finished playing any sound, + passing any completion status as a parameter. Note that the player + still requires an active scheduler to be running to operate, but is no + longer itself an active object. + + Playing alarm sounds is guaranteed to not fail. PlayAlarm(const TDesC&) + attempts to find an alarm of the given name and play it, otherwise the + fall-back alarm is played. PlayAlarm(TInt) is as before, playing the + alarm by index. + + PlayFileL(...) will try to locate the named sound file and play it, + leaving on any error. PlaySoundL() will first try to find an alarm of + the given name, and if none is found will try to find the named sound + file, reporting an error if no such file exists. + + Stop() will synchronously terminate the current sound playing, and will + not cause the observer to be notified. + + IsPlaying() just reports whether a sound is currently being playing by + the object. + +5. CSoundData API has totally changed. It supports embedded or in-place + sound samples. It no longer uses temporary file for temporary storage, but + a chunk instead. This means that spontaneous death will not eat up + precious disk (& memory) space. + + The API is now expressed entirely in terms of byte positions within + the Alaw Sound sample, but provides conversion functions to and from + microseconds. + + Uncompressed sound data now supports immediate seeking to any position + in the sample. The compressed data manager has not been implemented yet, + and, selecting a compressor will currently result in uncompressed data. + + Recovery on failure and truncation of the sample in the face of OOM or + DiskFull errors are still being worked on, and have yet to be tested. + +6. CSoundPlayerRecorder has had its API changed as well. It also uses an + observer, rather than I/O semaphore to mark completion of its services. + This class has not been tested yet. + +7. CCompressorList has had some of its members name's changed. + Functionality is unchanged and still obvious. + + +Version 0.06.058 +================ +(Made by SteveG, 12-Mar-1997) + +Uses +E32 (091) +F32 (060) +STORE (037) + +1) Uses new sound driver functions for determining how many bytes have + been played, needed as the Record app now sets the sound drivers + buffer to 8000 bytes, and there will nearly always be 1 second of + sound remaining to be played when the end of the sample sound file + is reached + +Version 0.05.057 +================ +(Made by SteveG, 04-Mar-1997) + +Uses +E32 (090) +E32UTILS (008) +F32 (058) +STORE (036) +E32TOOLS (051) +EIKTOOLS (120) +RCOMP (313) + +1) Fixed panic when cancelling sounds played by PlaySoundFileByName. This + was not initialising the iDevSound property + +Version 0.05.056 +================ +(Made by SteveG, 03-Mar-1997) + +Uses +E32 (090) +E32UTILS (008) +F32 (058) +STORE (036) +E32TOOLS (051) +EIKTOOLS (120) +RCOMP (313) + +1) Altered the sound file format to store the uncompressed length of + each chunk, to speed up the seek functions. They no longer need + to read the chunk data in order to work out the duration of the + decompressed chunk + +Version 0.05.055 +================ +(Made by DavidW, 02-Mar-1997) + +Uses +E32 (090) +E32UTILS (008) +F32 (058) +STORE (036) +E32TOOLS (051) +EIKTOOLS (120) +RCOMP (313) + +Not binary compatible with any predecessor + +Size of BAFL.DLL: ArmRel 28,596 bytes, ArmDeb 32,036 bytes + +1) Upgraded to the latest releases of all upstream components + +2) Removed the TBoundedArray classes (and their test code) + +3) Removed the box layout classes (and their test code) + +4) Removed the function BaflUtils::ExtractMnemonic() + +5) Removed the function TResourceReader::SetJustBuffer() + +6) Brought the contents of \bafl\src\empty.cpp up to date + +7) Removed all reference to the #define __BAFL_B6__ and removed all +code branches in which this macro was *not* defined + +8) Added the class CBaActiveScheduler, containing code that ought to +migrate shortly into CActiveScheduler (and User and DThread). This +contains support for a grown-up error number system for the first +time. For further details, see the discussion in the EPOC32 Software +Design database on Notes + +9) Moved the functions Exit() and LeaveNoAlert() from +CCoeActiveScheduler to CBaActiveScheduler (and slightly changed their +implementation, to avoid some theoretical problems) + +10) Added the header file BAERROR.H containing Bafl-specific error +numbers, for the classes RResourceFile and CClipboard; improved the +code in BARSC.* and BACLIPB.* by taking advantage of this new scheme + +11) Changed the TInt ConfirmSignature function of RResourceFile into +a void ConfirmSignatureL function instead. If the resource file +fails to have the expected signature, this function now does a custom +KUidBaflDll Leave with KErrBaflWrongResourceFileSignature + +12) Changed the CClipboard class to do a custom KUidBaflDll Leave +with KErrBaflClipboardDoesNotExist in the case of (you guessed it) +the clipboard not existing. The Leave sets the "Information" bit, so +that the UI (ie Eikon level) should display an info message rather +than an alert dialog + +13) Modified the test code T_CLIPB in line with the above changes. + +Some limitations to report: + +The WINS UREL version of T_SPYRC intermittently crashes inside an +ASSERT_DEBUG in the sound driver. + +T_CELL gets lines 33-38 marked as "Unreachable code" when compiling +for Release mode under WINS. + +I suspect the class CFindFileByType ought to be removed too, being +superseded by F32 functionality. + +The T_BAFL.IBY hard-wires the location of T_RSC.RSC to a REL +directory, so it doesn't manage to build an ArmDeb ROM image unless +you've already built the ArmRel one. + +I had real difficulties in persuading the NMAKE for the ArmDeb build +to run at all, and only got it to run when I deleted all files on the +drive and re-installed from the network. Something needs +investigating further here! + + +Version 0.05.054 +================ +(Made by MartinB, 28-Feb-1997) + +Uses +E32 (089) +E32UTILS (006) +F32 (055) +STORE (035) +E32TOOLS (051) +EIKTOOLS (120) +RCOMP (313) + +1) Changed ReadALawData() and Read() to take a TBool to indicate + whether to read the data or just perform a seek to the file + position that would result if that read took place. This is + used to dramatically decrease the time taken when seeking to + a time in a sample. SeekToTime() now calls ReadALawData passing + in EFalse to indicate not to read the data. However, if a + compressor is in use, then the read must take place and the + TBool argument is ignored. (SteveG) + +2) Made some improvements to the TCellRef and TRangeRef classes. In +particular: + +a) Inlined some functions +b) Default constructors no longer initialize values to zero. +c) Removed unnecessary operator=() functions. + + +Version 0.05.053 +================ +(Made by Natasha, 07-Feb-1997) + +Uses +E32 (086) +E32UTILS (005) +F32 (050) +STORE (034) +E32TOOLS (051) +EIKTOOLS (119) +RCOMP (113) + +From Natascha: +1) The new clipboard functions CopyToL(const TReal& aReal) and +PasteFromL(TReal& aReal) were mistakenly declared as IMPORT_C in the +source file - changed them to EXPORT_C. + + +Version 0.05.052 +================ +(Made by SteveG, 03-Feb-1997) + +Uses +E32 (086) +E32UTILS (005) +F32 (050) +STORE (034) +E32TOOLS (051) +EIKTOOLS (119) +RCOMP (113) + +From SteveG: +1) Changed ReadDataL() in BABUKDA.CPP to use the store functions + for copying to and from stores and files, rather than copying + 256 bytes at a time in a tight loop. This increase dramatically + the speed of creating a temporary sample file and saving samples + (thanks to AndrewT for this) + +Version 0.04.051 +================ +(Made by PeterJ, 30-Jan-1997) + +Uses +E32 (086) +E32UTILS (005) +F32 (050) +STORE (034) +E32TOOLS (051) +EIKTOOLS (119) +RCOMP (113) + +NOT binary compatible with BAFL 050. + + +BAFL.DLL is 36648 bytes long (release), 41164 (debug). + + +The box layout test code T_BLO is temporarily removed from the +rack list because it provokes an internal error in the current GCC +compiler. + + + + +From PeterJ: +CLEAN verb added to the MNT command set. + + +From NataschaK: + +CClipboard member functions to copy/paste real numbers. These are included +to provide common functionality. There are architectural questions to answer +here. Is this the right place for such functionality? Should there be provision +for other low level data types? + + + +From Brendan: +A. Changes to CSoundData +------------------------- + +1) CSoundData::SeekToTime to take const reference argument (instead of const) +2) Added EBafPanicBulkDataNoDestination which is used rather than + EBafPanicBulkDataNoDataExist when no destination is specified in CopyDataToL() +3) Grouped similar functions in header for CBulkData +4) The function CBulkData::DeleteDataFromTheEnd(TInt aLength) now + checks for a -ve value of length. + Added TInt TruncateDataAt(TInt aPosition); + to delete data from a given offset from the start. +5) Added various private utility functions to CBulkData: + TBool DoesFileExist(const TDesC& aFullFileName) const; + void EnsurePathExistsL(const TDesC& aFullPath) const; + void MoveFileL(const TParseBase& aDest,const TParseBase& aSource); + TPtrC BulkDataTempFilePath() const; + TPtrC TemporaryFile() const; + void SetTemporaryFile(const TDesC& aName); + void InternalizeL(RReadStream& aStream); +6) CBulkData::SaveToNewStoreL now uses 1 TParse, instead of 2 TParses and a TFileName +7) CBulkData::SaveToNewStoreL renamed to MoveToNewStoreL() + It now deletes the old file if it was on the same drive as the new, + as well as if on different drives. + Note that this function will delete all data + under error circumstances. +8) Made internal use of CBulkData::IsReady... functions +9) CBulkData::DeleteDataFromTheEnd() and truncate now return KErrNotReady if + there is no data, rather than KErrNotFound. + +B. Changes to CSoundData +------------------------- + +1) Grouped similar functions in header for CSoundData +2) DataPlayTime renamed to SamplePlayLength + DataBeingreadTime renamed to CurrentPosition +3) Added TotalPlayLength which takes into account trailing silence and repeats +4) Added various private utility functions + TCompressorPtr DoCreateCompressorL(TUid aUid) const; + TTimeIntervalMicroSeconds AlawBytesToMicroSeconds(TInt aBytes) const; + TTimeIntervalMicroSeconds operator+(const TTimeIntervalMicroSeconds& aLeft,const TTimeIntervalMicroSeconds& aRight) +5) Set a maximum of KSoundDataMaxReadChunkPlayLengthBytes=10000000 + for reading and writing chunks, to help check for corrupted data. This number should in fact never + exceed 1000. + +C. Changes to CSoundPlayerRecorder +----------------------------------- + +1) Grouped similar functions in header for CSoundPlayerRecorder +2) Extensive renaming of functions to clarify their roles. + Removed most ...SoundData.. from function names since this class + can no longer deals with any other kind of data. +3) Dropped IsSoundDataPresent since it was not being used anywhere +4) PrepareForUpdateL renamed PrepareForRecordL +5) SaveSoundDataTo becomes MoveSoundDataTo, since old data is deleted. Note that + the new store still needs to be opened before it can be used. + +D. Changes to CSoundPlayer +--------------------------- + +1) Uses two new private functions + PlayAlarmSoundByName + PlaySoundFileByName +2) inlined PlayFallBackAlarmSound to use PlayAlarmSound + +E. Changes to SoundUtilities +----------------------------- + +1) SoundUtilities::Populate makes use the new CDescArray::InsertIsq functions +2) SoundUtilities::SoundFileByName no longer validates that a file contains + a sound data stream. This function is now provided separately. This is to + help solve a problem in which corrupted files could not be deleted. +3) Added function DoesFileContainSoundDataL which returns true if a sound data + stream was found (It can leave when creating a store or the root stream). + + + + +Version 0.04.050 +================ +(Made by PeterJ, January 1997) + +Uses +E32 (085) +E32UTILS (005) +F32 (049) +STORE (033) +E32TOOLS (050) +EIKTOOLS (119) +RCOMP (113) + +NOT binary compatible with BAFL 049. + +This version was reput at 20:00 ish on 14-Jan-1997 with a bugfix +in the RResource class that caused it to unpredictably reject +a resource binary as corrupt. + +Size of BAFL.DLL release is 35,736 (40,072 in debug version). + +There remains an outstanding problem with the sound player that +shows up in the test code running under WINS only. + + +Changes +------- + +From history: +1) Remove the following RResourceFile member functions which have been + deprecated for some time but were left around for binary compatibility. + + TInt PositionToResourceL(TInt aResourceId,TInt &aDecodedLen) const; + void ReadResourceDataL(TDes8 &aDes,TInt aReadLen,TInt aDecodedLen) const; + (BARSC.H) + +From Brendan: +2) template + inline TBool TLibAssoc::IsNull() + + is now a const function. (BALIBA.H) + +3) added the following functions to CDesCArray (8 and 16 bit versions) + +IMPORT_C TInt InsertIsqL(const TDesC8& aPtr + ,TKeyCmpText aTextComparisonType=ECmpFolded); +IMPORT_C TInt InsertIsqAllowDuplicatesL(const TDesC8& aPtr + ,TKeyCmpText aTextComparisonType=ECmpFolded); +IMPORT_C TInt FindIsq(const TDesC8& aPtr,TInt& aPos + ,TKeyCmpText aTextComparisonType=ECmpFolded) const; + +These allow the insertion in sequence of descriptors into an array, +and for finding the descriptors from a sorted array. + +Note that this functionailty is already available for CPtrCArray variants. +The test T_PTRCA shows how this is done - it just requires that the user +create and use a : TKeyArrayFix key(0,{sort method}); + + +T_DESCA has been modified to at call these functions and ensure that they +work. It does not stress test them. + +T_PTRCA has been modified to show how to call the FindIsq and +InsertIsq functions. + + +From Simon Ch: +4) Added CClipboard::NewForReadingL(RFs& aFsSession). This is for use + by callers who don't know if the clipboard exists before they + attempt to paste. (BACLIPB.H) Test code added to T_CLIPB. + + +From AndrewT: +5) Modifications to allow resource data to be read out of ROM directly. + Affects BARSC and its test code and changes the RResourceFile class + signature slightly. + + +From PNJ: +6) Test code now compiles its own resources instead of using + stored resource objects. Affects T_RSC and T_RSREAD. + MNT procedure modified to get an explicit resource compiler + version. (may want to review the role of EIKTOOLS here). + +7) Resource file test code now deals with both 8 and 16-bit + text strings generated by RCOMP 3.13 or higher. + + + + + + +Version 0.04.049 +================ +(Made by Brendan, 20 December 1996) + +Uses +E32 (081) +E32UTILS (004) +F32 (045) +STORE (032) +E32TOOLS (049) +EIKTOOLS (119) + +1) size Arm release + BAFL.DLL 35,000 +2) Upgraded to new components. This release is not binary compatible, + and introduces the following new classes: + CFindFileByType,TLibAssoc<>,CSoundPlayer,CPtrCArray (and variants) + There are likely to be more changes in the sound utilities. +3) Incorporated a CSoundPlayer class from Julian, which is used to play sounds + by name. CSoundPlayerRecorder now only deals with file based sounds and not + algorithmic sounds. +- PlayByName() returns an error instead of leaving, to be consistent with the API + to algorithmic sounds. +4) Incorporate CFindFileByType from Julian, making some minor changes + to return the file name and extention of a found file and just the + file name (in TPtrC's). +5) Took advantage of CFindFileByType in the CSoundUtilities +6) Added CPtrCArray arrays - these are similar to CDesCArrays + but store an array of TPtrC's rather than the actual data. +- There is a CopyL function to copy any MdcaArray to a CPtrCArray. +- It can be used instead of CDesCArray in listboxes etc to reduce + duplicating memory, but care should be taken since it can + hold invalid data if the data that the TPtrC's point to, is deleted. +7) Added test code T_PTRCA for class CPtrCArray +8) TLibAssoc class to be used synonomously with a pointer to the + library associated class (ie a pluggable component). It contains a RLibrary + and a pointer to the class that the library has created. When this + pointer class is "deleted"(Unload()), the library is unloaded after the + the class has been deleted - ensuring that the destructor of the class is still + around during the deletion. See the test code T_LIBA for examples of how + it can be used. +- use a "TLibAssoc" instance instead of "CLibraryClass*", +- call "TLibAssoc.Unload()" instead of "delete(CLibraryClass*);" +- call "TLibAssoc.IsNull()" instead if "CLibraryClass*==NULL" +- TLibAssoc can be used with CleanupStack::PushL() and PopAndDestroy() etc. +- TLibAssoc is safe to use in applications because it does not rely on an + active object to unload the libraries. +- TLibAssoc should not be used to unload the Dll inwhich the TLibAssoc class + is defined, because the executed code must be in a different executable. +9) Dropped CLibUnloader +10) Changed sound utilities to compare alarm sound names with a fold comparison + since the file server wouldnt distinguish between the files. +11) Provided public SoundUtilities::PopulateAlgorithmicSoundsL() + and SoundUtilities::PopulateAlarmSoundFilesL() +12) Minor changes to BASNDDA.CPP to prevent possible overlfow errors + in calculations +13) Minor changes to T_SNDUT.CPP to check that sound files correspond + to their names +14) Added TheSoundDev.FlushPlayBuffer() and TheSoundDev.FlushRecordBuffer() + to T_SNDDA to prevent it from failing with KErrInUse + From comments in the test code, it looks as though this test needs to be + revisisted. + +Version 0.04.048 +================ +Made by Julian, 02-Dec-1996 + +Uses E32/079, E32UTILS/004, F32/044, STORE/032, + E32TOOLS/048, EIKTOOLS/119 + +BAFL ARM DLL sizes: 33148 (release) 37140 (debug) + +Stay compatible with previous releases. + +Use new E32/079 and upward components + +From Julian: +============ + +1. Checking the drive of the saved file name is the same as the +temporary file's drive name in CBulkData::SaveToNewStoreL() function. +If they are not the same, the CFileMan's Copy() and Delete() functions +will be usedinstead of the RFs::Replace() function as Replace() function +couldn't replace files between different drives. + + +Version 0.04.047 +================ +Made by PeterJ, 02-Dec-1996 + +Uses E32/075, E32UTILS/004, F32/042, STORE/030, + E32TOOLS/048, EIKTOOLS/118 + +BAFL ARM DLL sizes: 32908 (release) 36908 (debug) + +Main modifications to stay compatible with baser releases. + +NB. The debug build test code tends to display some Store + notifier messages. This seems to be a common phenomenon. + + The T_SNDDA test code seemed to hang once in the WINS release + build while supposedly playing a sound. Could not reproduce, + but the recent sound driver changes in E32/075 may be relevant. + +From PeterJ: +============ + +1. BAFLVER.H once again reflects the release version numbers. + (Thanks to Brendan for pointing this out) + +2. TRangeRef::TIter::InRange() is now declared const. (As pointed + out by Lane) + +3. Instances of KNotFound return values replaced with KErrNotFound + instead. (In incremental matcher code) + Also instances of KErrDoesNotExist replaced with KErrNotFound. + (Bulk data code, sound player code) + +4. Obey include files BASE.IBY and EWSRV.IBY updated to reflect + UID3 values now defined in E32. Note that the uid3 parameter + has to be in LOWER CASE before it can be recognised. + +From DW2: +========= + +1. CClipboard::Store() now returns a CStreamStore instead of a + CFileStore reference. + + +Version 0.04.046 +================ +Made by PeterJ, 23-Nov-1996 + +Uses E32/074, E32UTILS/003, F32/040, STORE/029, + E32TOOLS/045, EIKTOOLS/118 + +This is not binary compatible with 045. + +Size of ARM BAFL.DLL: 32,896 (Release), 36,384 (Debug). + +From PeterJ: +============ + +General modifications required to support the wide-character +build variant of BAFL. This functions in the WINS release but +not yet in the ARM release. + +Excruciating details can be found in + +file:////sentinel-main/upeterj/japan/notes/code_modifications.html#BAFL_046 + +In summary: + +1) Base address of the WINS BAFL.DLL changed from 61000000 to + 40100000 to conform with MartinB's new allocation scheme. + +2) Various minor corrections where generic descriptors were being + used to refer to non-text data. + +3) TResourceReader class member functions that were defined in terms + of generic descriptors have been extended to provide explicit + 8 and 16-bit data member functions. The caller must decide which ones + to use depending on whether they are meant to be reading text or + binary data. Functions affected are: + + ReadHBufCL, ReadTPtrC, ReadDesCArrayL. + +4) The CDesCArray and MDesCArray classes were defined in terms of 8-bit + buffers only. This family now has explicit 8 and 16-bit variants: + + CDesC8Array, CDesC16Array, MDesC8Array and MDesC16Array. + +5) Minor test code changes. T_RSC has a new compare function to allow it + to compare 8-bit resource strings with internally defined text descriptors. + T_RSREAD modified to use explicit 8-bit resource strings. This will be + revisited when the resource compiler supports Unicode strings. UIDs for the + dummy compressor files are now assigned in the make file instead of in + the MNT command file. + +6) Changes to MNT.CMD to support Unicode variants of BAFL. Later versions + of BAFL should now be released with MNT BLDUREL and MNT BLDUDEB steps + and the test code exercised after building with MNT BTSTUREL and BTSTUDEB. + + + +Version 0.03.045 +================ +Made by DavidW, 11 Nov 1996 + +Uses E32/074, E32UTILS/003, F32/040, STORE/029, + E32TOOLS/045, EIKTOOLS/118 + +Retains binary compatibility with 044 + +Size of BAFL.DLL (ARM): + 31,132 bytes (Release), 34,368 (Debug) + +Re-put at 11am 12th Nov, with: + +*) the class originally called CBaflChangeNotifier renamed to +CEnvironmentChangeNotifier, on the suggestion of MartinT + +*) improved T_CNTF test code, from Brenda + +*) an update to use the latest version of all system components (not +strictly necessary, except for MARMD ROMs on Proteas with 8Mb of RAM) + + +From DavidW: +------------ +1) Added some timing tests for resource file lookup in T_RSREAD + +2) Altered the way the RResourceFile class reads resources, to do a +seek-and-read together, rather than a seek followed by a separate +read. This resulted in a 30% speed improvement + +3) The two functions ReadResourceDataL() and PositionToResourceL() +of RResourceFile have been withdrawn from the public API (although +empty implementations remain until the next API thaw) + +4) Switched to EIKTOOLS/118 and therefore now default to doing a +MARMD release as well as a MARM one (whereas previously the default +was not to do one) + +5) Simplified ..\tsrc\bld.cmd to use setwhat.cmd + +Note that the steps required to build and test a new version of +Bafl are now + + MNT BLD followed by BTST then RTST for the Ascii Debug variant + + MNT BLDREL / BTSTREL / RTSTREL for the Ascii Release variant + + MNT ARMREL / ATSTREL / BLDIMG / REPRO for Gcc Release + + MNT ARMDEB / ATSTDEB / BLDIMD / REPROD for Gcc Debug + +Then MNT PUTREL as usual to release it. + +Note that if you are in a binary compatible phase, you need to rename + + BAFL.DEF -> BAFL.FRZ *and* BAFLD.DEF -> BAFLD.FRZ + +before doing the PUTSRC. + +From Brendan: +------------- +6) New class CEnvironmentChangeNotifier in the new module BACNTF.*; +this is an active object that executes a TCallBack when a change in +TLocale is detected through RChangeNotifier. Midnight rollover is +notified in the same way + +7) New test code T_CNTF for the CEnvironmentChangeNotifier class, +testing that the callback gets called when locale is changed and +after midnight crossover. + + +Version 0.01.044 +================ +Made by JulianL, 06 Nov 1996 + +Uses E32/072, E32UTILS/002, F32/038, STORE/028, + E32TOOLS/045, EIKTOOLS/114 + +Completely binary compatible with 043 + +From Julian: +------------ +1) Fix bug in CSoundPlayerAndRecorder::PlaySoundByName() function +so that it can play the same name again. Also the +CSoundPlayerAndRecorder's Cancel() operation will close the store +which holds the alarm sound opened by the above fountion. + + +Version 0.01.043 +================ +Made by DavidW, 29 October 1996 + +Uses E32/072, E32UTILS/002, F32/038, STORE/028, + E32TOOLS/045, EIKTOOLS/114 + +Upgraded to E32/072 et al. +Note the dependency on E32UTILS for the first time. + +Size of BAFL.DLL (ARM): + 30,660 bytes (Release), 33,764 (Debug) + +Re-put at 12:15pm 4/11/96 including MARMD releaseables; modest +changes were required in the *.?BY and *.CMD files to support this: + + *) the value of EXEUID now has to be passed in as a #define to +PREP, rather than being hard-wired in the BAFL.OBY file) + + *) MNT GETE32UTILS needed some lines adding to it, to fetch the +MARMD components too + +From DavidW: +------------ +1) Converted to the new WINS directory structure. All INSTxxx verbs +in the MNT.CMD are history + +2) Removed the template class MArray as over-complicated for what +it achieved; replaced MArray with MArrayDesC, and renamed the +header file MARRAY.H to BAMDESCA.H; recall that the role of the +MArrayDesC class is to define an abstract interface whereby an "array" +returns references to constant descriptors, without prejudice as to +how these descriptors are stored + +3) Renamed the functions of the above class to MdcaCount() and +MdcaPoint(), to avoid name clashes when multiply inheriting from both +a MArrayDesC and a "standard" array (see the example which has been +added to T_DESCA to demonstrate this case) + +4) Changed the implementation of CDesCArray to avoid the run-time +alloc inefficiencies of the previous implementation, albeit at the +cost of a thicker class (which publicly inherits functions from +CArrayFixBase that, from a purist point of view, it ought not to); +recall that the role of the CDesCArray classes are to provide an +efficient storage of an array of variable length descriptors, which +are passed into the array as TDesC& and retrieved as TDesC& (const in +both cases); there are CDesCArrayFlat and CDesCArraySeg variants; +whereas the MArrayDesC class only provides "read access" to that +array, the CDesCArray classes additionally provide "write" functions +such as AppendL, Delete, and InsertL + +5) The Find() and Sort() functions of CDesCArray now support an +optional TKeyCmpText parameter - which defaults in both cases to +ECmpFolded, with the same behaviour as before + +6) Based on some code from Duncan, added the class CClipboard to +Bafl, to replace the classes CReadClipboard and CWriteClipboard that +are currently in EText (but which are about to disappear); this new +implementation utilizes the CStreamDictionary class + +Note that this change will *not* require software components like +EText to become dependent on Bafl. That's because EText will supply +functions of the type + CopyToClipboardL(CStreamStore&,CStreamDictionary&,...) + PasteToClipboardL(CStreamStore&,CStreamDictionary&,...) +which operate at a level below that of the CClipboard class itself. +There are Store() and StreamDictionary() accessor functions in +CClipboard to return these components. See the new module BACLIPB.* + +7) New test code T_CLIPB which exercises CClipboard + +From Dan: +--------- +8) Fixed a bug in the InternalizeL() and ExternalizeL() functions of +TCellRef, which were only streaming TInt16's as opposed to TInt32's + +9) Added InternalizeL() and ExternalizeL() functions for TRangeRef + +10) For completeness, added operator!=() to TRangeRef + +11) Updated T_CELL test code to match the above + +From Julian: +------------ +12) Altered TBulkData::OpenL() to Leave rather than Panic if +incompatible data is found, to allow the application to take +appropriate recovery action + +13) Took advantage of RFs::Replace() rather than Rename(), to allow a +temporary bulk data storage file to be on a different drive from the +file it is about to replace + +14) The SeekToTime function of CSoundPlayerAndRecorder has been +altered to allow cancellation (eg during a lengthy seek operation). + + +Version 0.01.042 +================ +Made by DavidW, 27 September 1996 + +Uses E32 069, F32 035, STORE 024, E32TOOLS 042, EIKTOOLS 113 + +Size of BAFL.DLL (ARM): 28,084 bytes (inside ROM) + +Second attempt at B2-platform release for Bafl + +No changes apart from going up to E32/069 et al + + +Version 0.01.041 +================ +Made by DavidW, 25 September 1996 + +Uses E32 068, F32 034, STORE 023, E32TOOLS 042, EIKTOOLS 113 + +Size of BAFL.DLL (ARM): 28,084 bytes (inside ROM) + +1) This is the B2 day release, built in synch with E32/068 et al + +2) The API of Bafl will now remain frozen until some time after +B2-day + +3) From Julian: added a new function for CSoundPlayerAndRecorder to +return the compressor UID used by the sound data + +4) This is the first Bafl to support a Debug MARM ROM image. To +fetch the additional components necessary to build this, you have to +set the environment variable need_marmd before invoking the GETBLD. +Then the verb MNT ARMDEB builds a debug Bafl.DLL for ARM, MNT ATSTDEB +does the same thing for the test code, and MNT BLDIMD builds a debug +ROM image file, BAF041P?.IMD + +5) For reference, inside the ROM, the Debug BAFL.DLL is 31092 bytes +long, compared to 28084 bytes in Release mode + +6) So long as need_marmd remains set, the PUTREL puts a MARMD +release component on the network, as well as the standard set. + + +Version 0.01.040 +================ +Made by DavidW, 9 September 1996 + +Uses E32 067, F32 032, STORE 021, E32TOOLS 040, EIKTOOLS 109 + +Size of BAFL.DLL (ARM): 31,984 bytes + +"Binary compatible" re-release, with the changes to filepaths as +required by the changes in F32/032: + +1) The "temp" directory is now c:\system\temp in all builds + +2) The path searched for sound compressor DLLs is now \system\libs +in all builds + +3) Added INST INSTDEB and INSTREL verbs to MNT + +4) Call MNT INST inside MNT RTST and MNT INSTREL inside MNT RTSTREL + +5) MNT MAKEDIR makes several more directories, as are now required +in the emulation drives + +6) Changes to the *.OBY files - partly as required by upgrading to +E32TOOLS/040 - note that you now put in REPRO.EXE rather than +REPRO.RAM, and all references to REPRO.RAM can be removed + +7) Removed a whole lot of #ifdef Xxx variants code from the test +code, since it can now be the same in all variants. + + +Version 0.01.039 +================ +Made by DavidW, 4 September 1996 + +Uses E32 066, F32 031, STORE 021, E32TOOLS 039, EIKTOOLS 109 + +Size of BAFL.DLL (ARM): 31,984 bytes + +From Julian: +------------ +1) Added two new functions, each called SeekToTime(), to the sound +services classes - one for CSoundData and the other for +CSoundPlayerAndRecorder + +2) Modified test code to match + +3) Other minor internal changes to sound services code + +From DavidW: +------------ +4) Removed the last trace of *.INL files from \bafl + +5) Moved some template code out of line, to avoid downstream +compiler warnings + +6) MNT TOOLS now presupposes that the tools should be fetched to +\epoc32\tools on the local drive, ie any value of %drv% is ignored + +7) The call to PREP in MNT BLDIMG is no longer preceded by a path to +PREP (ie %drv%\tools\); ie I now assume that PREP (in t:\tools or +c:\tools) is in your path and is high enough up it + +8) Simplified parts of MNT.CMD by copying things from EIKON, ie the +calls to _GETCOMP.CMD + +9) Moved the dummy compressors out of the build of BAFL itself, into +the build of its test code + +NB Some of the test code fails under WINS, due to a known defect in +F32, but it all runs fine under GCC. + + +Version 0.01.038 +================ +Made by DavidW, 28 August 1996 + +Uses E32 V066, F32 V030, STORE V020, E32TOOLS V039 + +Size of BAFL.DLL (ARM): 31,468 bytes + +1) First Bafl release in the post E32/065 world (new directory +structure and all that) + +2) Completely rewrote large parts of MNT.CMD. Changed over to the +new sets of released components (but only release the WINS, WINSD and +EMARM sets, together with the WINSDDB debugging files) + +3) Re-did every *.MAK file, and removed every *.MDP file from the +LI.PRJ source file listings + +4) Took advantage of some of the new Store API to simplify some of +the code and test code (the new way that the RLibrary::Load() et al +functions work helps too!) + +5) Another Great Step Forward is that "mnt getcomps" now takes +*much* less time than before (because I no longer need to bother +fetching all these obscure Greek Hebrew etc variants that the Base +team used to package irretrievably bound up with the genuine +articles, but which are now happily separated into their own released +components + +6) Got fed up with *.OBY files being so un-maintainable. The +contents of my BAFL.OBY is now + + #define NOCALL nocallentrypoint + + romname=baf##ROMVER##ROMVAR##.img + version=0.01(##ROMVER##) + + #include "header.iby" /* data definitions */ + #include "base.iby" /* standard Base components */ + #include "ewsrv.iby" /* text window server */ + + file=RELDIR\eshell.exe system\libs\eshell.exe NOCALL + file=RELDIR\estor.dll system\libs\estor.dll NOCALL + + file=RELDIR\bafl.dll system\libs\bafl.dll NOCALL + + #include "t_bafl.iby" /* Bafl test files */ + + file=RELDIR\d_exc.exe system\progs\d_exc.exe + + file=RELDIR\d_gdb.exe system\progs\d_gdb.exe + data=RELDIR\repro.ram system\progs\repro.exe + +which ought to improve maintainability. + +The files header.iby, base.iby ought in time to become standards, +shared by all downstream components (I'll define other *.IBY files +further down the set of software releases) + +7) Note that you *still* need to PETRAN the released file REPRO.EXE +into REPRO.RAM before you can expect to create a repro-able ROM + +8) Watch out that you'll get lots of warnings, when compiling under +Gcc, about the HShareBuf class from Store - you can safely ignore all +these warnings, but you ought to pay attention to any others, as per +usual + +9) BAFL has a working MNT VALID verb for the first time ever. It's + + :valid + if not exist ..\valid\nul md ..\valid + cd ..\valid + call getrel %_vgroup% emarm %_par% + petran %_vgroup%.dll %_vgroup%.net + petran \epoc32\release\marm\rel\%_vgroup%.dll %_vgroup%.bld + pediff -e32 %_vgroup%.net %_vgroup%.bld + call cont %g% %p% + goto end + +which, as you can see, restricts itself to testing the built BAFL.DLL +(Gcc REL version) against one prepared and released earlier. So, go +to a clean drive, type + + pgetbld bafl group 038 + [ mnt gete32tools ] + mnt armrel + mnt valid + +and you should see the following reassuring message on the screen: + + PEDIFF - PE file compare V0.01(039) + E32 image files are identical. + + +Version 0.01.037 +================ +Made by DavidW, 15 August 1996 + +Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036 + +Size of BAFL.DLL (ARM): 31,980 bytes + +From Julian: +------------ +1) Added two new functions to the sound services: + + CSoundData::DataBeingReadTime() and + CSoundPlayerRecorder::SoundDataBeingReadTime() + +to assist applications to display their playing status + +2) Other internal changes to the sound services code and test code + +From DavidW: +------------ +3) Altered the MNT.CMD and BAFL.OBY files of Bafl, bringing them +closer to the model of Nokie's. In particular, MNT BLDIMG now +defaults to producing a P1 (reprogrammable) variant ROM image + +4) Added REPRO and FIXREPRO verbs to MNT. + + +Version 0.01.036 +================ +(Made by JulianL, 09 August 1996) + +Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036 + +Size of BAFL.DLL (ARM): 28,004 bytes (With the new Sound service, extra +10K bytes are added). + +1) Added new class CBulkData which is an interface to streamed data +that provides fast data manipulation within minimal overhead. The data +is stored in temporary files, which may provide more storage space than +RAM. Also the temporary file can be renamed to a proper saved file name. + +2) Added new class CSoundData which provides access to sound data. It is a +specialization of CBulkData, which provides read/write access to the data +and to the header information. The data has to be read as chunks and this +class provides a mechanism for ensuring the chunks are kept in tact and keeps +the total play time correct. The header of the sound data contains the +compressor UID which is used to create relevant compressor to decode or +encode the data. + +3) Added new class CCompressorBase which provides the generic interface for +future compressors. The compressors will be used to compress the sound data. +A new CCompressorList class is created to contain an array of names, capabilities +and UIDs of the compressors in the list, which is useful for displaying +informations of the compressors. + +4) Added new static class SoundUtilities which can populate a CDesCArray with +alarm (algorithmic) sounds and sound files in the hardwired search path. The +path is *:\SYSTEM\SOUNDS\*.SND. It can also return the full path file name of +the sound data with a given name. + +5) The "SoundUtilites" can also populate the CCompressorList with the +available compressors provided by the system. Each compressor appears as a DLL +with the extension *.CPR. Two dummy compressors (DUMCM1 and DUMCM2) have been +created to show the possibility of plugable compressors. Therefore, future +compresssors can be pluged into the system easily. The SoundUtilities can also +return the compressor by searching through the system directory on all drives +with the specified UID. This is particular useful for CSoundData to create +compressor. The MNT's "bld" and "bldrel" commands will automatically attach +the correct UIDs for both dummy compressors. But if you compile the dummy +compressors using MSVC (not MNT's "bld" or "bldrel" commands), you need to +use the E32UID to attach the correct UIDs into their WINS release of DLL +which are in \e32sys directory. +(ie. E32UID /a DUMCM1.cpr 290000001 268435539 299999001 + E32UID /a DUMCM1D.cpr 290000002 268435539 299999001 + E32UID /a DUMCM2.cpr 290000001 268435539 299999002 + E32UID /a DUMCM2D.cpr 290000002 268435539 299999002, +The first UID is temporary as later different builds will be put in different +directorys. The second UID is the KSoundCompressionV1Uid specified in Notes, +The third UID are dummy values set for the dummy compressors. In the future, +the real compressor will put their UID (third Uid) into Notes.) + + +6) Added new class CLibraryUnloader which is an active object for unloading a +given library when the current activated active object finished. This is particular +useful for the compressors to unload their librarys during destruction phase. +If the library is closed before the destruction completed, an access violation +will occur. Therefore, the compressor requires this library unloader to unload +their librarys after their destruction completed. + +7) Added new class CSoundPlayerRecorder which can play and record sound data. +It can also play the alarm (algorithmic) sound. This sound player and recorder +allows user to cancel the play or recording at any time as it is an active object. + +8) Added new test codes to test the above new classes ie. +T_BUKDA tests the CBulkData, +T_SNDUT tests the SoundUtilities, +T_SNDDA tests the CSoundData and the use of dummy compressors, +T_SPYRC tests the CSoundPlayerRecorder. + + +***Note that when running the test codes on the rack, you will experience crashes +as there is a bug in F32's GetDir() function which cannot find the attached UID of +a DLL. Jal has already found the bug and the next release of F32 will have the +fix. For the time being, when you build the rom image, you copy the EFSRV.DLL, +EFILE.EXE, ELOCAL.FSY and ESHELL.EXE files from r:\BAFL\TEMP directory to your +\WORK\EMARM directory.*** + + + +Version 0.01.035 +================ +(Made by DavidW, 31 July 1996) + +Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036 + +Size of BAFL.DLL (ARM): 18,876 bytes + +*** Re-put 12noon 1st Aug, binary compatible, with a tweak to +BAMATCH.H to avoid Gcc compiler woes downstream *** + +Release in synch with E32/064 et al: + +1) Changed the interface to the TBoundedArray class so that its +Append function works by reference rather than by pointer, the same +as the arrays in the base + +2) Commented out some references to Hufman decompression, since this +functionality no longer exists in TDes. + + +Version 0.01.034 +================ +(Made by DavidW, 9 July 1996) + +Uses E32 V063, F32 V027, STORE V017, E32TOOLS V034 + +Size of BAFL.DLL (ARM): 18,880 bytes + +1) Changed the interface to CDesCArray to use const TDesC& rather +than const TDesC*; as well as being "the right thing" to do, this +also helps avoid some annoying Gcc compiler warnings (about taking +the address of temporaries) downstream. + + +Version 0.01.033 +================ +(Made by DavidW, 8 July 1996) + +Uses E32 V063, F32 V027, STORE V017, E32TOOLS V034 + +Size of BAFL.DLL (ARM): 18,880 bytes + +The new compiler resulted in a 14.3% codesize reduction (11.7% due to +the compiler improvements themselves, and the rest due to getting rid +of explicit template instantiations) + +1) Release compatible with E32/063 etc + +2) I've now got -g-Wno-ctor-dtor-privacy after every call to maktran, +to stop going mad on account of idiotic Gcc warning + +3) OTOH the other "new" warning, about taking the address of a +temporary, is "a good thing", and I rearranged some (test) code to +avoid it + + +Version 0.01.032 +================ +(Made by DavidW, 23 May 1996) + +Uses E32 V059, F32 V023, STORE V014, E32TOOLS V023 + +Size of BAFL.DLL (ARM): 22,020 bytes + +*** Rebased using J-Day components, 4th June 1996 *** + +*** Modest changes to admin files, as required by new components *** + +From DavidW: +------------ +1) Rebuilt compatible with STORE 014. + + +Version 0.01.031 +================ +(Made by DavidW, 20 May 1996) + +Uses E32 V059, F32 V023, STORE V013, E32TOOLS V023 + +Size of BAFL.DLL (ARM): 22,020 bytes + +From MartinB: +------------- +1) New Bafl module BACELL.* containing the classes TCellRef and +TRangeRef which were previously duplicated between the Spreadsheet +engine and the Grid test code + +(Note that this requires BAFL to be dependent on STORE, for the first +time, which is a shame in a way, but too bad) + +2) New test code T_CELL.CPP to test BACELL + +3) New resource header file BADEF.RH containing a few definitions +likely to be of use to users of resource files other than Eikon, eg +the Sheet engine or the Opl translator + + +Version 0.01.030 +================ +(Made by DavidW, 10 May 1996) + +Uses E32 V058, F32 V023, E32TOOLS V023 + +Size of BAFL.DLL (ARM): 20,484 bytes + +From DavidW: +------------ +1) Rebuilt with latest E32(058) etc - on the rack, the test code now +goes like a proverbial rocket + + +Version 0.01.029 +================ +(Made by DavidW, 9 May 1996) + +Uses E32 V057, F32 V021, E32TOOLS V022 + +Size of BAFL.DLL (ARM): 20,996 bytes + +From DavidW: +------------ +1) Changes to class definitions to allow downstream software +components to meet the EMPTY.CPP test, and thereby cut down on +code-bloat under GCC + +2) Removed the function MArray::MaCBase() as not required (arising +out of my lack of understanding of C++ casting rules) + +3) Renamed TIncrMatcherXxx to RIncrMatcherXxx, since they need to +have a destructor, and TXxx classes should never have a destructor + +(actually Colly says RXxx classes should never have a destructor +either, but I'll leave things as they are for now) + +4) Even more changes to the RIncrMatcherXxx class tree, eg to avoid +copy constructors being generated on the fly + + +Version 0.01.028 +================ +(Made by DavidW, 1 May 1996) + +Uses E32 V057, F32 V021, E32TOOLS V021 + +Size of BAFL.DLL (ARM): 20,484 bytes + +From Brendan: +------------- +1) New feature added to box layout engine to support a layout being +reset and then recalculated with different parameters in force, eg +allowing an application to determine the largest possible font that +can be used for a set of controls inside a fixed region of screen: + +2) Added virtual function ResetAll() to CBox and CBranchBox(), which +recursively reset the sizes of the boxes + +3) New test code T_BLO2 for the above features + + +Version 0.01.027 +================ +(Made by DavidW, 26 April 1996) + +Uses E32 V057, F32 V021, E32TOOLS V021 + +Size of BAFL.DLL (ARM): 20,484 bytes + +From DavidW: +------------ +1) Re-release compatible with E32(057) and F32(021): the only change +required was in the *.OBY file, as per the E32 release notes + + +Version 0.01.026 +================ +(Made by DavidW, 15 April 1996) + +Uses E32 V056, F32 V020, E32TOOLS V020 + +Size of BAFL.DLL (ARM): 20,484 bytes + +From DavidW: +------------ +1) Fixed the resource reader class to handle mis-aligned +sub-resources, eg reading a TInt32 following inline after a text +string; added some tests to T_RSREAD to test this case + +2) Made a few changes to BABLO.* to make it clean-compile, without +any compiler warnings, in all build variants. + + +Version 0.01.025 +================ +(Made by DavidW, 15 April 1996) + +Uses E32 V056, F32 V020, E32TOOLS V020 + +Size of BAFL.DLL (ARM): 19,972 bytes + +Note that ideas on how MNT VALID might work (described in the +previous release notes) now look a bit simplistic; more research in +this area is required + +From DavidW: +------------ +1) Converted the CONE files LAYOUT.CPP, BLOMAIN.HRH and BLOMAIN.H to +be part of BAFL instead, as the files BABLO.* ("Box LayOut" engine), +making adjustments as required to run on ARM; likewise converted the +CONE test code \cone\layout\tlayout to run as \bafl\tsrc\t_blo + +2) Converted the CONE files COERSBUF.* to be part of BAFL instead, +as the files BARSREAD.* ("ReSource READer"), making adjustments as +required to run on ARM; wrote new test code T_RSREAD for this class, +which reads resources from the same test file T_RSC.RSC that is used +by test code T_RSC + +3) Slimmed down some of the test code T_RSC, since it was boring and +repetitive for little gain, and since T_RSREAD now provides an +independent test of using RResourceFile + +4) Added a batch file to run under the Text Shell on the rack, +RACK.BTF (renamed to RACK.BAT in the ROM), with the intended effect +of running all BAFL test programs one after the other; what actually +happens is that they all get run simultaneously, which I suppose is +less boring and exercises the O/S more thoroughly; so the way of +running all test code under WINS is to CD to \bafl\tsrc and to type +"RUN", and the way of running all test code on the rack is to CD to +\test and to type "RACK.BAT". + + +Version 0.01.024 +================ +(Made by DavidW, 12 April 1996) + +Uses E32 V056, F32 V020, E32TOOLS V020 + +Size of BAFL.DLL (ARM): 8196 bytes + +From DavidW: +------------ +1) Added VALID verb to MNT.CMD as follows: + + :valid + if not exist ..\valid\nul md ..\valid + cd ..\valid + call getrel %_vgroup% emarm %_par% + fc /b %_vgroup%.dll \work\emarm\%_vgroup%.dll > ..\valid.lis + call cont %g% %p% + type ..\valid.lis + goto end + +which can be used as a gauge of whether a BAFL.DLL built on one +person's PC matches that built (under supposedly identical +circumstances) on another person's PC. It's only a "gauge" since +there can be, in my experience so far, up to two blocks of four bytes +each that vary, which are presumably embedded date-time stamps + +2) Moved the following modules from CONE to BAFL: BNDARRAY (renamed +to BABNDA), COEDESCA (renamed to BADESCA), and COEMATCH (renamed to +BAMATCH); made alterations as required for an ARM build + +3) Renamed CTextBuf to RTextBuf, and CIncrMatcherTextBuf to +RIncrMatcherTextBuf, since whatever else these classes may be, they +are *not* C's (as they do not inherit from CBase) + +4) Wrote T_BND test code for TBoundedArray; this showed up the fact +that recent E32 changes (to compress flat buffers when they are +reset) have broken TBoundedArray; fixed this by overriding the +Compress() function, to do nothing + +5) Wrote T_DESCA test code for the CDesCArray family + +6) Moved Brendan's TMATCH test code for the incremental matchers to +Bafl, renaming it (Bafl style) to T_MATCH, and converting it as +required for ARM + +(all four BAFL test programs run successfully on the rack) + +7) Deleted the header file BAFLSTD.H as an anachronism - you should +delete any copies you have, eg in \e32inc; in the modern standard, +you should include individual header files like BARSC.H or BNDARRAY.H +directly, as and when you need them + +8) Outputting all errors from GCC builds to the same file CERR.TXT +has got to be a mistake; I now output errors to %1.AER files (Arm +ERror files), eg using the batch file \bafl\tsrc\doarm.cmd: + + call maktran %1.mak %1.arm + call nmake -f %1.arm /x %1.aer + +9) Some long-overdue TLC for files in the BAFL group generally. + + +Version 0.01.023 +================ +(Made by DavidW, 9 April 1996) + +Uses E32 V056, F32 V020, E32TOOLS V019 + +From DavidW: +------------ +1) Release compatible with E32(056) etc + +2) Had to changed all KFileXxx file-open constants to EFileXxx; had +to change EShareReadersOnly to EFileShareReadersOnly, etc + +3) Found out that it was daft to set the "-v" flag in BLDIMG.CMD, +since the verbose output seems to end up in a file E32ROM.LOG anyway; +so my \bafl\tsrc\bldimg.cmd is now just + + e32rom -gcc bafl.oby + +4) Had to replace the line + + secondary=\work\emarm\efsrv.exe sys\efsrv.exe + +in BAFL.OBY with the pair of lines + + secondary=c:\work\emarm\efile.exe sys\efile.exe + file=c:\work\emarm\efsrv.dll sys\efsrv.dll + + +Version 0.01.022 +================ +(Made by DavidW, 22 March 1996) + +Uses E32 V055, F32 V019, E32TOOLS V017 + +From Bret: +---------- +1) This is the first release of BAFL that supports an ARM build, and +whose test code runs on the rack + +2) In order to build the ARM version of this code, you will need to +have installed the GCC tools on your PC: if you haven't done so +already, type + TOOLS GCC +(invokes the t:\tools\tools.bat batch file) + +3) You will also need a suitable version of the E32TOOLS: type + MNT GETE32TOOLS + +4) Apart from this, the standard GETBLD (or MNT GETCOMPS) will fetch +all the software components required to build BAFL in either WINS or +ARM variants + +5) Type MNT ARMREL to build the Release version of the ARM variant +of BAFL.DLL, and MNT ATSTREL to build the Release version of the ARM +variant of T_RSC.EXE + +(Inspect the text file CERR.TXT for any build errors; note that you +can get lots of strange behaviour if you have failed to add \gcc\bin +to your PATH) + +6) In the ..\tsrc directory, type BLDIMG to build the file +ARMROM.IMG (this follows instructions in the BAFL.OBY text file) + +7) Use the network to transfer ARMROM.IMG to a RACK PC and type + PEIGER ARMROM.IMG +to repro the rack with that ROM ... + +8) As it happens very few changes to the BAFL code were required, to +allow the compilation and linking under GCC + +From DavidW: +------------ +9) Renamed the WINS release components BAFL and BAFLPDB to EWINS and +EWINSDB; following the practice from other software groups, the ARM +release component is called EMARM + +10) Renamed the MDWORK verb of MNT to MAKEWORK (this makes all the +ARM work directories as well as the EWINS work directories). + + +Version 0.01.021 +================ +(Made by DavidW, 4 March 1996) + +Uses E32 V054, F32 V018 + +1) Re-release compatible with E32(054) and F32(018) (ie VC 4) + +2) Removed "/FORCE" declarations in project settings, to allow +incremental linking for debug builds. + + +Version 0.01.020 +================ +(Made by DavidW, 26 February 1996) + +Uses E32 V053, F32 V017 + +From DavidW: +------------ +1) RResourceFile now has an inline function Offset() returning the +value of iOffset, as required in order for CONE/Eikon to properly +support multiple application resource files being loaded in the same +enivronment + +2) Added a TCleanupItem() operator to RResourceFile, allowing +RResourceFile objects to be placed on the cleanup stack; the contents +of the associated Cleanup() function is to call Close() + +3) Renamed the GETJBLD verb of MNT.CMD to GETCOMPS + + +Version 0.01.019 +================ +(Made by DavidW, 21 February 1996) + +Uses E32 V053, F32 V017 + +This build is binary compatible with BAFL 018; a downstream component +that works with BAFL 018 should work equally well with BAFL 019, +without any recompilation + +From MartinT: +------------- +1) Fixed bug whereby, if a file contained n resources, behaviour +when attempting to read resources n+1 and n+2 was unpredictable +(diagnosed by Jal). It is now possible to reliably read through all +the resources in a file; attempting to read beyond the end results in +a Leave. + + +Version 0.01.018 +================ +(Made by DavidW, 19 February 1996) + +Uses E32 V053, F32 V017 + +1) Re-release compatible with E32(053) and F32(017) + +2) Added EXPORT and DELWORK verbs to MNT.CMD doing the usual things + +3) THIS BUILD WORKS IN RELEASE MODE TOO! (Not that I changed +anything; I guess that some bug fixes or other changes elsewhere in +the system must have put right whatever was going wrong before) + + +Version 0.01.017 +================ +(Made by DavidW, 15 February 1996) + +Uses E32 V052, F32 V016 + +From MartinT: +------------- +1) Altered RResourceFile class to better encapsulate the +20-bit offset generated by the NAME statement in resource +files. There is now an iOffset member which carries the +offset corresponding to the name. Initially this contains +zero (set by OpenL()). When ConfirmSignature() is called, +the iOffset() is set from the top 20 bits of the second long in +the signature record. + +2) There is a OwnsResourceId() function which returns ETrue +if a resource id has top 20 bits the same as the iOffset's, or +if its top 20 bits are zero. This means that resources can be +read in sequence 1, 2, 3 ..., or in sequence 0xabcde001, +0xabcde002 ..., where 0xabcde000 is the offset. The latter +is intended for CONE application use. The former can also +be useful. + +3) Changed the class to allow it to be a value type +rather than a reference type. Also, changed from +privately inheriting an RFile to owning one. You now +use OpenL() and Close() to open and close the resource +file, and you can pass them around by value. + + +Version 0.01.016 +================ +(Made by DavidW, 31 January 1996) + +Uses E32 V052, F32 V016 + +1) Re-release compatible with E32(052) and F32(016) + + +Version 0.01.015 +================ +(Made by DavidW, 8 January 1996) + +Uses E32 V051, F32 V015 + +1) Re-release compatible with E32(051) and F32(015) + + +Version 0.01.014 +================ +(Made by DavidW, 19 December 1995) + +Uses E32 V050, F32 V014 + +1) Re-release compatible with E32(050) and F32(014) + + +Version 0.01.013 +================ +(Made by DavidW, 4 December 1995) + +Uses E32 V049, F32 V013 + +1) Re-release compatible with E32(049) and F32(013) + + +Version 0.01.012 +================ +(Made by DavidW, 16 November 1995) + +Uses E32 V048, F32 V012 + +1) Re-release compatible with E32(048) and F32(012) + + +Version 0.01.011 +================ +(Made by DavidW, 19 October 1995) + +Uses E32 V047, F32 V011 + +1) Added ConfirmSignature(TInt aSignature,TInt &aOffset) to +RResourceFile, which can be called for resource files whose first +resource consists of two 32-bit integers + + *) the first being a signature, which must match the passed value +exactly + + *) the second having no special meaning as far as RResourceFile is +concerned (but higher level software may interpret it eg as the +"offset" value for the resource file); this gets written to aOffset + +The function returns either KErrNone, or an error value if the +signature does not match. + + +Version 0.01.010 +================ +(Made by DavidW, 9 October 1995) + +Uses E32 V047, F32 V011 + +1) Rebuilt to work with new E32 and F32 + +Unfortunately the release mode code still fails to run (it still +comes grinding to a halt in exactly the same place as before - +somewhere deep inside F32). + + +Version 0.01.009 +================ +(Made by DavidW, 6 September 1995) + +Uses E32 V045, F32 V009 + +1) Rebuilt to work with new E32 and F32 + + +Version 0.01.008 +================ +(Made by DavidW, 28 August 1995) + +Uses E32 V044, F32 V008 + +1) Added RResourceFile::AllocReadLC, which does the same as +AllocRead but leaves the allocated cell (for the returned HBufC* +pointer) on the cleanup list + +2) Converted test resource file to use BUF instead of STR and so no +longer need to go around removing terminating zeroes; also made the +test resource file more independent from xwim's S_.RSC. + + +Version 0.01.007 +================ +(Made by DavidW, 23 August 1995) + +Uses E32 V044, F32 V008 + +1) Converted to work with new E32 and F32 + +2) I've taken a policy decision that, wherever relevant, Bafl will +presuppose that a trap handler has been installed by the caller. +This will always be the case in an Hcil application (as +CHci::ExecuteD will install a trap handler), but other users of Bafl +will have to take independent steps. See code in T_RSC for an +example + +3) Thus CResourceFile::AllocReadL now presupposes that a trap +handler has been installed (and that the caller is already inside a +TRAP harness) - this allows the code to simplify (there's no longer +any need for a local TRAP harness) + + +Version 0.01.006 +================ +(Made by DavidW, 21 August 1995) + +Uses E32 V043, F32 V007 + +1) Converted to work with new E32 and F32 + +2) Added L's to the names of all functions that can leave + +3) Moved BAFL.MAK from ..\src to ..\group for the usual reason (to +make it easier for people debugging downstream to have the IDE know +automatically where to load bafl source code from) + + +Version 0.01.005 +================ +*** Re-made by DavidW, 28 July 1995, using the new versions of E32 +v041 and F32 v006 (as the old one was link-incompatible) + +(Made by DavidW, 26 July 1995) + +Available on R: + +Uses E32 V041, F32 V006 (from R:) + +1) Converted to work with new E32 and F32 + +2) MNT.CMD improved, copying many ideas from Hcil + +3) Converted to new-style no .LNK files CMD-line build system. + + +Version 0.01.004 +================ +(Made by DavidW, 23 June 1995) + +Available on S: + +Uses E32 V039, F32 V005 + +1) Converted to work with new E32 and F32 + + +Version 0.01.003 +================ +(Made by DavidW, 22 May 1995) + +Uses E32 V038, F32 V003 + +1) RResourceFile::Read now tests to see if the resource will fit in +the passed buffer, and if not, panics + +2) Resource files are now opened with EShareReadersOnly + + +Version 0.01.002 +================ +(Made by DavidW, 15 May 1995) + +Uses E32 V035, F32 V001 + +NB There's currently only an ascii debug version; Unicode threatens a +huge can of worms that will require a *lot* of attention to sort out. + +1) Now uses F32 instead of home-brewed access to files + +2) CResourceFile now exists as RResourceFile (a subclass of RFile +from F32) + +3) Provided the static RResourceFile::New as a convenience function + +4) Simplified many of the function names + +5) Provided an HBufC *AllocRead() function to match the void Read() +function, but this is broken for two reasons: + +6) First, the current implementation of HBufC::New is useless (it +sets the iLength field to zero, but there's no useful way to change +this later to something non-zero!) + +7) Second, the current implementation of Hufman decoding often +decodes one extra spurious character, which can overwrite the end of +a supplied buffer + + +Version 0.01.001 +================ +(Made by MartinB, 11 May 1995) + +Uses E32 V035 + +First release. +