os/ossrv/lowlevellibsandfws/apputils/group/RELEASE.TXT
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/ossrv/lowlevellibsandfws/apputils/group/RELEASE.TXT	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,2829 @@
     1.4 +Version 1.00.103
     1.5 +===================================
     1.6 +Released into:	GT Mainline 578
     1.7 +Built against:	GT Mainline 574b ALL VARIENTS 
     1.8 +Released by:	Franco Bellu
     1.9 +Uses:		EUSER ESOCK INSOCK IMUT INETPROTUTIL BAFL
    1.10 +For debug, add: FLOGGER EFSRV
    1.11 +For tests, add: HTTPTESTUTILS, C32
    1.12 +Changelist:	xxx
    1.13 +Website:	http://lon-wapbuild01.INTRA/HTTP_Project/ 
    1.14 +
    1.15 +
    1.16 +Summary
    1.17 +=======
    1.18 +
    1.19 +
    1.20 +
    1.21 +Defects Fixed
    1.22 +=============
    1.23 +* Fixed defect  SAM-54WFUN : " String pool does not return an error when a string cannot be found in a string table using StringF() method "
    1.24 +* Fixed defect BEU-55CND8 "using the CStringPoolImplementation from an empty string causes an access violation "
    1.25 +* Fixed defect CLE-536M4D "String pool comparison operators should ASSERT_DEBUG check for use of multiple table "
    1.26 +
    1.27 +API Changes
    1.28 +===========
    1.29 +None
    1.30 +
    1.31 +Other Significant Changes
    1.32 +=========================
    1.33 +None
    1.34 +
    1.35 +
    1.36 +Known Issues
    1.37 +============
    1.38 +None
    1.39 +
    1.40 +
    1.41 +-----------
    1.42 +Version 1.00.102
    1.43 +================
    1.44 +Tim and Arun, 3 July 2001
    1.45 +
    1.46 +CR for BAFL and LocE32: allow customizable language downgrade paths to be specified as
    1.47 +part of the locale.
    1.48 +
    1.49 +Version 1.00.101
    1.50 +================
    1.51 +Made by Kevin, 11 August 1999
    1.52 +
    1.53 +Requires RCOMP 318 because of the BC break in the handling of TEXT16 resources.
    1.54 +
    1.55 +Added TResourceReader::AlignCountedPtr16 which returns the counted string length and
    1.56 +adjusts the pointer past both the length byte and any additional padding byte. The value 
    1.57 +of the padding byte is checked with an __ASSERT_DEBUG(): the wrong value will cause a
    1.58 +panic with code EBafPanicUnicodeTextPaddingError (=14).
    1.59 +
    1.60 +Added AlignCountedPtr16 calls to the functions which read a Unicode descriptor from 
    1.61 +a resource.
    1.62 +
    1.63 +    TResourceReader::ReadHBufC16L()
    1.64 +	TResourceReader::ReadTPtrC16()
    1.65 +	TResourceReader::ReadTPtrC16(TInt aIndex,const TDesC8* aBuffer)
    1.66 +
    1.67 +Modified T_RSC.CPP to correct the r_text_signature check which discriminated between a Unicode
    1.68 +resource file and an 8-bit resource file: the RCOMP padding algorithm puts in an additional
    1.69 +padding byte, which is now checked. Used _LIT() for the resource file names and arranged to build
    1.70 +the TRSC resource via the T_RSC.MMP file.
    1.71 +
    1.72 +Extended T_RSREAD.CPP to test resources and arrays which contains a mixture of 8 and 16 bit text, 
    1.73 +organised to test zero-length strings and Unicode strings with both odd and even alignment. 
    1.74 +Added the TRSC resource to the T_RSREAD.MMP file for good measure, and get the resource file name 
    1.75 +from the shared T_RSC.H include file.
    1.76 +
    1.77 +Modified BLD.INF to mark T_CLINE as a manual test and T_LIBT as a supporting DLL.
    1.78 +
    1.79 +NB ALSO INCLUDES CHANGES MADE IN RELEASE 100 WHICH ARE NOT DOCUMENTED HERE
    1.80 +
    1.81 +
    1.82 +Version 1.00.091
    1.83 +================
    1.84 +Made by DavidK, 27 May 1999
    1.85 +
    1.86 +Uses as 090. Identical release to 090 apart from wins urel and Marm variants also built.
    1.87 +
    1.88 +Version 1.00.090
    1.89 +================
    1.90 +Made By DavidK, 26 May 1999
    1.91 +
    1.92 +Uses E32/156, F32/122, STORE/050, E32UTILS/019, 
    1.93 +	E32TOOLS/095, E32TOOLP/098, EIKTOOLS 133
    1.94 +
    1.95 +Renamed the class BaflFileSortTable to CBaflFileSortTable so source incompatible but BC with 089 
    1.96 +(which was a frozen deffile version of 088)
    1.97 +Intended for use with the first public release of Uikon.
    1.98 +
    1.99 +Version 1.00.088
   1.100 +================
   1.101 +Made by MarcoS, 29 April 1999
   1.102 +
   1.103 +	Uses E32/156, F32/122, STORE/050, E32UTILS/019, 
   1.104 +	E32TOOLS/095, E32TOOLP/098, EIKTOOLS 128
   1.105 +
   1.106 +The sound staff has been moved from Bafl to form a new component: BaflSnd.
   1.107 +
   1.108 +Most of the utilities defined on EikUtils (Eikon) have been transferred
   1.109 +to BaflUtils (Bafl).
   1.110 +
   1.111 +
   1.112 +Version 1.00.087
   1.113 +================
   1.114 +Made by ChrisD, 4 December 1998
   1.115 +
   1.116 +	Uses E32/156, F32/122, STORE/050, E32UTILS/019, 
   1.117 +	E32TOOLS/095, E32TOOLP/098, EIKTOOLS 128
   1.118 +
   1.119 +Minor source changes for boilerplating Symbian copyright text.
   1.120 +MNT command changed to use new version of E32TOOLP (098) and 
   1.121 +valid command modified to use new evalid command for validation.
   1.122 +ROM building scripts updated so ROM could be built.
   1.123 +
   1.124 +Built using VC5 and Service Pack 3.  Release tested on the following
   1.125 +variants:
   1.126 +
   1.127 +wins/deb        marm/deb
   1.128 +wins/rel        marm/rel
   1.129 +wins/udeb       marm/udeb
   1.130 +wins/urel       marm/urel
   1.131 +
   1.132 +All tests passed on a PB rack.  Note that test code T_SNDDA will fail 
   1.133 +under WINS on PC's without a soundcard.
   1.134 +
   1.135 +Version 1.00.086
   1.136 +================
   1.137 +Made by MattM 28 October 1998
   1.138 +
   1.139 +	Uses E32/156, F32/122, STORE/050, E32UTILS/019, 
   1.140 +	E32TOOLS/095, E32TOOLS/096, EIKTOOLS 128
   1.141 +
   1.142 +Changed Unicode third UID on BAFL.DLL
   1.143 +Changed Unicode second UID on clipboard file
   1.144 +
   1.145 +Version 1.00.085
   1.146 +================
   1.147 +(Made by SimonC, 29 September 1998)
   1.148 +
   1.149 +	Uses E32/125, F32/095, STORE/047, E32UTILS/019, 
   1.150 +	E32TOOLS/092, E32TOOLS/091, EIKTOOLS 128
   1.151 +
   1.152 +Backwards but not forwards compatible with 078
   1.153 +Built using VC5.  .PDBs are incompatible with VC4
   1.154 +
   1.155 +1) Changed RResourceFile::ConfirmSignatureL() to always confirm resource
   1.156 +file signatures on the assumption that no-one can possibly be using version
   1.157 +003 files any longer (they were superceded two years ago) and the existing 
   1.158 +resource layout and structures are fixed now for as long as we support BC.
   1.159 +
   1.160 +2) Added RResourceFile::SignatureL() which returns the signature of the 
   1.161 +resource file.  This shouldn't be required by anyone or anything other than 
   1.162 +Eikon.
   1.163 +
   1.164 +3) Changed const TUint KBaflCharTruncation in BAUTILS.H to a const TUint to 
   1.165 +prevent a VC5 warning.
   1.166 +
   1.167 +Note that test code T_SNDDA will fail in wins builds on pcs without a sound card
   1.168 +
   1.169 +
   1.170 +
   1.171 +Version 1.00.078
   1.172 +================
   1.173 +(Made by SimonC, 16 Mar 1998)
   1.174 +
   1.175 +	Uses E32/125, F32/095, STORE/047, E32UTILS/019, 
   1.176 +	E32TOOLS/092, E32TOOLS/091, EIKTOOLS 125
   1.177 +
   1.178 +No source changes - rebuilt with E32 125 et al
   1.179 +
   1.180 +Changed *.IBY to support unicode ROMs and reflect recent E32 changes
   1.181 +
   1.182 +All WINS and MARM release releases entirely forward compatible
   1.183 +MARM Debug releases are incompatible
   1.184 +
   1.185 +
   1.186 +
   1.187 +Version 1.00.077
   1.188 +================
   1.189 +(Made by SimonC, 9 Dec 1997)
   1.190 +
   1.191 +	Uses E32/107, F32/074, STORE/043, E32TOOLS/082, EIKTOOLS 123
   1.192 +
   1.193 +Backward but not forward compatible with 076
   1.194 +
   1.195 +From MartinT
   1.196 +In bacline.*, class CCommandLineArguments(), which gives Count() and 
   1.197 +Arg() functions whose purpose is similar to argv and argc parsing in 
   1.198 +conventional C/C++ programming.  This class is mainly intended for WINC 
   1.199 +programs which, unlike most regular EPOC32 programs, actively use their 
   1.200 +command-line arguments.
   1.201 +
   1.202 +From SimonC
   1.203 +Converted to MAKMAKE and moved building verbs from MNT.CMD to EBLD.BAT
   1.204 +
   1.205 +
   1.206 +Version 1.00.076
   1.207 +================
   1.208 +(Made by DavidW, 28 May 1997)
   1.209 +
   1.210 +	Uses E32/107, F32/074, STORE/043, E32TOOLS/067
   1.211 +
   1.212 +Completely BC with 075
   1.213 +
   1.214 +Built with Platform 001 releases
   1.215 +
   1.216 +	Size of BAFL.DLL:       28,432 bytes (ARMREL)
   1.217 +				35,568 bytes (ARMDEB)
   1.218 +
   1.219 +MNT VALID works on a clean drive
   1.220 +
   1.221 +1)  Upgraded to Platform 001 releases
   1.222 +
   1.223 +2)  Fixed SW3-868: Resource language file look-up fails to find a
   1.224 +*.R01 file (though, as is often the cases with "simple fixes", the
   1.225 +fix wasn't quite so simple after all!)
   1.226 +
   1.227 +3)  Fixed SW3-827 by adding MAP files to the releasable file lists
   1.228 +
   1.229 +4)  The advent of EChangesSystemTime in E32 106 had the side-effect
   1.230 +of breaking a very restrictive test in Bafl test code T_CNTF.  This
   1.231 +could be viewed as highlighting a non-BC feature in the E32 changes;
   1.232 +but it's already been decided that we can live with this (no real app
   1.233 +ought to be making a test like that in T_CNTF).  This test code has
   1.234 +now been improved to avoid this problem (and, hopefully, to make it
   1.235 +immune against any future additions to the TChanges enum)
   1.236 +
   1.237 +5)  Fixed a problem with building the test code in ARMDEB (shown up
   1.238 +when there was no prior build of the test code in ARMREL)
   1.239 +
   1.240 +
   1.241 +Version 1.00.075
   1.242 +================
   1.243 +(Made by DavidW, 8 May 1997)
   1.244 +
   1.245 +	Uses E32/101, F32/069, STORE/042, E32TOOLS/063
   1.246 +
   1.247 +	**Almost** completely compatible with 074
   1.248 +
   1.249 +	**IMPORTANT** See note about "descriptor arrays" below
   1.250 +
   1.251 +	WINS release, debug, unicode release and unicode debug
   1.252 +	ARM release, debug, unicode release and unicode debug
   1.253 +
   1.254 +	Size of BAFL.DLL:       28,420 bytes (ARMREL)
   1.255 +				35,556 bytes (ARMDEB)
   1.256 +
   1.257 +MartinB has pointed out that the API of the descriptor array classes
   1.258 +has one real drawback to it: the MdcaPoint() functions were returning
   1.259 +
   1.260 +	const TDesC&
   1.261 +
   1.262 +whereas there are many advantages to them instead returning
   1.263 +
   1.264 +	TPtrC
   1.265 +
   1.266 +For example, this causes real problems for the Shell, and has in the
   1.267 +past caused real problems with the printer model name array in Eikon
   1.268 +
   1.269 +After prolonged discussions with MartinB, Bill, and Geert and myself,
   1.270 +we decided to "do the right thing" and *** break API compatibility
   1.271 +*** to that extent.  This will avoid much lurking death in the
   1.272 +future, to do with temporary variables disappearing as the stack
   1.273 +unwinds, etc.
   1.274 +
   1.275 +All code that uses descriptor arrays - whether of the MDesCArray or
   1.276 +CDesCArray or whatever type - should be recompiled.  That should be
   1.277 +the only change necessary.
   1.278 +
   1.279 +Note however that if you previously assigned the result of an
   1.280 +MdcaPoint operation to a
   1.281 +
   1.282 +	const TDesC&
   1.283 +
   1.284 +reference variable on the stack in some code, you should now change
   1.285 +this code to assign it to a
   1.286 +
   1.287 +	TPtrC
   1.288 +
   1.289 +variable instead.
   1.290 +
   1.291 +*** Note that because the operator[] function of CDesCArray is
   1.292 +defined as being equivalent to its MdcaPoint() function, you may need
   1.293 +some care to find these cases.
   1.294 +
   1.295 +All EXPORTed functions retain their same ordinal values.
   1.296 +
   1.297 +
   1.298 +Version 1.00.074
   1.299 +================
   1.300 +(Made by DavidW, 7 May 1997)
   1.301 +
   1.302 +	Uses E32/101, F32/069, STORE/042, E32TOOLS/063
   1.303 +
   1.304 +	Completely compatible with 073
   1.305 +
   1.306 +	WINS release, debug, unicode release and unicode debug
   1.307 +	ARM release, debug, unicode release and unicode debug
   1.308 +
   1.309 +	Size of BAFL.DLL:       28,284 bytes (ARMREL)
   1.310 +				35,440 bytes (ARMDEB)
   1.311 +
   1.312 +From AndrewT:
   1.313 +-------------
   1.314 +1.      Fixed a potential bug with "change leakage" in
   1.315 +	CEnvironmentChangeNotifier, when a change happening between
   1.316 +	the beginning and the end of a RunL could go undetected
   1.317 +
   1.318 +	Removed the source-code dependency on the EChangesAll enum,
   1.319 +	which makes the source code build compatible with E32 105
   1.320 +	(and with any further changes to this enum that E32 might
   1.321 +	introduce in a future version)
   1.322 +
   1.323 +	Updated test code to match.
   1.324 +
   1.325 +
   1.326 +Version 1.00.073
   1.327 +================
   1.328 +(Made by DavidW, 6 May 1997)
   1.329 +
   1.330 +	Uses E32/101, F32/069, STORE/042, E32TOOLS/063
   1.331 +
   1.332 +	Backwards binary compatible with 072, but not forwards
   1.333 +
   1.334 +	WINS release, debug, unicode release and unicode debug
   1.335 +	ARM release, debug, unicode release and unicode debug
   1.336 +
   1.337 +	Size of BAFL.DLL:       28,284 bytes (ARMREL)
   1.338 +				35,440 bytes (ARMDEB)
   1.339 +
   1.340 +1.      New header file BAERRHAN.H, defining the interface of an
   1.341 +	abstract "error handler"
   1.342 +
   1.343 +	New function CBaActiveScheduler::LeaveForErrorHandler
   1.344 +	which takes a const CBaErrorHandler* pointer
   1.345 +
   1.346 +	The implementor of the DisplayError function in the concrete
   1.347 +	subclass of CBaActiveScheduler (or something to which that
   1.348 +	delegates, eg the implementor of CEikonEnv::HandleError) must
   1.349 +	follow the contract that -
   1.350 +
   1.351 +	- when the Leave has unwound, the CBaErrorHandler object gets
   1.352 +	sent a HandleError() function.  This function is declared
   1.353 +	pure virtual at the CBaErrorHandler level.
   1.354 +
   1.355 +	There are two parameters to this function - a reference to an
   1.356 +	"error text" descriptor, and one to a "context text"
   1.357 +	descriptor.  The function can fill these in with text that
   1.358 +	the environment will then display.
   1.359 +
   1.360 +	The HandleError() function should return one of
   1.361 +
   1.362 +	    EAlertDisplay - use the standard alert dialog
   1.363 +	    EInfoDisplay - use an info message
   1.364 +			(context text will be ignored)
   1.365 +	    ENoDisplay - no display required
   1.366 +			(both text buffers will be ignored)
   1.367 +	    EErrorNotHandled - fall back to standard processing
   1.368 +
   1.369 +	Some test code for CBaErrorHandler has been added to T_SCHED
   1.370 +
   1.371 +	** Note that this BAERRHAN.H is an enhancement to the copy of
   1.372 +	this file provisionally contained in EIKON 183.  In order to
   1.373 +	move up to BAFL 073, you must also move up to EIKON 184
   1.374 +
   1.375 +2.      Removed the last remaining scare comments from BAFL source code
   1.376 +
   1.377 +3.      Provided explicit enumeration for all the panics in BAFLPAN.H
   1.378 +
   1.379 +4.      Tweak to T_RSC test code to cope with the file copied from
   1.380 +	ROM to RAM nowadays ending up as read-only (bad news if you
   1.381 +	want to run the test more than once)
   1.382 +
   1.383 +*** Known limitation - the test code fails to build cleanly for
   1.384 +Unicode (WINS) and so several of the test apps fail.  No problems
   1.385 +with any of the Narrow builds or test code, though
   1.386 +			
   1.387 +
   1.388 +
   1.389 +Version 0.06.072
   1.390 +================
   1.391 +(Made by AjThoelke, 30 April 1997)
   1.392 +
   1.393 +1.      Uses E32/101, F32/069, STORE/042, E32TOOLS/063
   1.394 +
   1.395 +	Backwards binary compatible with 071, but not forwards:
   1.396 +
   1.397 +	Build against 072 only if you use CSoundPlayer::PlayTone() or
   1.398 +		SoundUtilities::PlayTone()
   1.399 +	Build against 071 if you use CClipboard::Clear()
   1.400 +	Otherwise build against 069
   1.401 +
   1.402 +	WINS release, debug, unicode release and unicode debug
   1.403 +	ARM release, debug, unicode release and unicode debug
   1.404 +
   1.405 +	Size of BAFL.DLL:       28,252 bytes (ARMREL)
   1.406 +				35,392 bytes (ARMDEB)
   1.407 +
   1.408 +From Brendan
   1.409 +
   1.410 +1.      Fixed SW-4266. Incorrect assert in matcher code.
   1.411 +
   1.412 +From DavidW
   1.413 +
   1.414 +2.      Fixed SW-4477. KErrLeaveNoAlert is passed on to
   1.415 +	CBaActiveScheduler::DisplayError() for EIKON to cancel busy messages.
   1.416 +
   1.417 +From AndrewT
   1.418 +
   1.419 +3.      Fixed SW-4619. Sound files are not assumed to have the default extension
   1.420 +	".snd".
   1.421 +
   1.422 +	Note for ROM builders: Alarm samples in Z:\System\Alarms\ should not have
   1.423 +	the extension ".snd" any more. They will still work, but the public
   1.424 +	alarm name will be reported as "Soft Bells.snd" rather than "Soft Bells"
   1.425 +	for example. (The files released as BAFL ALARMS have not changed their
   1.426 +	names and still have a .snd extension)
   1.427 +
   1.428 +4.      Fixed SW-4610. Ensure that the sample is left in a valid state when
   1.429 +	trying to complete the recording when in a Disk Full situation.
   1.430 +
   1.431 +5.      Implemented SW-4007. Two new services are provided by BAFL.
   1.432 +
   1.433 +	void CSoundPlayer::PlayTone(TInt aFrequency,TTimeIntervalMicroSeconds32 aDuration,TInt aAmplitude)
   1.434 +
   1.435 +	This makes the player play a sine-wave generated tone on the sound
   1.436 +	device at the frequency and amplitude specified for aDuration.
   1.437 +	Completion is notified via the observer as for other CSoundPlayer
   1.438 +	Play... services.
   1.439 +
   1.440 +	TInt SoundUtilities::PlayTone(TInt aFrequency,TTimeIntervalMicroSeconds32 aDuration,
   1.441 +							TInt aAmplitude,TDeviceVolume aVolume)
   1.442 +
   1.443 +	This service opens and configures the sound device and plays a sine-wave
   1.444 +	generated tone as specified, then closes the device. The function only
   1.445 +	returns after the tone has finished playing.
   1.446 +	
   1.447 +	The TDeviceVolume parameter maps onto the sound device volume settings.
   1.448 +	Experimenting with the device volume and amplitude values is recommended
   1.449 +	for getting a good tone volume...
   1.450 +
   1.451 +
   1.452 +Version 0.06.071
   1.453 +================
   1.454 +(Made by AjThoelke, 24 April 1997)
   1.455 +
   1.456 +1.      Uses E32/099, F32/069, STORE/042, E32TOOLS/063
   1.457 +
   1.458 +	Backwards binary compatible with 070, but not forwards
   1.459 +
   1.460 +	WINS release, debug, unicode release and unicode debug
   1.461 +	ARM release, debug, unicode release and unicode debug
   1.462 +
   1.463 +	Size of BAFL.DLL:       27,748 bytes (ARMREL)
   1.464 +				34,844 bytes (ARMDEB)
   1.465 +
   1.466 +2.      Added new exported function
   1.467 +
   1.468 +	static TInt CClipboard::Clear(RFs&);
   1.469 +
   1.470 +	This will clear the clipboard of its contents. Initially it will
   1.471 +	try to do this by truncating the file, if this fails then it will
   1.472 +	attempt to delete the file. I the clipboard cannot be cleared the
   1.473 +	error is returned
   1.474 +
   1.475 +
   1.476 +Version 0.06.070
   1.477 +================
   1.478 +(Made by AjThoelke, 22 April 1997)
   1.479 +
   1.480 +1.      Uses E32/099, F32/069, STORE/042, E32TOOLS/063
   1.481 +
   1.482 +	Binary compatible with 069
   1.483 +
   1.484 +	WINS release, debug, unicode release and unicode debug
   1.485 +	ARM release, debug, unicode release and unicode debug
   1.486 +
   1.487 +	Size of BAFL.DLL:       27,564 bytes (ARMREL)
   1.488 +				34,656 bytes (ARMDEB)
   1.489 +
   1.490 +2.      Fixed SW-3879. Over-aggressive asserts have been modified to handle
   1.491 +	abort states in CSoundData objects, and more graceful handling of
   1.492 +	serious file server failures (i.e. not panicing).
   1.493 +
   1.494 +
   1.495 +Version 0.06.069
   1.496 +================
   1.497 +(Made by AjThoelke, 16 April 1997)
   1.498 +
   1.499 +1.      Uses E32/098, F32/068, STORE/042, E32TOOLS/063
   1.500 +
   1.501 +	Binary compatible with 068
   1.502 +
   1.503 +	WINS release, debug, unicode release and unicode debug
   1.504 +	ARM release, debug, unicode release and unicode debug
   1.505 +
   1.506 +	Size of BAFL.DLL:       27,504 bytes (ARMREL)
   1.507 +				34,572 bytes (ARMDEB)
   1.508 +
   1.509 +2.      New Uid scheme adopted for MARM releasables. For MARM, requires
   1.510 +	E32 098 for anything other than narrow release.
   1.511 +
   1.512 +3.      Refixed SW-2836. The relevant parties have been beaten into submission:
   1.513 +
   1.514 +	a)      F32 will not report changes when the first 16 bytes of a file
   1.515 +		are touched.
   1.516 +
   1.517 +	b)      The clipboard has reverted to the 065 behaviour: try to open,
   1.518 +		if that succeeds truncate the file and carry on, if it fails
   1.519 +		replace the file.
   1.520 +
   1.521 +	c)      The Shell will hold off from scanning for a short delay
   1.522 +		before checking what's happened to allow files to have their
   1.523 +		header written before the Shell interrogates their type.
   1.524 +
   1.525 +	d)      Components which are too slow even for this should be using a
   1.526 +		temporary file to write to in the first place, and rename it to
   1.527 +		the final destination once it is good (and typed). Temporary
   1.528 +		files do not cause change notification.
   1.529 +
   1.530 +4.      Revert following failure on CSoundData has been added to CommitHeaderL(),
   1.531 +	ExternalizeL() and SaveL(). Previously a seek would have been required
   1.532 +	to force it to revert.
   1.533 +
   1.534 +
   1.535 +Version 0.06.068
   1.536 +================
   1.537 +(Made by AjThoelke, 14 April 1997)
   1.538 +
   1.539 +1.      Uses E32/097, F32/067, STORE/041
   1.540 +
   1.541 +	Binary compatible with 067
   1.542 +
   1.543 +	WINS release, debug, unicode release and unicode debug
   1.544 +	ARM release, debug, unicode release and unicode debug
   1.545 +
   1.546 +	Size of BAFL.DLL:       27,364 bytes (ARMREL)
   1.547 +				34,452 bytes (ARMDEB)
   1.548 +
   1.549 +2.      Fixed the T_SNDDA bug. I had been testing against BC test executables,
   1.550 +	which did not pick up that the constant KSoundDataChunkLength had been
   1.551 +	mangled (8 instead of 800). This would have also caused CSoundSampler
   1.552 +	and CSoundPlayer to be broken.
   1.553 +
   1.554 +
   1.555 +Version 0.06.067
   1.556 +================
   1.557 +(Made by DavidW, 13 April 1997)
   1.558 +
   1.559 +1.      Uses E32/097, F32/067, STORE/041
   1.560 +
   1.561 +	*Not* binary compatible with any previous version
   1.562 +	(But source compatible with 065)
   1.563 +
   1.564 +	WINS release, debug, unicode release and unicode debug
   1.565 +	ARM release, debug, unicode release and unicode debug
   1.566 +
   1.567 +	Size of BAFL.DLL:       27,364 bytes (ARMREL)
   1.568 +				34,452 bytes (ARMDEB)
   1.569 +
   1.570 +2.      Consolidated some code from CONE's CCoeActiveScheduler into
   1.571 +	BAFL's CBaActiveScheduler (shame it will never make it all
   1.572 +	the way into CActiveScheduler)
   1.573 +
   1.574 +	Virtual function DisplayError() defined in CBaActiveScheduler
   1.575 +	no implementation at BAFL level
   1.576 +
   1.577 +	The CActiveScheduler function Error() now has the following
   1.578 +	implementation in BAFL:
   1.579 +
   1.580 +EXPORT_C void CBaActiveScheduler::Error(TInt aError) const
   1.581 +	{
   1.582 +	if (aError==KLeaveExit)
   1.583 +		User::Leave(KLeaveExit);
   1.584 +	if (aError==KLeaveWithoutAlert)
   1.585 +		return;
   1.586 +	DisplayError(aError);
   1.587 +	}
   1.588 +
   1.589 +	New function DisplayExtendedError(), as follows
   1.590 +
   1.591 +EXPORT_C void CBaActiveScheduler::DisplayExtendedError(TUid aComponent,TInt aErrorNumber)
   1.592 +	{ // static
   1.593 +	CBaActiveScheduler* pS=((CBaActiveScheduler*)CActiveScheduler::Current());
   1.594 +	pS->iExtendedError.iInformation=EFalse;
   1.595 +	pS->iExtendedError.iComponent=aComponent;
   1.596 +	pS->iExtendedError.iErrorNumber=aErrorNumber;
   1.597 +	pS->DisplayError(KErrExtended);
   1.598 +	}
   1.599 +
   1.600 +	The difference between DisplayExtendedError() and eg
   1.601 +	ExtendedLeave() is that the former calls Leave first, and
   1.602 +	relies on the Error() function being called later.
   1.603 +	Whereas the former calls the Error() function directly,
   1.604 +	and is then free eg to retry the current operation.
   1.605 +
   1.606 +	So, the assumption is that the Error() function will be
   1.607 +	implemented "with wait".
   1.608 +
   1.609 +3.      New test app T_SCHED testing the CBaActiveScheduler class
   1.610 +
   1.611 +4.      Put two virtual Reserved_xxx() functions into CBaActiveScheduler
   1.612 +
   1.613 +5.      Changed KUidBaflDll from 0x10000043 to 0x100004e to avoid a clash
   1.614 +
   1.615 +6.      Fixed the MNT VALID verb
   1.616 +
   1.617 +7.      Known limitations
   1.618 +
   1.619 +	* the way DEF files get archived for WINS looks wrong
   1.620 +
   1.621 +	* test code T_SNDDA hangs under ARM (and runs horribly horribly
   1.622 +	slowly under WINS) - note this is true in 066 too and isn't
   1.623 +	anything I have introduced
   1.624 +
   1.625 +
   1.626 +Version 0.06.066
   1.627 +================
   1.628 +(Made by AjThoelke, 11 April 1997)
   1.629 +
   1.630 +1.      Uses E32/097, F32/067, STORE/041
   1.631 +
   1.632 +	To all known purposes: Binary compatible with 065.
   1.633 +
   1.634 +	WINS release, debug, unicode release and unicode debug
   1.635 +	ARM release, debug, unicode release and unicode debug
   1.636 +
   1.637 +2.      The protected interface of CSoundData, CSoundSampler and CSoundPlayer
   1.638 +	has been privatised. This is for future BC purposes, and they couldn't
   1.639 +	usefully be derived from anyway.
   1.640 +
   1.641 +3.      System file and path names within BAFL (e.g. the clipboard) now use
   1.642 +	capitalised names.
   1.643 +
   1.644 +4.      CSoundSampler is now using a block length of 800 samples (previously
   1.645 +	400). This means that samples recorded with BAFL 066 will not be
   1.646 +	playable with 065, but older samples will play happily on 066.
   1.647 +
   1.648 +5.      CSoundSampler has gained TInt Volume() and void SetVolume(TInt).
   1.649 +	These squeeze an extra bit of data into the persistent data of a sound
   1.650 +	sample: the player/sampler do not utilise this information, it is
   1.651 +	provided for the RECORD app.
   1.652 +
   1.653 +	The limitation is that the repeat count is limited to 65535 (big deal
   1.654 +	eh?), and the volume stored must be in the range 0-65535.
   1.655 +
   1.656 +6.      Unfixed SW-2836. The file system now reports changes even if the header
   1.657 +	of a file is re-written so the scheme in place was not effective.
   1.658 +	Clipboard is still being replaced every time now.
   1.659 +
   1.660 +	
   1.661 +Version 0.06.065
   1.662 +================
   1.663 +(Made by AjThoelke, 9 April 1997)
   1.664 +
   1.665 +1.      Uses E32/096, F32/065, STORE/040
   1.666 +
   1.667 +	Binary compatible with 064 except for one thing (see 2).
   1.668 +
   1.669 +	WINS release, debug, unicode release and unicode debug
   1.670 +	ARM release, debug, unicode release and unicode debug
   1.671 +
   1.672 +2.      The two extended errors for clipboard use have been removed. This upsets
   1.673 +	the enum ordering in BAERROR.H and introduces an incompatibility if you
   1.674 +	use this enumeration. I understand this affects almost nobody: certainly
   1.675 +	no-one who has yet built against BAFL 064, and so have been advised to
   1.676 +	let this one slip in at this stage. So if you do include BAERROR.H, make
   1.677 +	sure you compile against 065 not 064.
   1.678 +
   1.679 +3.      All MARM releasables are pre-PETRAN'd, so get rid of your obey file
   1.680 +	UIDs for BAFL.
   1.681 +
   1.682 +4.      Sampled alarm sounds now live in \system\alarms\, previously
   1.683 +	\system\sounds\, as this better reflects what this directory is used
   1.684 +	for.
   1.685 +
   1.686 +5.      Fixed bug SW-2836. The clipboard now attempts to open the clipboard file
   1.687 +	and truncate it, rather than always replace it, in order to prevent the
   1.688 +	clipboard generate unecessary change notification.
   1.689 +
   1.690 +6.      Fixed bug SW-2721. If the clipboard store has no root stream when
   1.691 +	destroyed, the clipboard file is deleted. This handles any case of
   1.692 +	failure during copying to the clipboard. Note that the first thing that
   1.693 +	happens during a paste operation is that the current contents of the
   1.694 +	clipboard are discarded.
   1.695 +
   1.696 +7.      Modified the behaviour of the clipboard when trying to read when the
   1.697 +	clipboard does not exist, is being copied to, is corrupt or otherwise
   1.698 +	damaged. In all these situations an empty CClipboard object is returned
   1.699 +	from CClipboard::NewForReadingL[C](). More serious errors (or OOM) are
   1.700 +	reported as normal.
   1.701 +
   1.702 +	These situations are all considered to be equivalent to there being no
   1.703 +	data to paste from the clipboard, and will therefore be handled already
   1.704 +	by the code which attempts to find some suitable data type in the
   1.705 +	clipboard stream dictionary.
   1.706 +
   1.707 +	This has resulted in the two clipboard extended errors being no longer
   1.708 +	required.
   1.709 +
   1.710 +8.      New releasables:
   1.711 +
   1.712 +	WINSCPR contains DEF files for all WINS builds of compressor DLLs.
   1.713 +	EMARMCPR contains FRZ files for all MARM builds of compressor DLLs.
   1.714 +
   1.715 +	They require that the DLLs exports a function with the prototype:
   1.716 +
   1.717 +	CCompressorBase* NewCompressorL();
   1.718 +
   1.719 +	See the dummy compressors which are part of the BAFL source for examples
   1.720 +	of how to build them for WINS and ARM: WINS adds a /def option to the
   1.721 +	linker command line, MARM uses freeze file technology.
   1.722 +
   1.723 +	These releaseables are extracted to \epoc32\release\wins and
   1.724 +	epoc32\release\marm as part of MNT GETREL.
   1.725 +
   1.726 +
   1.727 +Version 0.06.064
   1.728 +================
   1.729 +(Made by AjThoelke, 7 April 1997)
   1.730 +
   1.731 +1.      Uses E32/096, F32/065, STORE/040
   1.732 +
   1.733 +	Binary incompatible with 063.
   1.734 +	Source compatible with 063 with the exception of the CFindFileByType
   1.735 +	class.
   1.736 +
   1.737 +	WINS release, debug, unicode release and unicode debug
   1.738 +	ARM release, debug, unicode release and unicode debug
   1.739 +
   1.740 +	Further review for the purposes of binary compatibility issues and
   1.741 +	conversion from export to inline has resulted in more changes.
   1.742 +
   1.743 +2.      WINS builds are now link-by-ordinal.
   1.744 +
   1.745 +3.      MARM builds now incorporate type-safe linkage: BAFL's uid3 is 0x10000043.
   1.746 +
   1.747 +4.      Added CBaflUtils::NearestLanguageFile(RFs& aFs,TFileName& aFileName).
   1.748 +	This has been taken from the EIKON utility of the same name. The last
   1.749 +	two characters of the filename are replaced with the language code if
   1.750 +	such a file exists, otherwise the name is left unchanged.
   1.751 +
   1.752 +5.      CFindFileByType now has the following API:
   1.753 +
   1.754 +	CFindFileByType(RFs& aFs);
   1.755 +	~CFindFileByType();
   1.756 +	TInt FindFirst(const TDesC& aName,const TDesC& aDir,const TUidType& aType);
   1.757 +	TInt FindNext();
   1.758 +	const TEntry& Entry() const;
   1.759 +	const TParse& File() const;
   1.760 +
   1.761 +	Following construction, the object can be used for mulitple finding
   1.762 +	sessions.
   1.763 +
   1.764 +	To initiate a find, call FindFirst(): the name can have wild
   1.765 +	cards, any path information not in aName is taken from aDir. A file type
   1.766 +	is also specified in aType. For any Uids in aType which are not KNullUid,
   1.767 +	a matching file will have the same Uid in that position. i.e. to find
   1.768 +	document files use TUidType(KNullUid,KUidAppDllDoc).
   1.769 +
   1.770 +	FindFirst() returns KErrNone if it has found a match, FindNext() will
   1.771 +	continue to search for the next matching file. KErrNotFound is returned
   1.772 +	when there are no more matches, any other return is an error code.
   1.773 +
   1.774 +	When a matching file has been found, Entry() returns the TEntry for that
   1.775 +	file, and File() returns a TParse object containing the parsed full name
   1.776 +	for the file.
   1.777 +
   1.778 +The following changes do not affect source compatibility:
   1.779 +
   1.780 +6.      CEnvironmentChangeNotifier now takes a const TCallback& in its NewL()
   1.781 +	and Set() members. Previously took TCallBack&.
   1.782 +
   1.783 +7.      Various exported functions are now inline as befits their purpose.
   1.784 +
   1.785 +8.      CDesC8Array constuctor is now protected, CDesC8ArrayFlat has a exported
   1.786 +	destructor to reduce extra vtable generation in any sub-classers. Ditto
   1.787 +	for CDesC8ArraySeg, and the unicode variants.
   1.788 +
   1.789 +9.      TLibAssoc has a general base class TLibAssocBase, to hold the common
   1.790 +	code, reducing the template generated code, and also removes the
   1.791 +	templated assertion (now in TLibAssocBase).
   1.792 +
   1.793 +10.     Improved the performance of the TResourceReader class.
   1.794 +
   1.795 +11.     Factored common code in RIncrMatcherBase to reduce code volume.
   1.796 +
   1.797 +
   1.798 +Version 0.06.063
   1.799 +================
   1.800 +(Made by AjThoelke, 2 April 1997)
   1.801 +
   1.802 +1.      Uses E32/095, F32/064, STORE/040
   1.803 +
   1.804 +	Binary compatible with 062
   1.805 +
   1.806 +	WINS release, debug, unicode release and unicode debug
   1.807 +	ARM release and debug
   1.808 +
   1.809 +	Following full review of BAFL code, I have fixed some bugs (see below)
   1.810 +	and tidied some other code resulting in some code savings. There are a
   1.811 +	few outstanding binary-incompatible changes that are on the waiting list.
   1.812 +
   1.813 +2.      Fixed CEnvironmentChangeNotifier to close the RChangeNotifier when it is
   1.814 +	destroyed.
   1.815 +
   1.816 +3.      Fixed RTextBuf to use the delete [] operator as it is using the new []
   1.817 +	operator. Previously it was not using the array delete operator.
   1.818 +
   1.819 +4.      Major fixes to SoundUtilities: No non-leaving functions can now leave,
   1.820 +	no alloc heaven following failures at any stage, private static members
   1.821 +	are now local static to the source file and removed from the class
   1.822 +	declaration.
   1.823 +
   1.824 +5.      Fixed SW-2001. Duplicate names in the list of alarm sounds or samples
   1.825 +	are ignored. This matches the behaviour of CSoundPlayer: as soon as a
   1.826 +	viable sound is found which matches the name, it is played.
   1.827 +
   1.828 +	Note that this means it though may be possible to save an sample as an
   1.829 +	alarm called "Chimes", it'll never get played as an alarm while an
   1.830 +	algorithmic sound of the same name exists.
   1.831 +
   1.832 +6.      Revised code for CFindFileByType to attempt a reduction in stack usage
   1.833 +	by TFileName and TParse objects, to reduce code size, and to eliminate
   1.834 +	problems when handling failures.
   1.835 +
   1.836 +7.      Removed unecessary (inline) copy constructors from TCellRef and
   1.837 +	TRangeRef.
   1.838 +
   1.839 +8.      Included s32file.h into baclipb.h as CClipboard::Store() requires the
   1.840 +	derivation relationship between CFileStore and CStreamStore.
   1.841 +
   1.842 +9.      CClipboard::CopyToL(const TReal&) now commits the stream it has written.
   1.843 +
   1.844 +10.     The clipboard has been moved from the very strangely named
   1.845 +	c:\system\clipbd\main.sto to the somewhat more sensible sounding
   1.846 +	c:\system\data\clipboard
   1.847 +
   1.848 +11.     Beefed up CSoundData's handling of in-place sample files being corrupt
   1.849 +	or requiring truncation when opened or following (serious) failure.
   1.850 +
   1.851 +
   1.852 +
   1.853 +Version 0.06.062
   1.854 +================
   1.855 +(Made by AjThoelke, 26 March 1997)
   1.856 +
   1.857 +1.      Uses E32/094, F32/063, STORE/038
   1.858 +
   1.859 +	Binary compatible with 061
   1.860 +
   1.861 +	WINS release, debug, unicode release and unicode debug
   1.862 +	ARM release and debug
   1.863 +
   1.864 +2.      Fixed a bug when recording to the end of a just-opened sample, which
   1.865 +	resulted in data loss, and end of file errors.
   1.866 +
   1.867 +3.      Correctly update the current position during recording when a compressor
   1.868 +	is in use.
   1.869 +
   1.870 +4.      Avoid a panic from CActive when abandoning the background indexing, and
   1.871 +	ensure the sampler restores its active priority as necessary.
   1.872 +
   1.873 +5.      Allow UseSeekIndexL to be called any number of times without causing
   1.874 +	stray signals, or other nasty problems.
   1.875 +
   1.876 +
   1.877 +Version 0.06.061
   1.878 +================
   1.879 +(Made by AjThoelke, 26 March 1997)
   1.880 +
   1.881 +1.      Uses E32/094, F32/063, STORE/038
   1.882 +
   1.883 +	Binary compatible with 060 if you are not the RECORD app.
   1.884 +
   1.885 +	WINS release, debug, unicode release and unicode debug
   1.886 +	ARM release and debug
   1.887 +
   1.888 +2.      Renamed CSoundPlayerRecorder to CSoundSampler, similarly for its
   1.889 +	observer.
   1.890 +
   1.891 +3.      Fully construct the CTimer part of CSoundSampler, previously this
   1.892 +	caused a panic when playing a sample.
   1.893 +
   1.894 +4.      Added CSoundSampler::TruncateL() to truncate the sample to the current
   1.895 +	position.
   1.896 +
   1.897 +5.      Implemented a compressed sound data manager. This can use a temporary
   1.898 +	index to enable fast random seeking in the sample.
   1.899 +
   1.900 +	The default is not to have one, as it is not needed for playing sounds,
   1.901 +	enabling it will result in an index being built as the sound is
   1.902 +	played (and so can cause OOM errors while playing). Compressed samples
   1.903 +	do not allow random seeking without the index, only seeking to the
   1.904 +	beginning or end of the sample.
   1.905 +
   1.906 +	CSoundSampler::UseSeekIndexL() will enable the indexing, and will cause
   1.907 +	the sampler to build the index in the background, which is abandoned
   1.908 +	whenever another operation is started.
   1.909 +
   1.910 +6.      Generally improved the robustness of the sampler when recording
   1.911 +	terminates in resticted memory or disk space scenarios, and ordered the
   1.912 +	file header re-writes to maintain document integrity in the presence of
   1.913 +	failures.
   1.914 +	
   1.915 +	
   1.916 +Version 0.06.060
   1.917 +================
   1.918 +(Made by AjThoelke, 25 March 1997)
   1.919 +
   1.920 +1.      Uses E32/094, F32/063, STORE/038
   1.921 +
   1.922 +	For most people: Binary compatible with 059.
   1.923 +	Binary incompatible if you use any of the functions
   1.924 +
   1.925 +	CSoundData::NewL(CStreamStore&,TStreamId);
   1.926 +	CSoundPlayerRecorder::NewL(MSoundPlayerRecorderObserver&,CStreamStore&,TStreamId);
   1.927 +	CSoundData::SaveToL(RFile&);
   1.928 +	CSoundPlayerRecorder::SaveToL(RFile&);
   1.929 +
   1.930 +	(This should only be the RECORD app).
   1.931 +
   1.932 +2.      The two NewL() functions above now take a const CStreamStore&.
   1.933 +
   1.934 +3.      The SaveTOL() functions have morphed into:
   1.935 +
   1.936 +	SaveL(RFile& aNewFile,TBool aUseNewFile=EFalse);
   1.937 +
   1.938 +	The sample is saved into the new file passed in. If aUseNewFile is true,
   1.939 +	then the sampler starts using the new file, and closes the old file. If
   1.940 +	false (the default) the new file is closed following this function.
   1.941 +
   1.942 +	On any failure, the new file is closed automatically.
   1.943 +
   1.944 +4.      Added CSoundPlayer::SoundType() returning TSoundType, which is one of
   1.945 +	ESoundAlgorithmic and ESoundSample. This reports the type of sound
   1.946 +	last played (or currently playing) using this object.
   1.947 +
   1.948 +5.      Exported SoundUtilities::SoundStreamIdL(CPersistentStore&) to extract
   1.949 +	the sound stream id from the stream dictionary in sound samples.
   1.950 +
   1.951 +	
   1.952 +Version 0.06.059
   1.953 +================
   1.954 +(Made by AjThoelke, 24 march 1997)
   1.955 +
   1.956 +1.      Uses E32/094, F32/063, STORE/038
   1.957 +
   1.958 +	Binary incompatible with 058.
   1.959 +
   1.960 +	WINS release, debug, unicode release and unicode debug
   1.961 +	ARM release and debug
   1.962 +
   1.963 +	The main thrust of this release is to re-engineer the sound services to:
   1.964 +
   1.965 +	* enable in-place recording of sound samples
   1.966 +	* modify the sound sample data format to improve seek performance
   1.967 +	* remove the TRequestStatus asynchronous API.
   1.968 +
   1.969 +	Meanwhile I have totally revamped the API for the CSoundPlayer,
   1.970 +	CSoundPlayerRecorder and CSoundData classes. Code which does not use any
   1.971 +	of the sound classes or utilities will not need any modification to use
   1.972 +	this new version of BAFL.
   1.973 +
   1.974 +	This release comes not entirely tested, and not entirely complete, in
   1.975 +	order to freeze the API now, rather than later. Binary compatible
   1.976 +	releases will be forth coming as the missing code is added and tested.
   1.977 +
   1.978 +From NeilD
   1.979 +
   1.980 +2.      Transferred the utility EikThread::ExtractAppNameFromFullName(...)
   1.981 +	from EIKON to BAFL, now BaflUtils::ExtractAppNameFromFullName(...).
   1.982 +	This will be removed from EIKON as and when appropriate.
   1.983 +
   1.984 +From AndrewT
   1.985 +
   1.986 +3.      CBulkData has been removed from the public API.
   1.987 +
   1.988 +4.      CSoundPlayer is similar to its previous API:
   1.989 +
   1.990 +	static CSoundPlayer* NewL(MSoundPlayerObserver& anObserver,RDevSound& aDev);
   1.991 +	void PlaySoundL(const TDesC& aName,RFs& aFs);
   1.992 +	void PlayFileL(const TDesC& aName,RFs& aFs);
   1.993 +	void PlayAlarm(const TDesC& aName);
   1.994 +	void PlayAlarm(TInt aAlarmIndex);
   1.995 +	void PlayFallBackAlarm();
   1.996 +	void Stop();
   1.997 +	TBool IsPlaying() const;
   1.998 +
   1.999 +	To replace the I/O Semaphore API for notification of completion, an
  1.1000 +	MSoundPlayerObserver object is required. It's virtual PlayComplete(TInt)
  1.1001 +	member is invoked when the player has finished playing any sound,
  1.1002 +	passing any completion status as a parameter. Note that the player
  1.1003 +	still requires an active scheduler to be running to operate, but is no
  1.1004 +	longer itself an active object.
  1.1005 +
  1.1006 +	Playing alarm sounds is guaranteed to not fail. PlayAlarm(const TDesC&)
  1.1007 +	attempts to find an alarm of the given name and play it, otherwise the
  1.1008 +	fall-back alarm is played. PlayAlarm(TInt) is as before, playing the
  1.1009 +	alarm by index.
  1.1010 +
  1.1011 +	PlayFileL(...) will try to locate the named sound file and play it,
  1.1012 +	leaving on any error. PlaySoundL() will first try to find an alarm of
  1.1013 +	the given name, and if none is found will try to find the named sound
  1.1014 +	file, reporting an error if no such file exists.
  1.1015 +
  1.1016 +	Stop() will synchronously terminate the current sound playing, and will
  1.1017 +	not cause the observer to be notified.
  1.1018 +
  1.1019 +	IsPlaying() just reports whether a sound is currently being playing by
  1.1020 +	the object.
  1.1021 +
  1.1022 +5.      CSoundData API has totally changed. It supports embedded or in-place
  1.1023 +	sound samples. It no longer uses temporary file for temporary storage, but
  1.1024 +	a chunk instead. This means that spontaneous death will not eat up
  1.1025 +	precious disk (& memory) space.
  1.1026 +
  1.1027 +	The API is now expressed entirely in terms of byte positions within
  1.1028 +	the Alaw Sound sample, but provides conversion functions to and from
  1.1029 +	microseconds.
  1.1030 +	
  1.1031 +	Uncompressed sound data now supports immediate seeking to any position
  1.1032 +	in the sample. The compressed data manager has not been implemented yet,
  1.1033 +	and, selecting a compressor will currently result in uncompressed data.
  1.1034 +
  1.1035 +	Recovery on failure and truncation of the sample in the face of OOM or
  1.1036 +	DiskFull errors are still being worked on, and have yet to be tested.
  1.1037 +
  1.1038 +6.      CSoundPlayerRecorder has had its API changed as well. It also uses an
  1.1039 +	observer, rather than I/O semaphore to mark completion of its services.
  1.1040 +	This class has not been tested yet.
  1.1041 +
  1.1042 +7.      CCompressorList has had some of its members name's changed.
  1.1043 +	Functionality is unchanged and still obvious.
  1.1044 +
  1.1045 +
  1.1046 +Version 0.06.058
  1.1047 +================
  1.1048 +(Made by SteveG, 12-Mar-1997)
  1.1049 +
  1.1050 +Uses
  1.1051 +E32         (091)
  1.1052 +F32         (060)
  1.1053 +STORE       (037)
  1.1054 +
  1.1055 +1) Uses new sound driver functions for determining how many bytes have
  1.1056 +   been played, needed as the Record app now sets the sound drivers
  1.1057 +   buffer to 8000 bytes, and there will nearly always be 1 second of
  1.1058 +   sound remaining to be played when the end of the sample sound file
  1.1059 +   is reached
  1.1060 +
  1.1061 +Version 0.05.057
  1.1062 +================
  1.1063 +(Made by SteveG, 04-Mar-1997)
  1.1064 +
  1.1065 +Uses
  1.1066 +E32         (090)
  1.1067 +E32UTILS    (008)
  1.1068 +F32         (058)
  1.1069 +STORE       (036)
  1.1070 +E32TOOLS    (051)
  1.1071 +EIKTOOLS    (120)
  1.1072 +RCOMP       (313)
  1.1073 +
  1.1074 +1) Fixed panic when cancelling sounds played by PlaySoundFileByName. This
  1.1075 +   was not initialising the iDevSound property
  1.1076 +
  1.1077 +Version 0.05.056
  1.1078 +================
  1.1079 +(Made by SteveG, 03-Mar-1997)
  1.1080 +
  1.1081 +Uses
  1.1082 +E32         (090)
  1.1083 +E32UTILS    (008)
  1.1084 +F32         (058)
  1.1085 +STORE       (036)
  1.1086 +E32TOOLS    (051)
  1.1087 +EIKTOOLS    (120)
  1.1088 +RCOMP       (313)
  1.1089 +
  1.1090 +1) Altered the sound file format to store the uncompressed length of
  1.1091 +   each chunk, to speed up the seek functions. They no longer need
  1.1092 +   to read the chunk data in order to  work out the duration of the
  1.1093 +   decompressed chunk
  1.1094 +
  1.1095 +Version 0.05.055
  1.1096 +================
  1.1097 +(Made by DavidW, 02-Mar-1997)
  1.1098 +
  1.1099 +Uses
  1.1100 +E32         (090)
  1.1101 +E32UTILS    (008)
  1.1102 +F32         (058)
  1.1103 +STORE       (036)
  1.1104 +E32TOOLS    (051)
  1.1105 +EIKTOOLS    (120)
  1.1106 +RCOMP       (313)
  1.1107 +
  1.1108 +Not binary compatible with any predecessor
  1.1109 +
  1.1110 +Size of BAFL.DLL: ArmRel 28,596 bytes, ArmDeb 32,036 bytes
  1.1111 +
  1.1112 +1)  Upgraded to the latest releases of all upstream components
  1.1113 +
  1.1114 +2)  Removed the TBoundedArray classes (and their test code)
  1.1115 +
  1.1116 +3)  Removed the box layout classes (and their test code)
  1.1117 +
  1.1118 +4)  Removed the function BaflUtils::ExtractMnemonic()
  1.1119 +
  1.1120 +5)  Removed the function TResourceReader::SetJustBuffer()
  1.1121 +
  1.1122 +6)  Brought the contents of \bafl\src\empty.cpp up to date
  1.1123 +
  1.1124 +7)  Removed all reference to the #define __BAFL_B6__ and removed all
  1.1125 +code branches in which this macro was *not* defined
  1.1126 +
  1.1127 +8)  Added the class CBaActiveScheduler, containing code that ought to
  1.1128 +migrate shortly into CActiveScheduler (and User and DThread).  This
  1.1129 +contains support for a grown-up error number system for the first
  1.1130 +time.  For further details, see the discussion in the EPOC32 Software
  1.1131 +Design database on Notes
  1.1132 +
  1.1133 +9)  Moved the functions Exit() and LeaveNoAlert() from
  1.1134 +CCoeActiveScheduler to CBaActiveScheduler (and slightly changed their
  1.1135 +implementation, to avoid some theoretical problems)
  1.1136 +
  1.1137 +10) Added the header file BAERROR.H containing Bafl-specific error
  1.1138 +numbers, for the classes RResourceFile and CClipboard; improved the
  1.1139 +code in BARSC.* and BACLIPB.* by taking advantage of this new scheme
  1.1140 +
  1.1141 +11) Changed the TInt ConfirmSignature function of RResourceFile into
  1.1142 +a void ConfirmSignatureL function instead.  If the resource file
  1.1143 +fails to have the expected signature, this function now does a custom
  1.1144 +KUidBaflDll Leave with KErrBaflWrongResourceFileSignature
  1.1145 +
  1.1146 +12) Changed the CClipboard class to do a custom KUidBaflDll Leave
  1.1147 +with KErrBaflClipboardDoesNotExist in the case of (you guessed it)
  1.1148 +the clipboard not existing.  The Leave sets the "Information" bit, so
  1.1149 +that the UI (ie Eikon level) should display an info message rather
  1.1150 +than an alert dialog
  1.1151 +
  1.1152 +13) Modified the test code T_CLIPB in line with the above changes.
  1.1153 +
  1.1154 +Some limitations to report:
  1.1155 +
  1.1156 +The WINS UREL version of T_SPYRC intermittently crashes inside an
  1.1157 +ASSERT_DEBUG in the sound driver.
  1.1158 +
  1.1159 +T_CELL gets lines 33-38 marked as "Unreachable code" when compiling
  1.1160 +for Release mode under WINS.
  1.1161 +
  1.1162 +I suspect the class CFindFileByType ought to be removed too, being
  1.1163 +superseded by F32 functionality.
  1.1164 +
  1.1165 +The T_BAFL.IBY hard-wires the location of T_RSC.RSC to a REL
  1.1166 +directory, so it doesn't manage to build an ArmDeb ROM image unless
  1.1167 +you've already built the ArmRel one.
  1.1168 +
  1.1169 +I had real difficulties in persuading the NMAKE for the ArmDeb build
  1.1170 +to run at all, and only got it to run when I deleted all files on the
  1.1171 +drive and re-installed from the network.  Something needs
  1.1172 +investigating further here!
  1.1173 +
  1.1174 +
  1.1175 +Version 0.05.054
  1.1176 +================
  1.1177 +(Made by MartinB, 28-Feb-1997)
  1.1178 +
  1.1179 +Uses
  1.1180 +E32         (089)
  1.1181 +E32UTILS    (006)
  1.1182 +F32         (055)
  1.1183 +STORE       (035)
  1.1184 +E32TOOLS    (051)
  1.1185 +EIKTOOLS    (120)
  1.1186 +RCOMP       (313)
  1.1187 +
  1.1188 +1) Changed ReadALawData() and Read() to take a TBool to indicate
  1.1189 +   whether to read the data or just perform a seek to the file
  1.1190 +   position that would result if that read took place. This is
  1.1191 +   used to dramatically decrease the time taken when seeking to
  1.1192 +   a time in a sample. SeekToTime() now calls ReadALawData passing
  1.1193 +   in EFalse to indicate not to read the data. However, if a
  1.1194 +   compressor is in use, then the read must take place and the
  1.1195 +   TBool argument is ignored. (SteveG)
  1.1196 +
  1.1197 +2) Made some improvements to the TCellRef and TRangeRef classes. In
  1.1198 +particular:
  1.1199 +
  1.1200 +a) Inlined some functions
  1.1201 +b) Default constructors no longer initialize values to zero.
  1.1202 +c) Removed unnecessary operator=() functions.
  1.1203 +
  1.1204 +
  1.1205 +Version 0.05.053
  1.1206 +================
  1.1207 +(Made by Natasha, 07-Feb-1997)
  1.1208 +
  1.1209 +Uses
  1.1210 +E32         (086)
  1.1211 +E32UTILS    (005)
  1.1212 +F32         (050)
  1.1213 +STORE       (034)
  1.1214 +E32TOOLS    (051)
  1.1215 +EIKTOOLS    (119)
  1.1216 +RCOMP       (113)
  1.1217 +
  1.1218 +From Natascha:
  1.1219 +1) The new clipboard functions CopyToL(const TReal& aReal) and
  1.1220 +PasteFromL(TReal& aReal) were mistakenly declared as IMPORT_C in the
  1.1221 +source file - changed them to EXPORT_C.
  1.1222 +
  1.1223 +
  1.1224 +Version 0.05.052
  1.1225 +================
  1.1226 +(Made by SteveG, 03-Feb-1997)
  1.1227 +
  1.1228 +Uses
  1.1229 +E32         (086)
  1.1230 +E32UTILS    (005)
  1.1231 +F32         (050)
  1.1232 +STORE       (034)
  1.1233 +E32TOOLS    (051)
  1.1234 +EIKTOOLS    (119)
  1.1235 +RCOMP       (113)
  1.1236 +
  1.1237 +From SteveG:
  1.1238 +1) Changed ReadDataL() in BABUKDA.CPP to use the store functions
  1.1239 +   for copying to and from stores and files, rather than copying
  1.1240 +   256 bytes at a time in a tight loop. This increase dramatically
  1.1241 +   the speed of creating a temporary sample file and saving samples
  1.1242 +   (thanks to AndrewT for this)
  1.1243 +
  1.1244 +Version 0.04.051
  1.1245 +================
  1.1246 +(Made by PeterJ, 30-Jan-1997)
  1.1247 +
  1.1248 +Uses
  1.1249 +E32         (086)
  1.1250 +E32UTILS    (005)
  1.1251 +F32         (050)
  1.1252 +STORE       (034)
  1.1253 +E32TOOLS    (051)
  1.1254 +EIKTOOLS    (119)
  1.1255 +RCOMP       (113)
  1.1256 +
  1.1257 +NOT binary compatible with BAFL 050.
  1.1258 +
  1.1259 +
  1.1260 +BAFL.DLL is 36648 bytes long (release), 41164 (debug).
  1.1261 +
  1.1262 +
  1.1263 +The box layout test code T_BLO is temporarily removed from the
  1.1264 +rack list because it provokes an internal error in the current GCC
  1.1265 +compiler.
  1.1266 +
  1.1267 +
  1.1268 +
  1.1269 +
  1.1270 +From PeterJ:
  1.1271 +CLEAN verb added to the MNT command set.
  1.1272 +
  1.1273 +
  1.1274 +From NataschaK:
  1.1275 +
  1.1276 +CClipboard member functions to copy/paste real numbers.  These are included
  1.1277 +to provide common functionality.  There are architectural questions to answer
  1.1278 +here.  Is this the right place for such functionality?  Should there be provision
  1.1279 +for other low level data types?
  1.1280 +
  1.1281 +
  1.1282 +
  1.1283 +From Brendan:
  1.1284 +A.      Changes to CSoundData
  1.1285 +-------------------------
  1.1286 +
  1.1287 +1)      CSoundData::SeekToTime to take const reference argument (instead of const)
  1.1288 +2)      Added EBafPanicBulkDataNoDestination which is used rather than
  1.1289 +	EBafPanicBulkDataNoDataExist when no destination is specified in CopyDataToL()
  1.1290 +3)      Grouped similar functions in header for CBulkData
  1.1291 +4)      The function CBulkData::DeleteDataFromTheEnd(TInt aLength) now
  1.1292 +	checks for a -ve value of length. 
  1.1293 +	Added   TInt TruncateDataAt(TInt aPosition);
  1.1294 +	to delete data from a given offset from the start.
  1.1295 +5)      Added various private utility functions to CBulkData:
  1.1296 +	TBool DoesFileExist(const TDesC& aFullFileName) const;
  1.1297 +	void EnsurePathExistsL(const TDesC& aFullPath) const;
  1.1298 +	void MoveFileL(const TParseBase& aDest,const TParseBase& aSource);
  1.1299 +	TPtrC BulkDataTempFilePath() const;
  1.1300 +	TPtrC TemporaryFile() const;
  1.1301 +	void SetTemporaryFile(const TDesC& aName);
  1.1302 +	void InternalizeL(RReadStream& aStream);
  1.1303 +6)      CBulkData::SaveToNewStoreL now uses 1 TParse, instead of 2 TParses and a TFileName
  1.1304 +7)      CBulkData::SaveToNewStoreL renamed to MoveToNewStoreL()
  1.1305 +	It now deletes the old file if it was on the same drive as the new, 
  1.1306 +	as well as if on different drives. 
  1.1307 +	Note that this function will delete all data
  1.1308 +	under error circumstances.
  1.1309 +8)      Made internal use of CBulkData::IsReady... functions
  1.1310 +9)      CBulkData::DeleteDataFromTheEnd() and truncate now return KErrNotReady if 
  1.1311 +	there is no data, rather than KErrNotFound.
  1.1312 +
  1.1313 +B.      Changes to CSoundData
  1.1314 +-------------------------
  1.1315 +
  1.1316 +1)      Grouped similar functions in header for CSoundData
  1.1317 +2)      DataPlayTime renamed to SamplePlayLength
  1.1318 +	DataBeingreadTime renamed to CurrentPosition
  1.1319 +3)      Added TotalPlayLength which takes into account trailing silence and repeats
  1.1320 +4)      Added various private utility functions
  1.1321 +	TCompressorPtr DoCreateCompressorL(TUid aUid) const;
  1.1322 +	TTimeIntervalMicroSeconds AlawBytesToMicroSeconds(TInt aBytes) const;
  1.1323 +	TTimeIntervalMicroSeconds operator+(const TTimeIntervalMicroSeconds& aLeft,const TTimeIntervalMicroSeconds& aRight)
  1.1324 +5)      Set a maximum of KSoundDataMaxReadChunkPlayLengthBytes=10000000
  1.1325 +	for reading and writing chunks, to help check for corrupted data. This number should in fact never
  1.1326 +	exceed 1000.
  1.1327 +
  1.1328 +C.      Changes to CSoundPlayerRecorder
  1.1329 +-----------------------------------
  1.1330 +
  1.1331 +1)      Grouped similar functions in header for CSoundPlayerRecorder
  1.1332 +2)      Extensive renaming of functions to clarify their roles.
  1.1333 +	Removed most ...SoundData.. from function names since this class 
  1.1334 +	can no longer deals with any other kind of data.
  1.1335 +3)      Dropped IsSoundDataPresent since it was not being used anywhere
  1.1336 +4)      PrepareForUpdateL renamed PrepareForRecordL
  1.1337 +5)      SaveSoundDataTo becomes MoveSoundDataTo, since old data is deleted. Note that 
  1.1338 +	the new store still needs to be opened before it can be used.
  1.1339 +
  1.1340 +D.      Changes to CSoundPlayer
  1.1341 +---------------------------
  1.1342 +
  1.1343 +1)      Uses two new private functions
  1.1344 +	PlayAlarmSoundByName 
  1.1345 +	PlaySoundFileByName
  1.1346 +2)      inlined PlayFallBackAlarmSound to use PlayAlarmSound
  1.1347 +
  1.1348 +E.      Changes to SoundUtilities
  1.1349 +-----------------------------
  1.1350 +
  1.1351 +1)      SoundUtilities::Populate makes use the new CDescArray::InsertIsq functions
  1.1352 +2)      SoundUtilities::SoundFileByName no longer validates that a file contains
  1.1353 +	a sound data stream. This function is now provided separately. This is to 
  1.1354 +	help solve a problem in which corrupted files could not be deleted.
  1.1355 +3)      Added function DoesFileContainSoundDataL which returns true if a sound data
  1.1356 +	stream was found (It can leave when creating a store or the root stream).
  1.1357 +
  1.1358 +
  1.1359 +
  1.1360 +
  1.1361 +Version 0.04.050
  1.1362 +================
  1.1363 +(Made by PeterJ, January 1997)
  1.1364 +
  1.1365 +Uses 
  1.1366 +E32         (085)
  1.1367 +E32UTILS    (005)
  1.1368 +F32         (049)
  1.1369 +STORE       (033)
  1.1370 +E32TOOLS    (050)
  1.1371 +EIKTOOLS    (119)
  1.1372 +RCOMP       (113)
  1.1373 +
  1.1374 +NOT binary compatible with BAFL 049.
  1.1375 +
  1.1376 +This version was reput at 20:00 ish on 14-Jan-1997 with a bugfix
  1.1377 +in the RResource class that caused it to unpredictably reject
  1.1378 +a resource binary as corrupt.
  1.1379 +
  1.1380 +Size of BAFL.DLL release is 35,736 (40,072 in debug version).
  1.1381 +
  1.1382 +There remains an outstanding problem with the sound player that
  1.1383 +shows up in the test code running under WINS only.
  1.1384 +
  1.1385 +
  1.1386 +Changes
  1.1387 +-------
  1.1388 +
  1.1389 +From history:
  1.1390 +1) Remove the following RResourceFile member functions which have been
  1.1391 +   deprecated for some time but were left around for binary compatibility.
  1.1392 +   
  1.1393 +  TInt PositionToResourceL(TInt aResourceId,TInt &aDecodedLen) const;
  1.1394 +  void ReadResourceDataL(TDes8 &aDes,TInt aReadLen,TInt aDecodedLen) const;
  1.1395 +  (BARSC.H)
  1.1396 +
  1.1397 +From Brendan:
  1.1398 +2) template <class T>
  1.1399 +   inline TBool TLibAssoc<T>::IsNull()
  1.1400 +
  1.1401 +   is now a const function.  (BALIBA.H)
  1.1402 +
  1.1403 +3) added the following functions to CDesCArray (8 and 16 bit versions)
  1.1404 +
  1.1405 +IMPORT_C TInt InsertIsqL(const TDesC8& aPtr
  1.1406 +	      ,TKeyCmpText aTextComparisonType=ECmpFolded);
  1.1407 +IMPORT_C TInt InsertIsqAllowDuplicatesL(const TDesC8& aPtr
  1.1408 +	      ,TKeyCmpText aTextComparisonType=ECmpFolded);
  1.1409 +IMPORT_C TInt FindIsq(const TDesC8& aPtr,TInt& aPos
  1.1410 +	     ,TKeyCmpText aTextComparisonType=ECmpFolded) const;
  1.1411 +
  1.1412 +These allow the insertion in sequence of descriptors into an array,
  1.1413 +and for finding the descriptors from a sorted array. 
  1.1414 +
  1.1415 +Note that this functionailty is already available for CPtrCArray variants.
  1.1416 +The test T_PTRCA shows how this is done - it just requires that the user
  1.1417 +create and use a : TKeyArrayFix key(0,{sort method});
  1.1418 +
  1.1419 +
  1.1420 +T_DESCA has been modified to at call these functions and ensure that they
  1.1421 +work. It does not stress test them.
  1.1422 +
  1.1423 +T_PTRCA has been modified to show how to call the FindIsq and
  1.1424 +InsertIsq functions.
  1.1425 +
  1.1426 +
  1.1427 +From Simon Ch:
  1.1428 +4) Added CClipboard::NewForReadingL(RFs& aFsSession).  This is for use
  1.1429 +   by callers who don't know if the clipboard exists before they
  1.1430 +   attempt to paste. (BACLIPB.H) Test code added to T_CLIPB.
  1.1431 +
  1.1432 +
  1.1433 +From AndrewT:
  1.1434 +5) Modifications to allow resource data to be read out of ROM directly.
  1.1435 +   Affects BARSC and its test code and changes the RResourceFile class
  1.1436 +   signature slightly.
  1.1437 +
  1.1438 +
  1.1439 +From PNJ:
  1.1440 +6) Test code now compiles its own resources instead of using
  1.1441 +   stored resource objects.  Affects T_RSC and T_RSREAD.
  1.1442 +   MNT procedure modified to get an explicit resource compiler
  1.1443 +   version.  (may want to review the role of EIKTOOLS here).
  1.1444 +
  1.1445 +7) Resource file test code now deals with both 8 and 16-bit
  1.1446 +   text strings generated by RCOMP 3.13 or higher.
  1.1447 +
  1.1448 +
  1.1449 +
  1.1450 +
  1.1451 +
  1.1452 +
  1.1453 +Version 0.04.049
  1.1454 +================
  1.1455 +(Made by Brendan, 20 December 1996)
  1.1456 +
  1.1457 +Uses 
  1.1458 +E32                     (081)
  1.1459 +E32UTILS        (004)
  1.1460 +F32                     (045)
  1.1461 +STORE           (032)
  1.1462 +E32TOOLS        (049)
  1.1463 +EIKTOOLS        (119)
  1.1464 +
  1.1465 +1)      size            Arm release 
  1.1466 +	BAFL.DLL        35,000
  1.1467 +2)  Upgraded to new components. This release is not binary compatible, 
  1.1468 +	and introduces the following new classes:
  1.1469 +	CFindFileByType,TLibAssoc<>,CSoundPlayer,CPtrCArray (and variants)
  1.1470 +	There are likely to be more changes in the sound utilities. 
  1.1471 +3)      Incorporated a CSoundPlayer class from Julian, which is used to play sounds 
  1.1472 +	by name. CSoundPlayerRecorder now only deals with file based sounds and not 
  1.1473 +	algorithmic sounds.
  1.1474 +-       PlayByName() returns an error instead of leaving, to be consistent with the API
  1.1475 +	to algorithmic sounds.
  1.1476 +4)  Incorporate CFindFileByType from Julian, making some minor changes
  1.1477 +    to return the file name and extention of a found file and just the 
  1.1478 +    file name (in TPtrC's).
  1.1479 +5)  Took advantage of CFindFileByType in the CSoundUtilities
  1.1480 +6)  Added CPtrCArray arrays - these are similar to CDesCArrays
  1.1481 +    but store an array of TPtrC's rather than the actual data.
  1.1482 +-   There is a CopyL function to copy any MdcaArray to a CPtrCArray.
  1.1483 +-   It can be used instead of CDesCArray in listboxes etc to reduce
  1.1484 +    duplicating memory, but care should be taken since it can 
  1.1485 +    hold invalid data if the data that the TPtrC's point to, is deleted.
  1.1486 +7)  Added test code T_PTRCA for class CPtrCArray
  1.1487 +8)  TLibAssoc<T> class to be used synonomously with a pointer to the 
  1.1488 +    library associated class (ie a pluggable component). It contains a RLibrary 
  1.1489 +	and a pointer to the class that the library has created. When this 
  1.1490 +	pointer class is "deleted"(Unload()), the library is unloaded after the
  1.1491 +	the class has been deleted - ensuring that the destructor of the class is still 
  1.1492 +	around during the deletion. See the test code T_LIBA for examples of how 
  1.1493 +	it can be used.
  1.1494 +-   use a "TLibAssoc" instance instead of "CLibraryClass*",
  1.1495 +-   call "TLibAssoc.Unload()" instead of "delete(CLibraryClass*);"
  1.1496 +-   call "TLibAssoc.IsNull()" instead if "CLibraryClass*==NULL"
  1.1497 +-   TLibAssoc can be used with CleanupStack::PushL() and PopAndDestroy() etc.
  1.1498 +-   TLibAssoc is safe to use in applications because it does not rely on an
  1.1499 +    active object to unload the libraries.
  1.1500 +-   TLibAssoc should not be used to unload the Dll inwhich the TLibAssoc class
  1.1501 +    is defined, because the executed code must be in a different executable.
  1.1502 +9)  Dropped CLibUnloader
  1.1503 +10)     Changed sound utilities to compare alarm sound names with a fold comparison
  1.1504 +	since the file server wouldnt distinguish between the files.
  1.1505 +11)     Provided public SoundUtilities::PopulateAlgorithmicSoundsL()
  1.1506 +	and SoundUtilities::PopulateAlarmSoundFilesL()
  1.1507 +12) Minor changes to BASNDDA.CPP to prevent possible overlfow errors 
  1.1508 +    in calculations
  1.1509 +13) Minor changes to T_SNDUT.CPP to check that sound files correspond 
  1.1510 +    to their names
  1.1511 +14) Added TheSoundDev.FlushPlayBuffer() and TheSoundDev.FlushRecordBuffer()
  1.1512 +    to T_SNDDA to prevent it from failing with KErrInUse
  1.1513 +	From comments in the test code, it looks as though this test needs to be 
  1.1514 +	revisisted.
  1.1515 +
  1.1516 +Version 0.04.048
  1.1517 +================
  1.1518 +Made by Julian, 02-Dec-1996
  1.1519 +
  1.1520 +Uses    E32/079, E32UTILS/004, F32/044, STORE/032,
  1.1521 +	E32TOOLS/048, EIKTOOLS/119
  1.1522 +
  1.1523 +BAFL ARM DLL sizes: 33148 (release) 37140 (debug)
  1.1524 +
  1.1525 +Stay compatible with previous releases.
  1.1526 +
  1.1527 +Use new E32/079 and upward components
  1.1528 +
  1.1529 +From Julian:
  1.1530 +============
  1.1531 +
  1.1532 +1. Checking the drive of the saved file name is the same as the
  1.1533 +temporary file's drive name in CBulkData::SaveToNewStoreL() function.
  1.1534 +If they are not the same, the CFileMan's Copy() and Delete() functions
  1.1535 +will be usedinstead of the RFs::Replace() function as Replace() function
  1.1536 +couldn't replace files between different drives.
  1.1537 +
  1.1538 +
  1.1539 +Version 0.04.047
  1.1540 +================
  1.1541 +Made by PeterJ, 02-Dec-1996
  1.1542 +
  1.1543 +Uses    E32/075, E32UTILS/004, F32/042, STORE/030,
  1.1544 +	E32TOOLS/048, EIKTOOLS/118
  1.1545 +
  1.1546 +BAFL ARM DLL sizes: 32908 (release) 36908 (debug)
  1.1547 +
  1.1548 +Main modifications to stay compatible with baser releases.
  1.1549 +
  1.1550 +NB. The debug build test code tends to display some Store
  1.1551 +    notifier messages. This seems to be a common phenomenon.
  1.1552 +
  1.1553 +	The T_SNDDA test code seemed to hang once in the WINS release
  1.1554 +	build while supposedly playing a sound. Could not reproduce,
  1.1555 +	but the recent sound driver changes in E32/075 may be relevant.
  1.1556 +
  1.1557 +From PeterJ:
  1.1558 +============
  1.1559 +
  1.1560 +1. BAFLVER.H once again reflects the release version numbers.
  1.1561 +   (Thanks to Brendan for pointing this out)
  1.1562 +
  1.1563 +2. TRangeRef::TIter::InRange() is now declared const. (As pointed
  1.1564 +   out by Lane)
  1.1565 +
  1.1566 +3. Instances of KNotFound return values replaced with KErrNotFound
  1.1567 +   instead.  (In incremental matcher code)
  1.1568 +   Also instances of KErrDoesNotExist replaced with KErrNotFound.
  1.1569 +   (Bulk data code, sound player code)
  1.1570 +
  1.1571 +4. Obey include files BASE.IBY and EWSRV.IBY updated to reflect
  1.1572 +   UID3 values now defined in E32.  Note that the uid3 parameter
  1.1573 +   has to be in LOWER CASE before it can be recognised.
  1.1574 +
  1.1575 +From DW2:
  1.1576 +=========
  1.1577 +
  1.1578 +1. CClipboard::Store() now returns a CStreamStore instead of a
  1.1579 +   CFileStore reference.
  1.1580 +
  1.1581 +
  1.1582 +Version 0.04.046
  1.1583 +================
  1.1584 +Made by PeterJ, 23-Nov-1996
  1.1585 +
  1.1586 +Uses    E32/074, E32UTILS/003, F32/040, STORE/029,
  1.1587 +	E32TOOLS/045, EIKTOOLS/118
  1.1588 +
  1.1589 +This is not binary compatible with 045.
  1.1590 +
  1.1591 +Size of ARM BAFL.DLL: 32,896 (Release), 36,384 (Debug).
  1.1592 +
  1.1593 +From PeterJ:
  1.1594 +============
  1.1595 +
  1.1596 +General modifications required to support the wide-character
  1.1597 +build variant of BAFL.  This functions in the WINS release but
  1.1598 +not yet in the ARM release.
  1.1599 +
  1.1600 +Excruciating details can be found in
  1.1601 +
  1.1602 +file:////sentinel-main/upeterj/japan/notes/code_modifications.html#BAFL_046
  1.1603 +
  1.1604 +In summary:
  1.1605 +
  1.1606 +1) Base address of the WINS BAFL.DLL changed from 61000000 to
  1.1607 +   40100000 to conform with MartinB's new allocation scheme.
  1.1608 +
  1.1609 +2) Various minor corrections where generic descriptors were being
  1.1610 +   used to refer to non-text data.
  1.1611 +
  1.1612 +3) TResourceReader class member functions that were defined in terms
  1.1613 +   of generic descriptors have been extended to provide explicit
  1.1614 +   8 and 16-bit data member functions. The caller must decide which ones
  1.1615 +   to use depending on whether they are meant to be reading text or
  1.1616 +   binary data. Functions affected are:
  1.1617 +
  1.1618 +   ReadHBufCL, ReadTPtrC, ReadDesCArrayL.
  1.1619 +
  1.1620 +4) The CDesCArray and MDesCArray classes were defined in terms of 8-bit
  1.1621 +   buffers only.  This family now has explicit 8 and 16-bit variants:
  1.1622 +
  1.1623 +   CDesC8Array, CDesC16Array, MDesC8Array and MDesC16Array.
  1.1624 +
  1.1625 +5) Minor test code changes. T_RSC has a new compare function to allow it
  1.1626 +   to compare 8-bit resource strings with internally defined text descriptors.
  1.1627 +   T_RSREAD modified to use explicit 8-bit resource strings.  This will be
  1.1628 +   revisited when the resource compiler supports Unicode strings. UIDs for the
  1.1629 +   dummy compressor files are now assigned in the make file instead of in
  1.1630 +   the MNT command file.
  1.1631 +
  1.1632 +6) Changes to MNT.CMD to support Unicode variants of BAFL. Later versions
  1.1633 +   of BAFL should now be released with MNT BLDUREL and MNT BLDUDEB steps
  1.1634 +   and the test code exercised after building with MNT BTSTUREL and BTSTUDEB.
  1.1635 +
  1.1636 +
  1.1637 +
  1.1638 +Version 0.03.045
  1.1639 +================
  1.1640 +Made by DavidW, 11 Nov 1996
  1.1641 +
  1.1642 +Uses    E32/074, E32UTILS/003, F32/040, STORE/029,
  1.1643 +	E32TOOLS/045, EIKTOOLS/118
  1.1644 +
  1.1645 +Retains binary compatibility with 044
  1.1646 +
  1.1647 +Size of BAFL.DLL (ARM):
  1.1648 +	31,132 bytes (Release), 34,368 (Debug)
  1.1649 +
  1.1650 +Re-put at 11am 12th Nov, with:
  1.1651 +
  1.1652 +*) the class originally called CBaflChangeNotifier renamed to
  1.1653 +CEnvironmentChangeNotifier, on the suggestion of MartinT
  1.1654 +
  1.1655 +*) improved T_CNTF test code, from Brenda
  1.1656 +
  1.1657 +*) an update to use the latest version of all system components (not
  1.1658 +strictly necessary, except for MARMD ROMs on Proteas with 8Mb of RAM)
  1.1659 +    
  1.1660 +
  1.1661 +From DavidW:
  1.1662 +------------
  1.1663 +1)  Added some timing tests for resource file lookup in T_RSREAD
  1.1664 +
  1.1665 +2)  Altered the way the RResourceFile class reads resources, to do a
  1.1666 +seek-and-read together, rather than a seek followed by a separate
  1.1667 +read.  This resulted in a 30% speed improvement
  1.1668 +
  1.1669 +3)  The two functions ReadResourceDataL() and PositionToResourceL()
  1.1670 +of RResourceFile have been withdrawn from the public API (although
  1.1671 +empty implementations remain until the next API thaw)
  1.1672 +
  1.1673 +4)  Switched to EIKTOOLS/118 and therefore now default to doing a
  1.1674 +MARMD release as well as a MARM one (whereas previously the default
  1.1675 +was not to do one)
  1.1676 +
  1.1677 +5)  Simplified ..\tsrc\bld.cmd to use setwhat.cmd
  1.1678 +
  1.1679 +Note that the steps required to build and test a new version of
  1.1680 +Bafl are now
  1.1681 +
  1.1682 +    MNT BLD followed by BTST then RTST for the Ascii Debug variant
  1.1683 +
  1.1684 +    MNT BLDREL / BTSTREL / RTSTREL for the Ascii Release variant
  1.1685 +
  1.1686 +    MNT ARMREL / ATSTREL / BLDIMG / REPRO for Gcc Release
  1.1687 +
  1.1688 +    MNT ARMDEB / ATSTDEB / BLDIMD / REPROD for Gcc Debug
  1.1689 +
  1.1690 +Then MNT PUTREL as usual to release it.
  1.1691 +
  1.1692 +Note that if you are in a binary compatible phase, you need to rename
  1.1693 +
  1.1694 +    BAFL.DEF -> BAFL.FRZ  *and*  BAFLD.DEF -> BAFLD.FRZ
  1.1695 +
  1.1696 +before doing the PUTSRC.
  1.1697 +
  1.1698 +From Brendan:
  1.1699 +-------------
  1.1700 +6)  New class CEnvironmentChangeNotifier in the new module BACNTF.*;
  1.1701 +this is an active object that executes a TCallBack when a change in
  1.1702 +TLocale is detected through RChangeNotifier.  Midnight rollover is
  1.1703 +notified in the same way
  1.1704 +
  1.1705 +7)  New test code T_CNTF for the CEnvironmentChangeNotifier class,
  1.1706 +testing that the callback gets called when locale is changed and
  1.1707 +after midnight crossover.
  1.1708 +
  1.1709 +
  1.1710 +Version 0.01.044
  1.1711 +================
  1.1712 +Made by JulianL, 06 Nov 1996
  1.1713 +
  1.1714 +Uses    E32/072, E32UTILS/002, F32/038, STORE/028,
  1.1715 +	E32TOOLS/045, EIKTOOLS/114
  1.1716 +
  1.1717 +Completely binary compatible with 043
  1.1718 +
  1.1719 +From Julian:
  1.1720 +------------
  1.1721 +1) Fix bug in CSoundPlayerAndRecorder::PlaySoundByName() function
  1.1722 +so that it can play the same name again. Also the
  1.1723 +CSoundPlayerAndRecorder's Cancel() operation will close the store
  1.1724 +which holds the alarm sound opened by the above fountion.
  1.1725 +
  1.1726 +
  1.1727 +Version 0.01.043
  1.1728 +================
  1.1729 +Made by DavidW, 29 October 1996
  1.1730 +
  1.1731 +Uses    E32/072, E32UTILS/002, F32/038, STORE/028,
  1.1732 +	E32TOOLS/045, EIKTOOLS/114
  1.1733 +
  1.1734 +Upgraded to E32/072 et al.
  1.1735 +Note the dependency on E32UTILS for the first time.
  1.1736 +
  1.1737 +Size of BAFL.DLL (ARM):
  1.1738 +	30,660 bytes (Release), 33,764 (Debug)
  1.1739 +
  1.1740 +Re-put at 12:15pm 4/11/96 including MARMD releaseables; modest
  1.1741 +changes were required in the *.?BY and *.CMD files to support this:
  1.1742 +
  1.1743 +   *) the value of EXEUID now has to be passed in as a #define to
  1.1744 +PREP, rather than being hard-wired in the BAFL.OBY file)
  1.1745 +
  1.1746 +   *)  MNT GETE32UTILS needed some lines adding to it, to fetch the
  1.1747 +MARMD components too
  1.1748 +
  1.1749 +From DavidW:
  1.1750 +------------
  1.1751 +1)  Converted to the new WINS directory structure.  All INSTxxx verbs
  1.1752 +in the MNT.CMD are history
  1.1753 +
  1.1754 +2)  Removed the template class MArray<T> as over-complicated for what
  1.1755 +it achieved; replaced MArray<TDesC> with MArrayDesC, and renamed the
  1.1756 +header file MARRAY.H to BAMDESCA.H; recall that the role of the
  1.1757 +MArrayDesC class is to define an abstract interface whereby an "array"
  1.1758 +returns references to constant descriptors, without prejudice as to
  1.1759 +how these descriptors are stored
  1.1760 +
  1.1761 +3)  Renamed the functions of the above class to MdcaCount() and
  1.1762 +MdcaPoint(), to avoid name clashes when multiply inheriting from both
  1.1763 +a MArrayDesC and a "standard" array (see the example which has been
  1.1764 +added to T_DESCA to demonstrate this case)
  1.1765 +
  1.1766 +4)  Changed the implementation of CDesCArray to avoid the run-time
  1.1767 +alloc inefficiencies of the previous implementation, albeit at the
  1.1768 +cost of a thicker class (which publicly inherits functions from
  1.1769 +CArrayFixBase that, from a purist point of view, it ought not to);
  1.1770 +recall that the role of the CDesCArray classes are to provide an
  1.1771 +efficient storage of an array of variable length descriptors, which
  1.1772 +are passed into the array as TDesC& and retrieved as TDesC& (const in
  1.1773 +both cases); there are CDesCArrayFlat and CDesCArraySeg variants;
  1.1774 +whereas the MArrayDesC class only provides "read access" to that
  1.1775 +array, the CDesCArray classes additionally provide "write" functions
  1.1776 +such as AppendL, Delete, and InsertL
  1.1777 +
  1.1778 +5)  The Find() and Sort() functions of CDesCArray now support an
  1.1779 +optional TKeyCmpText parameter - which defaults in both cases to
  1.1780 +ECmpFolded, with the same behaviour as before
  1.1781 +
  1.1782 +6)  Based on some code from Duncan, added the class CClipboard to
  1.1783 +Bafl, to replace the classes CReadClipboard and CWriteClipboard that
  1.1784 +are currently in EText (but which are about to disappear); this new
  1.1785 +implementation utilizes the CStreamDictionary class
  1.1786 +
  1.1787 +Note that this change will *not* require software components like
  1.1788 +EText to become dependent on Bafl.  That's because EText will supply
  1.1789 +functions of the type
  1.1790 +    CopyToClipboardL(CStreamStore&,CStreamDictionary&,...)
  1.1791 +    PasteToClipboardL(CStreamStore&,CStreamDictionary&,...)
  1.1792 +which operate at a level below that of the CClipboard class itself. 
  1.1793 +There are Store() and StreamDictionary() accessor functions in
  1.1794 +CClipboard to return these components.  See the new module BACLIPB.*
  1.1795 +
  1.1796 +7)  New test code T_CLIPB which exercises CClipboard
  1.1797 +
  1.1798 +From Dan:
  1.1799 +---------
  1.1800 +8)  Fixed a bug in the InternalizeL() and ExternalizeL() functions of
  1.1801 +TCellRef, which were only streaming TInt16's as opposed to TInt32's
  1.1802 +
  1.1803 +9)  Added InternalizeL() and ExternalizeL() functions for TRangeRef
  1.1804 +
  1.1805 +10) For completeness, added operator!=() to TRangeRef
  1.1806 +
  1.1807 +11) Updated T_CELL test code to match the above
  1.1808 +
  1.1809 +From Julian:
  1.1810 +------------
  1.1811 +12) Altered TBulkData::OpenL() to Leave rather than Panic if
  1.1812 +incompatible data is found, to allow the application to take
  1.1813 +appropriate recovery action
  1.1814 +
  1.1815 +13) Took advantage of RFs::Replace() rather than Rename(), to allow a
  1.1816 +temporary bulk data storage file to be on a different drive from the
  1.1817 +file it is about to replace
  1.1818 +
  1.1819 +14) The SeekToTime function of CSoundPlayerAndRecorder has been
  1.1820 +altered to allow cancellation (eg during a lengthy seek operation).
  1.1821 +
  1.1822 +
  1.1823 +Version 0.01.042
  1.1824 +================
  1.1825 +Made by DavidW, 27 September 1996
  1.1826 +
  1.1827 +Uses E32 069, F32 035, STORE 024, E32TOOLS 042, EIKTOOLS 113
  1.1828 +
  1.1829 +Size of BAFL.DLL (ARM): 28,084 bytes (inside ROM)
  1.1830 +
  1.1831 +Second attempt at B2-platform release for Bafl
  1.1832 +
  1.1833 +No changes apart from going up to E32/069 et al
  1.1834 +
  1.1835 +
  1.1836 +Version 0.01.041
  1.1837 +================
  1.1838 +Made by DavidW, 25 September 1996
  1.1839 +
  1.1840 +Uses E32 068, F32 034, STORE 023, E32TOOLS 042, EIKTOOLS 113
  1.1841 +
  1.1842 +Size of BAFL.DLL (ARM): 28,084 bytes (inside ROM)
  1.1843 +
  1.1844 +1)  This is the B2 day release, built in synch with E32/068 et al
  1.1845 +
  1.1846 +2)  The API of Bafl will now remain frozen until some time after
  1.1847 +B2-day
  1.1848 +
  1.1849 +3)  From Julian: added a new function for CSoundPlayerAndRecorder to
  1.1850 +return the compressor UID used by the sound data
  1.1851 +
  1.1852 +4)  This is the first Bafl to support a Debug MARM ROM image.  To
  1.1853 +fetch the additional components necessary to build this, you have to
  1.1854 +set the environment variable need_marmd before invoking the GETBLD. 
  1.1855 +Then the verb MNT ARMDEB builds a debug Bafl.DLL for ARM, MNT ATSTDEB
  1.1856 +does the same thing for the test code, and MNT BLDIMD builds a debug
  1.1857 +ROM image file, BAF041P?.IMD
  1.1858 +
  1.1859 +5)  For reference, inside the ROM, the Debug BAFL.DLL is 31092 bytes
  1.1860 +long, compared to 28084 bytes in Release mode
  1.1861 +
  1.1862 +6)  So long as need_marmd remains set, the PUTREL puts a MARMD
  1.1863 +release component on the network, as well as the standard set.
  1.1864 +
  1.1865 +
  1.1866 +Version 0.01.040
  1.1867 +================
  1.1868 +Made by DavidW, 9 September 1996
  1.1869 +
  1.1870 +Uses E32 067, F32 032, STORE 021, E32TOOLS 040, EIKTOOLS 109
  1.1871 +
  1.1872 +Size of BAFL.DLL (ARM): 31,984 bytes
  1.1873 +
  1.1874 +"Binary compatible" re-release, with the changes to filepaths as
  1.1875 +required by the changes in F32/032:
  1.1876 +
  1.1877 +1)  The "temp" directory is now c:\system\temp in all builds
  1.1878 +
  1.1879 +2)  The path searched for sound compressor DLLs is now \system\libs
  1.1880 +in all builds
  1.1881 +
  1.1882 +3)  Added INST INSTDEB and INSTREL verbs to MNT
  1.1883 +
  1.1884 +4)  Call MNT INST inside MNT RTST and MNT INSTREL inside MNT RTSTREL
  1.1885 +
  1.1886 +5)  MNT MAKEDIR makes several more directories, as are now required
  1.1887 +in the emulation drives
  1.1888 +
  1.1889 +6)  Changes to the *.OBY files - partly as required by upgrading to
  1.1890 +E32TOOLS/040 - note that you now put in REPRO.EXE rather than
  1.1891 +REPRO.RAM, and all references to REPRO.RAM can be removed
  1.1892 +
  1.1893 +7)  Removed a whole lot of #ifdef Xxx variants code from the test
  1.1894 +code, since it can now be the same in all variants.
  1.1895 +
  1.1896 +
  1.1897 +Version 0.01.039
  1.1898 +================
  1.1899 +Made by DavidW, 4 September 1996
  1.1900 +
  1.1901 +Uses E32 066, F32 031, STORE 021, E32TOOLS 039, EIKTOOLS 109
  1.1902 +
  1.1903 +Size of BAFL.DLL (ARM): 31,984 bytes
  1.1904 +
  1.1905 +From Julian:
  1.1906 +------------
  1.1907 +1)  Added two new functions, each called SeekToTime(), to the sound
  1.1908 +services classes - one for CSoundData and the other for
  1.1909 +CSoundPlayerAndRecorder
  1.1910 +
  1.1911 +2)  Modified test code to match
  1.1912 +
  1.1913 +3)  Other minor internal changes to sound services code
  1.1914 +
  1.1915 +From DavidW:
  1.1916 +------------
  1.1917 +4)  Removed the last trace of *.INL files from \bafl
  1.1918 +
  1.1919 +5)  Moved some template code out of line, to avoid downstream
  1.1920 +compiler warnings
  1.1921 +
  1.1922 +6)  MNT TOOLS now presupposes that the tools should be fetched to
  1.1923 +\epoc32\tools on the local drive, ie any value of %drv% is ignored
  1.1924 +
  1.1925 +7)  The call to PREP in MNT BLDIMG is no longer preceded by a path to
  1.1926 +PREP (ie %drv%\tools\); ie I now assume that PREP (in t:\tools or
  1.1927 +c:\tools) is in your path and is high enough up it
  1.1928 +
  1.1929 +8)  Simplified parts of MNT.CMD by copying things from EIKON, ie the
  1.1930 +calls to _GETCOMP.CMD
  1.1931 +
  1.1932 +9)  Moved the dummy compressors out of the build of BAFL itself, into
  1.1933 +the build of its test code
  1.1934 +
  1.1935 +NB Some of the test code fails under WINS, due to a known defect in
  1.1936 +F32, but it all runs fine under GCC.
  1.1937 +
  1.1938 +
  1.1939 +Version 0.01.038
  1.1940 +================
  1.1941 +Made by DavidW, 28 August 1996
  1.1942 +
  1.1943 +Uses E32 V066, F32 V030, STORE V020, E32TOOLS V039
  1.1944 +
  1.1945 +Size of BAFL.DLL (ARM): 31,468 bytes
  1.1946 +
  1.1947 +1)  First Bafl release in the post E32/065 world (new directory
  1.1948 +structure and all that)
  1.1949 +
  1.1950 +2)  Completely rewrote large parts of MNT.CMD.  Changed over to the
  1.1951 +new sets of released components (but only release the WINS, WINSD and
  1.1952 +EMARM sets, together with the WINSDDB debugging files)
  1.1953 +
  1.1954 +3)  Re-did every *.MAK file, and removed every *.MDP file from the
  1.1955 +LI.PRJ source file listings
  1.1956 +
  1.1957 +4)  Took advantage of some of the new Store API to simplify some of
  1.1958 +the code and test code (the new way that the RLibrary::Load() et al
  1.1959 +functions work helps too!)
  1.1960 +
  1.1961 +5)  Another Great Step Forward is that "mnt getcomps" now takes
  1.1962 +*much* less time than before (because I no longer need to bother
  1.1963 +fetching all these obscure Greek Hebrew etc variants that the Base
  1.1964 +team used to package irretrievably bound up with the genuine
  1.1965 +articles, but which are now happily separated into their own released
  1.1966 +components
  1.1967 +
  1.1968 +6)  Got fed up with *.OBY files being so un-maintainable.  The
  1.1969 +contents of my BAFL.OBY is now
  1.1970 +
  1.1971 +    #define NOCALL nocallentrypoint
  1.1972 +
  1.1973 +    romname=baf##ROMVER##ROMVAR##.img
  1.1974 +    version=0.01(##ROMVER##)
  1.1975 +
  1.1976 +    #include "header.iby"       /* data definitions */
  1.1977 +    #include "base.iby"         /* standard Base components */
  1.1978 +    #include "ewsrv.iby"        /* text window server */
  1.1979 +
  1.1980 +    file=RELDIR\eshell.exe      system\libs\eshell.exe NOCALL
  1.1981 +    file=RELDIR\estor.dll       system\libs\estor.dll NOCALL
  1.1982 +
  1.1983 +    file=RELDIR\bafl.dll        system\libs\bafl.dll NOCALL
  1.1984 +
  1.1985 +    #include "t_bafl.iby"       /* Bafl test files */
  1.1986 +
  1.1987 +    file=RELDIR\d_exc.exe       system\progs\d_exc.exe
  1.1988 +
  1.1989 +    file=RELDIR\d_gdb.exe       system\progs\d_gdb.exe
  1.1990 +    data=RELDIR\repro.ram       system\progs\repro.exe
  1.1991 +
  1.1992 +which ought to improve maintainability.
  1.1993 +
  1.1994 +The files header.iby, base.iby ought in time to become standards,
  1.1995 +shared by all downstream components (I'll define other *.IBY files
  1.1996 +further down the set of software releases)
  1.1997 +
  1.1998 +7)  Note that you *still* need to PETRAN the released file REPRO.EXE
  1.1999 +into REPRO.RAM before you can expect to create a repro-able ROM
  1.2000 +
  1.2001 +8)  Watch out that you'll get lots of warnings, when compiling under
  1.2002 +Gcc, about the HShareBuf class from Store - you can safely ignore all
  1.2003 +these warnings, but you ought to pay attention to any others, as per
  1.2004 +usual
  1.2005 +
  1.2006 +9)  BAFL has a working MNT VALID verb for the first time ever.  It's
  1.2007 +
  1.2008 +    :valid
  1.2009 +    if not exist ..\valid\nul md ..\valid
  1.2010 +    cd ..\valid
  1.2011 +    call getrel %_vgroup% emarm %_par%
  1.2012 +    petran %_vgroup%.dll %_vgroup%.net
  1.2013 +    petran \epoc32\release\marm\rel\%_vgroup%.dll %_vgroup%.bld
  1.2014 +    pediff -e32 %_vgroup%.net %_vgroup%.bld
  1.2015 +    call cont %g% %p%
  1.2016 +    goto end
  1.2017 +
  1.2018 +which, as you can see, restricts itself to testing the built BAFL.DLL
  1.2019 +(Gcc REL version) against one prepared and released earlier.  So, go
  1.2020 +to a clean drive, type
  1.2021 +
  1.2022 +	pgetbld bafl group 038
  1.2023 +	[ mnt gete32tools ] 
  1.2024 +	mnt armrel
  1.2025 +	mnt valid
  1.2026 +
  1.2027 +and you should see the following reassuring message on the screen:
  1.2028 +
  1.2029 +    PEDIFF - PE file compare V0.01(039)
  1.2030 +    E32 image files are identical.
  1.2031 +
  1.2032 +
  1.2033 +Version 0.01.037
  1.2034 +================
  1.2035 +Made by DavidW, 15 August 1996
  1.2036 +
  1.2037 +Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036
  1.2038 +
  1.2039 +Size of BAFL.DLL (ARM): 31,980 bytes
  1.2040 +
  1.2041 +From Julian:
  1.2042 +------------
  1.2043 +1)  Added two new functions to the sound services:
  1.2044 +
  1.2045 +	CSoundData::DataBeingReadTime() and
  1.2046 +	CSoundPlayerRecorder::SoundDataBeingReadTime()
  1.2047 +
  1.2048 +to assist applications to display their playing status
  1.2049 +
  1.2050 +2)  Other internal changes to the sound services code and test code
  1.2051 +
  1.2052 +From DavidW:
  1.2053 +------------
  1.2054 +3)  Altered the MNT.CMD and BAFL.OBY files of Bafl, bringing them
  1.2055 +closer to the model of Nokie's.  In particular, MNT BLDIMG now
  1.2056 +defaults to producing a P1 (reprogrammable) variant ROM image
  1.2057 +
  1.2058 +4)  Added REPRO and FIXREPRO verbs to MNT.
  1.2059 +
  1.2060 +
  1.2061 +Version 0.01.036
  1.2062 +================
  1.2063 +(Made by JulianL, 09 August 1996)
  1.2064 +
  1.2065 +Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036
  1.2066 +
  1.2067 +Size of BAFL.DLL (ARM): 28,004 bytes (With the new Sound service, extra
  1.2068 +10K bytes are added).
  1.2069 +
  1.2070 +1) Added new class CBulkData which is an interface to streamed data
  1.2071 +that provides fast data manipulation within minimal overhead. The data
  1.2072 +is stored in temporary files, which may provide more storage space than
  1.2073 +RAM. Also the temporary file can be renamed to a proper saved file name.
  1.2074 +
  1.2075 +2) Added new class CSoundData which provides access to sound data. It is a
  1.2076 +specialization of CBulkData, which provides read/write access to the data
  1.2077 +and to the header information. The data has to be read as chunks and this
  1.2078 +class provides a mechanism for ensuring the chunks are kept in tact and keeps
  1.2079 +the total play time correct. The header of the sound data contains the
  1.2080 +compressor UID which is used to create relevant compressor to decode or
  1.2081 +encode the data.
  1.2082 +
  1.2083 +3) Added new class CCompressorBase which provides the generic interface for
  1.2084 +future compressors. The compressors will be used to compress the sound data.
  1.2085 +A new CCompressorList class is created to contain an array of names, capabilities
  1.2086 +and UIDs of the compressors in the list, which is useful for displaying
  1.2087 +informations of the compressors.
  1.2088 +
  1.2089 +4) Added new static class SoundUtilities which can populate a CDesCArray with
  1.2090 +alarm (algorithmic) sounds and sound files in the hardwired search path. The
  1.2091 +path is *:\SYSTEM\SOUNDS\*.SND. It can also return the full path file name of
  1.2092 +the sound data with a given name.
  1.2093 +
  1.2094 +5) The "SoundUtilites" can also populate the CCompressorList with the
  1.2095 +available compressors provided by the system. Each compressor appears as a DLL
  1.2096 +with the extension *.CPR. Two dummy compressors (DUMCM1 and DUMCM2) have been
  1.2097 +created to show the possibility of plugable compressors. Therefore, future
  1.2098 +compresssors can be pluged into the system easily. The SoundUtilities can also
  1.2099 +return the compressor by searching through the system directory on all drives
  1.2100 +with the specified UID. This is particular useful for CSoundData to create
  1.2101 +compressor. The MNT's "bld" and "bldrel" commands will automatically attach
  1.2102 +the correct UIDs for both dummy compressors. But if you compile the dummy
  1.2103 +compressors using MSVC (not MNT's "bld" or "bldrel" commands), you need to
  1.2104 +use the E32UID to attach the correct UIDs into their WINS release of DLL
  1.2105 +which are in \e32sys directory.
  1.2106 +(ie.    E32UID /a DUMCM1.cpr 290000001 268435539 299999001
  1.2107 +	E32UID /a DUMCM1D.cpr 290000002 268435539 299999001
  1.2108 +	E32UID /a DUMCM2.cpr 290000001 268435539 299999002
  1.2109 +	E32UID /a DUMCM2D.cpr 290000002 268435539 299999002,
  1.2110 +The first UID is temporary as later different builds will be put in different
  1.2111 +directorys. The second UID is the KSoundCompressionV1Uid specified in Notes,
  1.2112 +The third UID are dummy values set for the dummy compressors. In the future,
  1.2113 +the real compressor will put their UID (third Uid) into Notes.)
  1.2114 +
  1.2115 +
  1.2116 +6) Added new class CLibraryUnloader which is an active object for unloading a
  1.2117 +given library when the current activated active object finished. This is particular
  1.2118 +useful for the compressors to unload their librarys during destruction phase.
  1.2119 +If the library is closed before the destruction completed, an access violation
  1.2120 +will occur. Therefore, the compressor requires this library unloader to unload
  1.2121 +their librarys after their destruction completed.
  1.2122 +
  1.2123 +7) Added new class CSoundPlayerRecorder which can play and record sound data.
  1.2124 +It can also play the alarm (algorithmic) sound. This sound player and recorder
  1.2125 +allows user to cancel the play or recording at any time as it is an active object.
  1.2126 +
  1.2127 +8) Added new test codes to test the above new classes ie.
  1.2128 +T_BUKDA tests the CBulkData,
  1.2129 +T_SNDUT tests the SoundUtilities,
  1.2130 +T_SNDDA tests the CSoundData and the use of dummy compressors,
  1.2131 +T_SPYRC tests the CSoundPlayerRecorder.
  1.2132 + 
  1.2133 +
  1.2134 +***Note that when running the test codes on the rack, you will experience crashes
  1.2135 +as there is a bug in F32's GetDir() function which cannot find the attached UID of
  1.2136 +a DLL. Jal has already found the bug and the next release of F32 will have the
  1.2137 +fix. For the time being, when you build the rom image, you copy the EFSRV.DLL,
  1.2138 +EFILE.EXE, ELOCAL.FSY and ESHELL.EXE files from r:\BAFL\TEMP directory to your
  1.2139 +\WORK\EMARM directory.***
  1.2140 +
  1.2141 +
  1.2142 +
  1.2143 +Version 0.01.035
  1.2144 +================
  1.2145 +(Made by DavidW, 31 July 1996)
  1.2146 +
  1.2147 +Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036
  1.2148 +
  1.2149 +Size of BAFL.DLL (ARM): 18,876 bytes
  1.2150 +
  1.2151 +*** Re-put 12noon 1st Aug, binary compatible, with a tweak to
  1.2152 +BAMATCH.H to avoid Gcc compiler woes downstream ***
  1.2153 +
  1.2154 +Release in synch with E32/064 et al:
  1.2155 +
  1.2156 +1)  Changed the interface to the TBoundedArray class so that its
  1.2157 +Append function works by reference rather than by pointer, the same
  1.2158 +as the arrays in the base
  1.2159 +
  1.2160 +2)  Commented out some references to Hufman decompression, since this
  1.2161 +functionality no longer exists in TDes.
  1.2162 +
  1.2163 +
  1.2164 +Version 0.01.034
  1.2165 +================
  1.2166 +(Made by DavidW, 9 July 1996)
  1.2167 +
  1.2168 +Uses E32 V063, F32 V027, STORE V017, E32TOOLS V034
  1.2169 +
  1.2170 +Size of BAFL.DLL (ARM): 18,880 bytes
  1.2171 +
  1.2172 +1)  Changed the interface to CDesCArray to use const TDesC& rather
  1.2173 +than const TDesC*; as well as being "the right thing" to do, this
  1.2174 +also helps avoid some annoying Gcc compiler warnings (about taking
  1.2175 +the address of temporaries) downstream.
  1.2176 +
  1.2177 +
  1.2178 +Version 0.01.033
  1.2179 +================
  1.2180 +(Made by DavidW, 8 July 1996)
  1.2181 +
  1.2182 +Uses E32 V063, F32 V027, STORE V017, E32TOOLS V034
  1.2183 +
  1.2184 +Size of BAFL.DLL (ARM): 18,880 bytes
  1.2185 +
  1.2186 +The new compiler resulted in a 14.3% codesize reduction (11.7% due to
  1.2187 +the compiler improvements themselves, and the rest due to getting rid
  1.2188 +of explicit template instantiations)
  1.2189 +
  1.2190 +1)  Release compatible with E32/063 etc
  1.2191 +
  1.2192 +2)  I've now got -g-Wno-ctor-dtor-privacy after every call to maktran,
  1.2193 +to stop going mad on account of idiotic Gcc warning
  1.2194 +
  1.2195 +3)  OTOH the other "new" warning, about taking the address of a
  1.2196 +temporary, is "a good thing", and I rearranged some (test) code to
  1.2197 +avoid it
  1.2198 +
  1.2199 +
  1.2200 +Version 0.01.032
  1.2201 +================
  1.2202 +(Made by DavidW, 23 May 1996)
  1.2203 +
  1.2204 +Uses E32 V059, F32 V023, STORE V014, E32TOOLS V023
  1.2205 +
  1.2206 +Size of BAFL.DLL (ARM): 22,020 bytes
  1.2207 +
  1.2208 +*** Rebased using J-Day components, 4th June 1996 ***
  1.2209 +
  1.2210 +*** Modest changes to admin files, as required by new components ***
  1.2211 +
  1.2212 +From DavidW:
  1.2213 +------------
  1.2214 +1)  Rebuilt compatible with STORE 014.
  1.2215 +
  1.2216 +
  1.2217 +Version 0.01.031
  1.2218 +================
  1.2219 +(Made by DavidW, 20 May 1996)
  1.2220 +
  1.2221 +Uses E32 V059, F32 V023, STORE V013, E32TOOLS V023
  1.2222 +
  1.2223 +Size of BAFL.DLL (ARM): 22,020 bytes
  1.2224 +
  1.2225 +From MartinB:
  1.2226 +-------------
  1.2227 +1)  New Bafl module BACELL.* containing the classes TCellRef and
  1.2228 +TRangeRef which were previously duplicated between the Spreadsheet
  1.2229 +engine and the Grid test code
  1.2230 +
  1.2231 +(Note that this requires BAFL to be dependent on STORE, for the first
  1.2232 +time, which is a shame in a way, but too bad)
  1.2233 +
  1.2234 +2)  New test code T_CELL.CPP to test BACELL
  1.2235 +
  1.2236 +3)  New resource header file BADEF.RH containing a few definitions
  1.2237 +likely to be of use to users of resource files other than Eikon, eg
  1.2238 +the Sheet engine or the Opl translator
  1.2239 +
  1.2240 +
  1.2241 +Version 0.01.030
  1.2242 +================
  1.2243 +(Made by DavidW, 10 May 1996)
  1.2244 +
  1.2245 +Uses E32 V058, F32 V023, E32TOOLS V023
  1.2246 +
  1.2247 +Size of BAFL.DLL (ARM): 20,484 bytes
  1.2248 +
  1.2249 +From DavidW:
  1.2250 +------------
  1.2251 +1)  Rebuilt with latest E32(058) etc - on the rack, the test code now
  1.2252 +goes like a proverbial rocket
  1.2253 +
  1.2254 +
  1.2255 +Version 0.01.029
  1.2256 +================
  1.2257 +(Made by DavidW, 9 May 1996)
  1.2258 +
  1.2259 +Uses E32 V057, F32 V021, E32TOOLS V022
  1.2260 +
  1.2261 +Size of BAFL.DLL (ARM): 20,996 bytes
  1.2262 +
  1.2263 +From DavidW:
  1.2264 +------------
  1.2265 +1)  Changes to class definitions to allow downstream software
  1.2266 +components to meet the EMPTY.CPP test, and thereby cut down on
  1.2267 +code-bloat under GCC
  1.2268 +
  1.2269 +2)  Removed the function MArray::MaCBase() as not required (arising
  1.2270 +out of my lack of understanding of C++ casting rules)
  1.2271 +
  1.2272 +3)  Renamed TIncrMatcherXxx to RIncrMatcherXxx, since they need to
  1.2273 +have a destructor, and TXxx classes should never have a destructor
  1.2274 +
  1.2275 +(actually Colly says RXxx classes should never have a destructor
  1.2276 +either, but I'll leave things as they are for now)
  1.2277 +
  1.2278 +4)  Even more changes to the RIncrMatcherXxx class tree, eg to avoid
  1.2279 +copy constructors being generated on the fly
  1.2280 +
  1.2281 +
  1.2282 +Version 0.01.028
  1.2283 +================
  1.2284 +(Made by DavidW, 1 May 1996)
  1.2285 +
  1.2286 +Uses E32 V057, F32 V021, E32TOOLS V021
  1.2287 +
  1.2288 +Size of BAFL.DLL (ARM): 20,484 bytes
  1.2289 +
  1.2290 +From Brendan:
  1.2291 +-------------
  1.2292 +1)  New feature added to box layout engine to support a layout being
  1.2293 +reset and then recalculated with different parameters in force, eg
  1.2294 +allowing an application to determine the largest possible font that
  1.2295 +can be used for a set of controls inside a fixed region of screen:
  1.2296 +
  1.2297 +2)  Added virtual function ResetAll() to CBox and CBranchBox(), which
  1.2298 +recursively reset the sizes of the boxes
  1.2299 +
  1.2300 +3)  New test code T_BLO2 for the above features
  1.2301 +
  1.2302 +
  1.2303 +Version 0.01.027
  1.2304 +================
  1.2305 +(Made by DavidW, 26 April 1996)
  1.2306 +
  1.2307 +Uses E32 V057, F32 V021, E32TOOLS V021
  1.2308 +
  1.2309 +Size of BAFL.DLL (ARM): 20,484 bytes
  1.2310 +
  1.2311 +From DavidW:
  1.2312 +------------
  1.2313 +1)  Re-release compatible with E32(057) and F32(021): the only change
  1.2314 +required was in the *.OBY file, as per the E32 release notes
  1.2315 +
  1.2316 +
  1.2317 +Version 0.01.026
  1.2318 +================
  1.2319 +(Made by DavidW, 15 April 1996)
  1.2320 +
  1.2321 +Uses E32 V056, F32 V020, E32TOOLS V020
  1.2322 +
  1.2323 +Size of BAFL.DLL (ARM): 20,484 bytes
  1.2324 +
  1.2325 +From DavidW:
  1.2326 +------------
  1.2327 +1)  Fixed the resource reader class to handle mis-aligned
  1.2328 +sub-resources, eg reading a TInt32 following inline after a text
  1.2329 +string; added some tests to T_RSREAD to test this case
  1.2330 +
  1.2331 +2)  Made a few changes to BABLO.* to make it clean-compile, without
  1.2332 +any compiler warnings, in all build variants.
  1.2333 +
  1.2334 +
  1.2335 +Version 0.01.025
  1.2336 +================
  1.2337 +(Made by DavidW, 15 April 1996)
  1.2338 +
  1.2339 +Uses E32 V056, F32 V020, E32TOOLS V020
  1.2340 +
  1.2341 +Size of BAFL.DLL (ARM): 19,972 bytes
  1.2342 +
  1.2343 +Note that ideas on how MNT VALID might work (described in the
  1.2344 +previous release notes) now look a bit simplistic; more research in
  1.2345 +this area is required
  1.2346 +
  1.2347 +From DavidW:
  1.2348 +------------
  1.2349 +1)  Converted the CONE files LAYOUT.CPP, BLOMAIN.HRH and BLOMAIN.H to
  1.2350 +be part of BAFL instead, as the files BABLO.* ("Box LayOut" engine),
  1.2351 +making adjustments as required to run on ARM; likewise converted the
  1.2352 +CONE test code \cone\layout\tlayout to run as \bafl\tsrc\t_blo
  1.2353 +
  1.2354 +2)  Converted the CONE files COERSBUF.* to be part of BAFL instead,
  1.2355 +as the files BARSREAD.* ("ReSource READer"), making adjustments as
  1.2356 +required to run on ARM; wrote new test code T_RSREAD for this class,
  1.2357 +which reads resources from the same test file T_RSC.RSC that is used
  1.2358 +by test code T_RSC
  1.2359 +
  1.2360 +3)  Slimmed down some of the test code T_RSC, since it was boring and
  1.2361 +repetitive for little gain, and since T_RSREAD now provides an
  1.2362 +independent test of using RResourceFile
  1.2363 +
  1.2364 +4)  Added a batch file to run under the Text Shell on the rack,
  1.2365 +RACK.BTF (renamed to RACK.BAT in the ROM), with the intended effect
  1.2366 +of running all BAFL test programs one after the other; what actually
  1.2367 +happens is that they all get run simultaneously, which I suppose is
  1.2368 +less boring and exercises the O/S more thoroughly; so the way of
  1.2369 +running all test code under WINS is to CD to \bafl\tsrc and to type
  1.2370 +"RUN", and the way of running all test code on the rack is to CD to
  1.2371 +\test and to type "RACK.BAT".
  1.2372 +
  1.2373 +
  1.2374 +Version 0.01.024
  1.2375 +================
  1.2376 +(Made by DavidW, 12 April 1996)
  1.2377 +
  1.2378 +Uses E32 V056, F32 V020, E32TOOLS V020
  1.2379 +
  1.2380 +Size of BAFL.DLL (ARM): 8196 bytes
  1.2381 +
  1.2382 +From DavidW:
  1.2383 +------------
  1.2384 +1)  Added VALID verb to MNT.CMD as follows:
  1.2385 +
  1.2386 +    :valid
  1.2387 +    if not exist ..\valid\nul md ..\valid
  1.2388 +    cd ..\valid
  1.2389 +    call getrel %_vgroup% emarm %_par%
  1.2390 +    fc /b %_vgroup%.dll \work\emarm\%_vgroup%.dll > ..\valid.lis
  1.2391 +    call cont %g% %p%
  1.2392 +    type ..\valid.lis
  1.2393 +    goto end
  1.2394 +
  1.2395 +which can be used as a gauge of whether a BAFL.DLL built on one
  1.2396 +person's PC matches that built (under supposedly identical
  1.2397 +circumstances) on another person's PC.  It's only a "gauge" since
  1.2398 +there can be, in my experience so far, up to two blocks of four bytes
  1.2399 +each that vary, which are presumably embedded date-time stamps
  1.2400 +
  1.2401 +2)  Moved the following modules from CONE to BAFL: BNDARRAY (renamed
  1.2402 +to BABNDA), COEDESCA (renamed to BADESCA), and COEMATCH (renamed to
  1.2403 +BAMATCH); made alterations as required for an ARM build
  1.2404 +
  1.2405 +3)  Renamed CTextBuf to RTextBuf, and CIncrMatcherTextBuf to
  1.2406 +RIncrMatcherTextBuf, since whatever else these classes may be, they
  1.2407 +are *not* C's (as they do not inherit from CBase)
  1.2408 +
  1.2409 +4)  Wrote T_BND test code for TBoundedArray; this showed up the fact
  1.2410 +that recent E32 changes (to compress flat buffers when they are
  1.2411 +reset) have broken TBoundedArray; fixed this by overriding the
  1.2412 +Compress() function, to do nothing
  1.2413 +
  1.2414 +5)  Wrote T_DESCA test code for the CDesCArray family
  1.2415 +
  1.2416 +6)  Moved Brendan's TMATCH test code for the incremental matchers to
  1.2417 +Bafl, renaming it (Bafl style) to T_MATCH, and converting it as
  1.2418 +required for ARM
  1.2419 +
  1.2420 +(all four BAFL test programs run successfully on the rack)
  1.2421 +
  1.2422 +7)  Deleted the header file BAFLSTD.H as an anachronism - you should
  1.2423 +delete any copies you have, eg in \e32inc; in the modern standard,
  1.2424 +you should include individual header files like BARSC.H or BNDARRAY.H
  1.2425 +directly, as and when you need them
  1.2426 +
  1.2427 +8)  Outputting all errors from GCC builds to the same file CERR.TXT
  1.2428 +has got to be a mistake; I now output errors to %1.AER files (Arm
  1.2429 +ERror files), eg using the batch file \bafl\tsrc\doarm.cmd:
  1.2430 +
  1.2431 +    call maktran %1.mak %1.arm
  1.2432 +    call nmake -f %1.arm /x %1.aer
  1.2433 +
  1.2434 +9)  Some long-overdue TLC for files in the BAFL group generally.
  1.2435 +
  1.2436 +
  1.2437 +Version 0.01.023
  1.2438 +================
  1.2439 +(Made by DavidW, 9 April 1996)
  1.2440 +
  1.2441 +Uses E32 V056, F32 V020, E32TOOLS V019
  1.2442 +
  1.2443 +From DavidW:
  1.2444 +------------
  1.2445 +1)  Release compatible with E32(056) etc
  1.2446 +
  1.2447 +2)  Had to changed all KFileXxx file-open constants to EFileXxx; had
  1.2448 +to change EShareReadersOnly to EFileShareReadersOnly, etc
  1.2449 +
  1.2450 +3)  Found out that it was daft to set the "-v" flag in BLDIMG.CMD,
  1.2451 +since the verbose output seems to end up in a file E32ROM.LOG anyway;
  1.2452 +so my \bafl\tsrc\bldimg.cmd is now just
  1.2453 +
  1.2454 +	e32rom -gcc bafl.oby
  1.2455 +
  1.2456 +4)  Had to replace the line
  1.2457 +
  1.2458 +	secondary=\work\emarm\efsrv.exe sys\efsrv.exe
  1.2459 +
  1.2460 +in BAFL.OBY with the pair of lines
  1.2461 +
  1.2462 +	secondary=c:\work\emarm\efile.exe sys\efile.exe
  1.2463 +	file=c:\work\emarm\efsrv.dll sys\efsrv.dll
  1.2464 +
  1.2465 +
  1.2466 +Version 0.01.022
  1.2467 +================
  1.2468 +(Made by DavidW, 22 March 1996)
  1.2469 +
  1.2470 +Uses E32 V055, F32 V019, E32TOOLS V017
  1.2471 +
  1.2472 +From Bret:
  1.2473 +----------
  1.2474 +1)  This is the first release of BAFL that supports an ARM build, and
  1.2475 +whose test code runs on the rack
  1.2476 +
  1.2477 +2)  In order to build the ARM version of this code, you will need to
  1.2478 +have installed the GCC tools on your PC: if you haven't done so
  1.2479 +already, type
  1.2480 +    TOOLS GCC
  1.2481 +(invokes the t:\tools\tools.bat batch file)
  1.2482 +
  1.2483 +3)  You will also need a suitable version of the E32TOOLS: type
  1.2484 +    MNT GETE32TOOLS
  1.2485 +
  1.2486 +4)  Apart from this, the standard GETBLD (or MNT GETCOMPS) will fetch
  1.2487 +all the software components required to build BAFL in either WINS or
  1.2488 +ARM variants
  1.2489 +
  1.2490 +5)  Type MNT ARMREL to build the Release version of the ARM variant
  1.2491 +of BAFL.DLL, and MNT ATSTREL to build the Release version of the ARM
  1.2492 +variant of T_RSC.EXE
  1.2493 +
  1.2494 +(Inspect the text file CERR.TXT for any build errors; note that you
  1.2495 +can get lots of strange behaviour if you have failed to add \gcc\bin
  1.2496 +to your PATH)
  1.2497 +
  1.2498 +6)  In the ..\tsrc directory, type BLDIMG to build the file
  1.2499 +ARMROM.IMG (this follows instructions in the BAFL.OBY text file)
  1.2500 +
  1.2501 +7)  Use the network to transfer ARMROM.IMG to a RACK PC and type
  1.2502 +    PEIGER ARMROM.IMG
  1.2503 +to repro the rack with that ROM ...
  1.2504 +
  1.2505 +8)  As it happens very few changes to the BAFL code were required, to
  1.2506 +allow the compilation and linking under GCC
  1.2507 +
  1.2508 +From DavidW:
  1.2509 +------------
  1.2510 +9)  Renamed the WINS release components BAFL and BAFLPDB to EWINS and
  1.2511 +EWINSDB; following the practice from other software groups, the ARM
  1.2512 +release component is called EMARM
  1.2513 +
  1.2514 +10) Renamed the MDWORK verb of MNT to MAKEWORK (this makes all the
  1.2515 +ARM work directories as well as the EWINS work directories).
  1.2516 +
  1.2517 +
  1.2518 +Version 0.01.021
  1.2519 +================
  1.2520 +(Made by DavidW, 4 March 1996)
  1.2521 +
  1.2522 +Uses E32 V054, F32 V018
  1.2523 +
  1.2524 +1)  Re-release compatible with E32(054) and F32(018) (ie VC 4)
  1.2525 +
  1.2526 +2)  Removed "/FORCE" declarations in project settings, to allow
  1.2527 +incremental linking for debug builds.
  1.2528 +
  1.2529 +
  1.2530 +Version 0.01.020
  1.2531 +================
  1.2532 +(Made by DavidW, 26 February 1996)
  1.2533 +
  1.2534 +Uses E32 V053, F32 V017
  1.2535 +
  1.2536 +From DavidW:
  1.2537 +------------
  1.2538 +1)  RResourceFile now has an inline function Offset() returning the
  1.2539 +value of iOffset, as required in order for CONE/Eikon to properly
  1.2540 +support multiple application resource files being loaded in the same
  1.2541 +enivronment
  1.2542 +
  1.2543 +2)  Added a TCleanupItem() operator to RResourceFile, allowing
  1.2544 +RResourceFile objects to be placed on the cleanup stack; the contents
  1.2545 +of the associated Cleanup() function is to call Close()
  1.2546 +
  1.2547 +3)  Renamed the GETJBLD verb of MNT.CMD to GETCOMPS
  1.2548 +
  1.2549 +
  1.2550 +Version 0.01.019
  1.2551 +================
  1.2552 +(Made by DavidW, 21 February 1996)
  1.2553 +
  1.2554 +Uses E32 V053, F32 V017
  1.2555 +
  1.2556 +This build is binary compatible with BAFL 018; a downstream component
  1.2557 +that works with BAFL 018 should work equally well with BAFL 019,
  1.2558 +without any recompilation
  1.2559 +
  1.2560 +From MartinT:
  1.2561 +-------------
  1.2562 +1)  Fixed bug whereby, if a file contained n resources, behaviour
  1.2563 +when attempting to read resources n+1 and n+2 was unpredictable
  1.2564 +(diagnosed by Jal).  It is now possible to reliably read through all
  1.2565 +the resources in a file; attempting to read beyond the end results in
  1.2566 +a Leave.
  1.2567 +
  1.2568 +
  1.2569 +Version 0.01.018
  1.2570 +================
  1.2571 +(Made by DavidW, 19 February 1996)
  1.2572 +
  1.2573 +Uses E32 V053, F32 V017
  1.2574 +
  1.2575 +1)  Re-release compatible with E32(053) and F32(017)
  1.2576 +
  1.2577 +2)  Added EXPORT and DELWORK verbs to MNT.CMD doing the usual things
  1.2578 +
  1.2579 +3)  THIS BUILD WORKS IN RELEASE MODE TOO!  (Not that I changed
  1.2580 +anything; I guess that some bug fixes or other changes elsewhere in
  1.2581 +the system must have put right whatever was going wrong before)
  1.2582 +
  1.2583 +
  1.2584 +Version 0.01.017
  1.2585 +================
  1.2586 +(Made by DavidW, 15 February 1996)
  1.2587 +
  1.2588 +Uses E32 V052, F32 V016
  1.2589 +
  1.2590 +From MartinT:
  1.2591 +-------------
  1.2592 +1) Altered RResourceFile class to better encapsulate the
  1.2593 +20-bit offset generated by the NAME statement in resource
  1.2594 +files.  There is now an iOffset member which carries the
  1.2595 +offset corresponding to the name.  Initially this contains
  1.2596 +zero (set by OpenL()).  When ConfirmSignature() is called,
  1.2597 +the iOffset() is set from the top 20 bits of the second long in
  1.2598 +the signature record.
  1.2599 +
  1.2600 +2) There is a OwnsResourceId() function which returns ETrue
  1.2601 +if a resource id has top 20 bits the same as the iOffset's, or
  1.2602 +if its top 20 bits are zero.  This means that resources can be
  1.2603 +read in sequence 1, 2, 3 ..., or in sequence 0xabcde001,
  1.2604 +0xabcde002 ..., where 0xabcde000 is the offset.  The latter
  1.2605 +is intended for CONE application use.  The former can also
  1.2606 +be useful.
  1.2607 +
  1.2608 +3) Changed the class to allow it to be a value type
  1.2609 +rather than a reference type.  Also, changed from
  1.2610 +privately inheriting an RFile to owning one.  You now
  1.2611 +use OpenL() and Close() to open and close the resource
  1.2612 +file, and you can pass them around by value.
  1.2613 +
  1.2614 +
  1.2615 +Version 0.01.016
  1.2616 +================
  1.2617 +(Made by DavidW, 31 January 1996)
  1.2618 +
  1.2619 +Uses E32 V052, F32 V016
  1.2620 +
  1.2621 +1)  Re-release compatible with E32(052) and F32(016)
  1.2622 +
  1.2623 +
  1.2624 +Version 0.01.015
  1.2625 +================
  1.2626 +(Made by DavidW, 8 January 1996)
  1.2627 +
  1.2628 +Uses E32 V051, F32 V015
  1.2629 +
  1.2630 +1)  Re-release compatible with E32(051) and F32(015)
  1.2631 +
  1.2632 +
  1.2633 +Version 0.01.014
  1.2634 +================
  1.2635 +(Made by DavidW, 19 December 1995)
  1.2636 +
  1.2637 +Uses E32 V050, F32 V014
  1.2638 +
  1.2639 +1)  Re-release compatible with E32(050) and F32(014)
  1.2640 +
  1.2641 +
  1.2642 +Version 0.01.013
  1.2643 +================
  1.2644 +(Made by DavidW, 4 December 1995)
  1.2645 +
  1.2646 +Uses E32 V049, F32 V013
  1.2647 +
  1.2648 +1)  Re-release compatible with E32(049) and F32(013)
  1.2649 +
  1.2650 +
  1.2651 +Version 0.01.012
  1.2652 +================
  1.2653 +(Made by DavidW, 16 November 1995)
  1.2654 +
  1.2655 +Uses E32 V048, F32 V012
  1.2656 +
  1.2657 +1)  Re-release compatible with E32(048) and F32(012)
  1.2658 +
  1.2659 +
  1.2660 +Version 0.01.011
  1.2661 +================
  1.2662 +(Made by DavidW, 19 October 1995)
  1.2663 +
  1.2664 +Uses E32 V047, F32 V011
  1.2665 +
  1.2666 +1)  Added ConfirmSignature(TInt aSignature,TInt &aOffset) to
  1.2667 +RResourceFile, which can be called for resource files whose first
  1.2668 +resource consists of two 32-bit integers
  1.2669 +
  1.2670 +   *) the first being a signature, which must match the passed value
  1.2671 +exactly
  1.2672 +
  1.2673 +   *) the second having no special meaning as far as RResourceFile is
  1.2674 +concerned (but higher level software may interpret it eg as the
  1.2675 +"offset" value for the resource file); this gets written to aOffset
  1.2676 +
  1.2677 +The function returns either KErrNone, or an error value if the
  1.2678 +signature does not match.
  1.2679 +
  1.2680 +
  1.2681 +Version 0.01.010
  1.2682 +================
  1.2683 +(Made by DavidW, 9 October 1995)
  1.2684 +
  1.2685 +Uses E32 V047, F32 V011
  1.2686 +
  1.2687 +1)  Rebuilt to work with new E32 and F32
  1.2688 +
  1.2689 +Unfortunately the release mode code still fails to run (it still
  1.2690 +comes grinding to a halt in exactly the same place as before -
  1.2691 +somewhere deep inside F32).
  1.2692 +
  1.2693 +
  1.2694 +Version 0.01.009
  1.2695 +================
  1.2696 +(Made by DavidW, 6 September 1995)
  1.2697 +
  1.2698 +Uses E32 V045, F32 V009
  1.2699 +
  1.2700 +1)  Rebuilt to work with new E32 and F32
  1.2701 +
  1.2702 +
  1.2703 +Version 0.01.008
  1.2704 +================
  1.2705 +(Made by DavidW, 28 August 1995)
  1.2706 +
  1.2707 +Uses E32 V044, F32 V008
  1.2708 +
  1.2709 +1)  Added RResourceFile::AllocReadLC, which does the same as
  1.2710 +AllocRead but leaves the allocated cell (for the returned HBufC*
  1.2711 +pointer) on the cleanup list
  1.2712 +
  1.2713 +2)  Converted test resource file to use BUF instead of STR and so no
  1.2714 +longer need to go around removing terminating zeroes; also made the
  1.2715 +test resource file more independent from xwim's S_.RSC.
  1.2716 +
  1.2717 +
  1.2718 +Version 0.01.007
  1.2719 +================
  1.2720 +(Made by DavidW, 23 August 1995)
  1.2721 +
  1.2722 +Uses E32 V044, F32 V008
  1.2723 +
  1.2724 +1)  Converted to work with new E32 and F32
  1.2725 +
  1.2726 +2)  I've taken a policy decision that, wherever relevant, Bafl will
  1.2727 +presuppose that a trap handler has been installed by the caller. 
  1.2728 +This will always be the case in an Hcil application (as
  1.2729 +CHci::ExecuteD will install a trap handler), but other users of Bafl
  1.2730 +will have to take independent steps.  See code in T_RSC for an
  1.2731 +example
  1.2732 +
  1.2733 +3)  Thus CResourceFile::AllocReadL now presupposes that a trap
  1.2734 +handler has been installed (and that the caller is already inside a
  1.2735 +TRAP harness) - this allows the code to simplify (there's no longer
  1.2736 +any need for a local TRAP harness)
  1.2737 +
  1.2738 +
  1.2739 +Version 0.01.006
  1.2740 +================
  1.2741 +(Made by DavidW, 21 August 1995)
  1.2742 +
  1.2743 +Uses E32 V043, F32 V007
  1.2744 +
  1.2745 +1)  Converted to work with new E32 and F32
  1.2746 +
  1.2747 +2)  Added L's to the names of all functions that can leave
  1.2748 +
  1.2749 +3)  Moved BAFL.MAK from ..\src to ..\group for the usual reason (to
  1.2750 +make it easier for people debugging downstream to have the IDE know
  1.2751 +automatically where to load bafl source code from)
  1.2752 +
  1.2753 +
  1.2754 +Version 0.01.005
  1.2755 +================
  1.2756 +*** Re-made by DavidW, 28 July 1995, using the new versions of E32
  1.2757 +v041 and F32 v006 (as the old one was link-incompatible)
  1.2758 +
  1.2759 +(Made by DavidW, 26 July 1995)
  1.2760 +
  1.2761 +Available on R:
  1.2762 +
  1.2763 +Uses E32 V041, F32 V006 (from R:)
  1.2764 +
  1.2765 +1)  Converted to work with new E32 and F32
  1.2766 +
  1.2767 +2)  MNT.CMD improved, copying many ideas from Hcil
  1.2768 +
  1.2769 +3)  Converted to new-style no .LNK files CMD-line build system.
  1.2770 +
  1.2771 +
  1.2772 +Version 0.01.004
  1.2773 +================
  1.2774 +(Made by DavidW, 23 June 1995)
  1.2775 +
  1.2776 +Available on S:
  1.2777 +
  1.2778 +Uses E32 V039, F32 V005
  1.2779 +
  1.2780 +1)  Converted to work with new E32 and F32
  1.2781 +
  1.2782 +
  1.2783 +Version 0.01.003
  1.2784 +================
  1.2785 +(Made by DavidW, 22 May 1995)
  1.2786 +
  1.2787 +Uses E32 V038, F32 V003
  1.2788 +
  1.2789 +1)  RResourceFile::Read now tests to see if the resource will fit in
  1.2790 +the passed buffer, and if not, panics
  1.2791 +
  1.2792 +2)  Resource files are now opened with EShareReadersOnly
  1.2793 +
  1.2794 +
  1.2795 +Version 0.01.002
  1.2796 +================
  1.2797 +(Made by DavidW, 15 May 1995)
  1.2798 +
  1.2799 +Uses E32 V035, F32 V001
  1.2800 +
  1.2801 +NB There's currently only an ascii debug version; Unicode threatens a
  1.2802 +huge can of worms that will require a *lot* of attention to sort out.
  1.2803 +
  1.2804 +1)  Now uses F32 instead of home-brewed access to files
  1.2805 +
  1.2806 +2)  CResourceFile now exists as RResourceFile (a subclass of RFile
  1.2807 +from F32)
  1.2808 +
  1.2809 +3)  Provided the static RResourceFile::New as a convenience function
  1.2810 +
  1.2811 +4)  Simplified many of the function names
  1.2812 +
  1.2813 +5)  Provided an HBufC *AllocRead() function to match the void Read()
  1.2814 +function, but this is broken for two reasons:
  1.2815 +
  1.2816 +6)  First, the current implementation of HBufC::New is useless (it
  1.2817 +sets the iLength field to zero, but there's no useful way to change
  1.2818 +this later to something non-zero!)
  1.2819 +
  1.2820 +7)  Second, the current implementation of Hufman decoding often
  1.2821 +decodes one extra spurious character, which can overwrite the end of
  1.2822 +a supplied buffer
  1.2823 +
  1.2824 +
  1.2825 +Version 0.01.001
  1.2826 +================
  1.2827 +(Made by MartinB, 11 May 1995)
  1.2828 +
  1.2829 +Uses E32 V035
  1.2830 +
  1.2831 +First release.
  1.2832 +