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