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