os/ossrv/lowlevellibsandfws/apputils/group/RELEASE.TXT
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 Version 1.00.103
     2 ===================================
     3 Released into:	GT Mainline 578
     4 Built against:	GT Mainline 574b ALL VARIENTS 
     5 Released by:	Franco Bellu
     6 Uses:		EUSER ESOCK INSOCK IMUT INETPROTUTIL BAFL
     7 For debug, add: FLOGGER EFSRV
     8 For tests, add: HTTPTESTUTILS, C32
     9 Changelist:	xxx
    10 Website:	http://lon-wapbuild01.INTRA/HTTP_Project/ 
    11 
    12 
    13 Summary
    14 =======
    15 
    16 
    17 
    18 Defects Fixed
    19 =============
    20 * Fixed defect  SAM-54WFUN : " String pool does not return an error when a string cannot be found in a string table using StringF() method "
    21 * Fixed defect BEU-55CND8 "using the CStringPoolImplementation from an empty string causes an access violation "
    22 * Fixed defect CLE-536M4D "String pool comparison operators should ASSERT_DEBUG check for use of multiple table "
    23 
    24 API Changes
    25 ===========
    26 None
    27 
    28 Other Significant Changes
    29 =========================
    30 None
    31 
    32 
    33 Known Issues
    34 ============
    35 None
    36 
    37 
    38 -----------
    39 Version 1.00.102
    40 ================
    41 Tim and Arun, 3 July 2001
    42 
    43 CR for BAFL and LocE32: allow customizable language downgrade paths to be specified as
    44 part of the locale.
    45 
    46 Version 1.00.101
    47 ================
    48 Made by Kevin, 11 August 1999
    49 
    50 Requires RCOMP 318 because of the BC break in the handling of TEXT16 resources.
    51 
    52 Added TResourceReader::AlignCountedPtr16 which returns the counted string length and
    53 adjusts the pointer past both the length byte and any additional padding byte. The value 
    54 of the padding byte is checked with an __ASSERT_DEBUG(): the wrong value will cause a
    55 panic with code EBafPanicUnicodeTextPaddingError (=14).
    56 
    57 Added AlignCountedPtr16 calls to the functions which read a Unicode descriptor from 
    58 a resource.
    59 
    60     TResourceReader::ReadHBufC16L()
    61 	TResourceReader::ReadTPtrC16()
    62 	TResourceReader::ReadTPtrC16(TInt aIndex,const TDesC8* aBuffer)
    63 
    64 Modified T_RSC.CPP to correct the r_text_signature check which discriminated between a Unicode
    65 resource file and an 8-bit resource file: the RCOMP padding algorithm puts in an additional
    66 padding byte, which is now checked. Used _LIT() for the resource file names and arranged to build
    67 the TRSC resource via the T_RSC.MMP file.
    68 
    69 Extended T_RSREAD.CPP to test resources and arrays which contains a mixture of 8 and 16 bit text, 
    70 organised to test zero-length strings and Unicode strings with both odd and even alignment. 
    71 Added the TRSC resource to the T_RSREAD.MMP file for good measure, and get the resource file name 
    72 from the shared T_RSC.H include file.
    73 
    74 Modified BLD.INF to mark T_CLINE as a manual test and T_LIBT as a supporting DLL.
    75 
    76 NB ALSO INCLUDES CHANGES MADE IN RELEASE 100 WHICH ARE NOT DOCUMENTED HERE
    77 
    78 
    79 Version 1.00.091
    80 ================
    81 Made by DavidK, 27 May 1999
    82 
    83 Uses as 090. Identical release to 090 apart from wins urel and Marm variants also built.
    84 
    85 Version 1.00.090
    86 ================
    87 Made By DavidK, 26 May 1999
    88 
    89 Uses E32/156, F32/122, STORE/050, E32UTILS/019, 
    90 	E32TOOLS/095, E32TOOLP/098, EIKTOOLS 133
    91 
    92 Renamed the class BaflFileSortTable to CBaflFileSortTable so source incompatible but BC with 089 
    93 (which was a frozen deffile version of 088)
    94 Intended for use with the first public release of Uikon.
    95 
    96 Version 1.00.088
    97 ================
    98 Made by MarcoS, 29 April 1999
    99 
   100 	Uses E32/156, F32/122, STORE/050, E32UTILS/019, 
   101 	E32TOOLS/095, E32TOOLP/098, EIKTOOLS 128
   102 
   103 The sound staff has been moved from Bafl to form a new component: BaflSnd.
   104 
   105 Most of the utilities defined on EikUtils (Eikon) have been transferred
   106 to BaflUtils (Bafl).
   107 
   108 
   109 Version 1.00.087
   110 ================
   111 Made by ChrisD, 4 December 1998
   112 
   113 	Uses E32/156, F32/122, STORE/050, E32UTILS/019, 
   114 	E32TOOLS/095, E32TOOLP/098, EIKTOOLS 128
   115 
   116 Minor source changes for boilerplating Symbian copyright text.
   117 MNT command changed to use new version of E32TOOLP (098) and 
   118 valid command modified to use new evalid command for validation.
   119 ROM building scripts updated so ROM could be built.
   120 
   121 Built using VC5 and Service Pack 3.  Release tested on the following
   122 variants:
   123 
   124 wins/deb        marm/deb
   125 wins/rel        marm/rel
   126 wins/udeb       marm/udeb
   127 wins/urel       marm/urel
   128 
   129 All tests passed on a PB rack.  Note that test code T_SNDDA will fail 
   130 under WINS on PC's without a soundcard.
   131 
   132 Version 1.00.086
   133 ================
   134 Made by MattM 28 October 1998
   135 
   136 	Uses E32/156, F32/122, STORE/050, E32UTILS/019, 
   137 	E32TOOLS/095, E32TOOLS/096, EIKTOOLS 128
   138 
   139 Changed Unicode third UID on BAFL.DLL
   140 Changed Unicode second UID on clipboard file
   141 
   142 Version 1.00.085
   143 ================
   144 (Made by SimonC, 29 September 1998)
   145 
   146 	Uses E32/125, F32/095, STORE/047, E32UTILS/019, 
   147 	E32TOOLS/092, E32TOOLS/091, EIKTOOLS 128
   148 
   149 Backwards but not forwards compatible with 078
   150 Built using VC5.  .PDBs are incompatible with VC4
   151 
   152 1) Changed RResourceFile::ConfirmSignatureL() to always confirm resource
   153 file signatures on the assumption that no-one can possibly be using version
   154 003 files any longer (they were superceded two years ago) and the existing 
   155 resource layout and structures are fixed now for as long as we support BC.
   156 
   157 2) Added RResourceFile::SignatureL() which returns the signature of the 
   158 resource file.  This shouldn't be required by anyone or anything other than 
   159 Eikon.
   160 
   161 3) Changed const TUint KBaflCharTruncation in BAUTILS.H to a const TUint to 
   162 prevent a VC5 warning.
   163 
   164 Note that test code T_SNDDA will fail in wins builds on pcs without a sound card
   165 
   166 
   167 
   168 Version 1.00.078
   169 ================
   170 (Made by SimonC, 16 Mar 1998)
   171 
   172 	Uses E32/125, F32/095, STORE/047, E32UTILS/019, 
   173 	E32TOOLS/092, E32TOOLS/091, EIKTOOLS 125
   174 
   175 No source changes - rebuilt with E32 125 et al
   176 
   177 Changed *.IBY to support unicode ROMs and reflect recent E32 changes
   178 
   179 All WINS and MARM release releases entirely forward compatible
   180 MARM Debug releases are incompatible
   181 
   182 
   183 
   184 Version 1.00.077
   185 ================
   186 (Made by SimonC, 9 Dec 1997)
   187 
   188 	Uses E32/107, F32/074, STORE/043, E32TOOLS/082, EIKTOOLS 123
   189 
   190 Backward but not forward compatible with 076
   191 
   192 From MartinT
   193 In bacline.*, class CCommandLineArguments(), which gives Count() and 
   194 Arg() functions whose purpose is similar to argv and argc parsing in 
   195 conventional C/C++ programming.  This class is mainly intended for WINC 
   196 programs which, unlike most regular EPOC32 programs, actively use their 
   197 command-line arguments.
   198 
   199 From SimonC
   200 Converted to MAKMAKE and moved building verbs from MNT.CMD to EBLD.BAT
   201 
   202 
   203 Version 1.00.076
   204 ================
   205 (Made by DavidW, 28 May 1997)
   206 
   207 	Uses E32/107, F32/074, STORE/043, E32TOOLS/067
   208 
   209 Completely BC with 075
   210 
   211 Built with Platform 001 releases
   212 
   213 	Size of BAFL.DLL:       28,432 bytes (ARMREL)
   214 				35,568 bytes (ARMDEB)
   215 
   216 MNT VALID works on a clean drive
   217 
   218 1)  Upgraded to Platform 001 releases
   219 
   220 2)  Fixed SW3-868: Resource language file look-up fails to find a
   221 *.R01 file (though, as is often the cases with "simple fixes", the
   222 fix wasn't quite so simple after all!)
   223 
   224 3)  Fixed SW3-827 by adding MAP files to the releasable file lists
   225 
   226 4)  The advent of EChangesSystemTime in E32 106 had the side-effect
   227 of breaking a very restrictive test in Bafl test code T_CNTF.  This
   228 could be viewed as highlighting a non-BC feature in the E32 changes;
   229 but it's already been decided that we can live with this (no real app
   230 ought to be making a test like that in T_CNTF).  This test code has
   231 now been improved to avoid this problem (and, hopefully, to make it
   232 immune against any future additions to the TChanges enum)
   233 
   234 5)  Fixed a problem with building the test code in ARMDEB (shown up
   235 when there was no prior build of the test code in ARMREL)
   236 
   237 
   238 Version 1.00.075
   239 ================
   240 (Made by DavidW, 8 May 1997)
   241 
   242 	Uses E32/101, F32/069, STORE/042, E32TOOLS/063
   243 
   244 	**Almost** completely compatible with 074
   245 
   246 	**IMPORTANT** See note about "descriptor arrays" below
   247 
   248 	WINS release, debug, unicode release and unicode debug
   249 	ARM release, debug, unicode release and unicode debug
   250 
   251 	Size of BAFL.DLL:       28,420 bytes (ARMREL)
   252 				35,556 bytes (ARMDEB)
   253 
   254 MartinB has pointed out that the API of the descriptor array classes
   255 has one real drawback to it: the MdcaPoint() functions were returning
   256 
   257 	const TDesC&
   258 
   259 whereas there are many advantages to them instead returning
   260 
   261 	TPtrC
   262 
   263 For example, this causes real problems for the Shell, and has in the
   264 past caused real problems with the printer model name array in Eikon
   265 
   266 After prolonged discussions with MartinB, Bill, and Geert and myself,
   267 we decided to "do the right thing" and *** break API compatibility
   268 *** to that extent.  This will avoid much lurking death in the
   269 future, to do with temporary variables disappearing as the stack
   270 unwinds, etc.
   271 
   272 All code that uses descriptor arrays - whether of the MDesCArray or
   273 CDesCArray or whatever type - should be recompiled.  That should be
   274 the only change necessary.
   275 
   276 Note however that if you previously assigned the result of an
   277 MdcaPoint operation to a
   278 
   279 	const TDesC&
   280 
   281 reference variable on the stack in some code, you should now change
   282 this code to assign it to a
   283 
   284 	TPtrC
   285 
   286 variable instead.
   287 
   288 *** Note that because the operator[] function of CDesCArray is
   289 defined as being equivalent to its MdcaPoint() function, you may need
   290 some care to find these cases.
   291 
   292 All EXPORTed functions retain their same ordinal values.
   293 
   294 
   295 Version 1.00.074
   296 ================
   297 (Made by DavidW, 7 May 1997)
   298 
   299 	Uses E32/101, F32/069, STORE/042, E32TOOLS/063
   300 
   301 	Completely compatible with 073
   302 
   303 	WINS release, debug, unicode release and unicode debug
   304 	ARM release, debug, unicode release and unicode debug
   305 
   306 	Size of BAFL.DLL:       28,284 bytes (ARMREL)
   307 				35,440 bytes (ARMDEB)
   308 
   309 From AndrewT:
   310 -------------
   311 1.      Fixed a potential bug with "change leakage" in
   312 	CEnvironmentChangeNotifier, when a change happening between
   313 	the beginning and the end of a RunL could go undetected
   314 
   315 	Removed the source-code dependency on the EChangesAll enum,
   316 	which makes the source code build compatible with E32 105
   317 	(and with any further changes to this enum that E32 might
   318 	introduce in a future version)
   319 
   320 	Updated test code to match.
   321 
   322 
   323 Version 1.00.073
   324 ================
   325 (Made by DavidW, 6 May 1997)
   326 
   327 	Uses E32/101, F32/069, STORE/042, E32TOOLS/063
   328 
   329 	Backwards binary compatible with 072, but not forwards
   330 
   331 	WINS release, debug, unicode release and unicode debug
   332 	ARM release, debug, unicode release and unicode debug
   333 
   334 	Size of BAFL.DLL:       28,284 bytes (ARMREL)
   335 				35,440 bytes (ARMDEB)
   336 
   337 1.      New header file BAERRHAN.H, defining the interface of an
   338 	abstract "error handler"
   339 
   340 	New function CBaActiveScheduler::LeaveForErrorHandler
   341 	which takes a const CBaErrorHandler* pointer
   342 
   343 	The implementor of the DisplayError function in the concrete
   344 	subclass of CBaActiveScheduler (or something to which that
   345 	delegates, eg the implementor of CEikonEnv::HandleError) must
   346 	follow the contract that -
   347 
   348 	- when the Leave has unwound, the CBaErrorHandler object gets
   349 	sent a HandleError() function.  This function is declared
   350 	pure virtual at the CBaErrorHandler level.
   351 
   352 	There are two parameters to this function - a reference to an
   353 	"error text" descriptor, and one to a "context text"
   354 	descriptor.  The function can fill these in with text that
   355 	the environment will then display.
   356 
   357 	The HandleError() function should return one of
   358 
   359 	    EAlertDisplay - use the standard alert dialog
   360 	    EInfoDisplay - use an info message
   361 			(context text will be ignored)
   362 	    ENoDisplay - no display required
   363 			(both text buffers will be ignored)
   364 	    EErrorNotHandled - fall back to standard processing
   365 
   366 	Some test code for CBaErrorHandler has been added to T_SCHED
   367 
   368 	** Note that this BAERRHAN.H is an enhancement to the copy of
   369 	this file provisionally contained in EIKON 183.  In order to
   370 	move up to BAFL 073, you must also move up to EIKON 184
   371 
   372 2.      Removed the last remaining scare comments from BAFL source code
   373 
   374 3.      Provided explicit enumeration for all the panics in BAFLPAN.H
   375 
   376 4.      Tweak to T_RSC test code to cope with the file copied from
   377 	ROM to RAM nowadays ending up as read-only (bad news if you
   378 	want to run the test more than once)
   379 
   380 *** Known limitation - the test code fails to build cleanly for
   381 Unicode (WINS) and so several of the test apps fail.  No problems
   382 with any of the Narrow builds or test code, though
   383 			
   384 
   385 
   386 Version 0.06.072
   387 ================
   388 (Made by AjThoelke, 30 April 1997)
   389 
   390 1.      Uses E32/101, F32/069, STORE/042, E32TOOLS/063
   391 
   392 	Backwards binary compatible with 071, but not forwards:
   393 
   394 	Build against 072 only if you use CSoundPlayer::PlayTone() or
   395 		SoundUtilities::PlayTone()
   396 	Build against 071 if you use CClipboard::Clear()
   397 	Otherwise build against 069
   398 
   399 	WINS release, debug, unicode release and unicode debug
   400 	ARM release, debug, unicode release and unicode debug
   401 
   402 	Size of BAFL.DLL:       28,252 bytes (ARMREL)
   403 				35,392 bytes (ARMDEB)
   404 
   405 From Brendan
   406 
   407 1.      Fixed SW-4266. Incorrect assert in matcher code.
   408 
   409 From DavidW
   410 
   411 2.      Fixed SW-4477. KErrLeaveNoAlert is passed on to
   412 	CBaActiveScheduler::DisplayError() for EIKON to cancel busy messages.
   413 
   414 From AndrewT
   415 
   416 3.      Fixed SW-4619. Sound files are not assumed to have the default extension
   417 	".snd".
   418 
   419 	Note for ROM builders: Alarm samples in Z:\System\Alarms\ should not have
   420 	the extension ".snd" any more. They will still work, but the public
   421 	alarm name will be reported as "Soft Bells.snd" rather than "Soft Bells"
   422 	for example. (The files released as BAFL ALARMS have not changed their
   423 	names and still have a .snd extension)
   424 
   425 4.      Fixed SW-4610. Ensure that the sample is left in a valid state when
   426 	trying to complete the recording when in a Disk Full situation.
   427 
   428 5.      Implemented SW-4007. Two new services are provided by BAFL.
   429 
   430 	void CSoundPlayer::PlayTone(TInt aFrequency,TTimeIntervalMicroSeconds32 aDuration,TInt aAmplitude)
   431 
   432 	This makes the player play a sine-wave generated tone on the sound
   433 	device at the frequency and amplitude specified for aDuration.
   434 	Completion is notified via the observer as for other CSoundPlayer
   435 	Play... services.
   436 
   437 	TInt SoundUtilities::PlayTone(TInt aFrequency,TTimeIntervalMicroSeconds32 aDuration,
   438 							TInt aAmplitude,TDeviceVolume aVolume)
   439 
   440 	This service opens and configures the sound device and plays a sine-wave
   441 	generated tone as specified, then closes the device. The function only
   442 	returns after the tone has finished playing.
   443 	
   444 	The TDeviceVolume parameter maps onto the sound device volume settings.
   445 	Experimenting with the device volume and amplitude values is recommended
   446 	for getting a good tone volume...
   447 
   448 
   449 Version 0.06.071
   450 ================
   451 (Made by AjThoelke, 24 April 1997)
   452 
   453 1.      Uses E32/099, F32/069, STORE/042, E32TOOLS/063
   454 
   455 	Backwards binary compatible with 070, but not forwards
   456 
   457 	WINS release, debug, unicode release and unicode debug
   458 	ARM release, debug, unicode release and unicode debug
   459 
   460 	Size of BAFL.DLL:       27,748 bytes (ARMREL)
   461 				34,844 bytes (ARMDEB)
   462 
   463 2.      Added new exported function
   464 
   465 	static TInt CClipboard::Clear(RFs&);
   466 
   467 	This will clear the clipboard of its contents. Initially it will
   468 	try to do this by truncating the file, if this fails then it will
   469 	attempt to delete the file. I the clipboard cannot be cleared the
   470 	error is returned
   471 
   472 
   473 Version 0.06.070
   474 ================
   475 (Made by AjThoelke, 22 April 1997)
   476 
   477 1.      Uses E32/099, F32/069, STORE/042, E32TOOLS/063
   478 
   479 	Binary compatible with 069
   480 
   481 	WINS release, debug, unicode release and unicode debug
   482 	ARM release, debug, unicode release and unicode debug
   483 
   484 	Size of BAFL.DLL:       27,564 bytes (ARMREL)
   485 				34,656 bytes (ARMDEB)
   486 
   487 2.      Fixed SW-3879. Over-aggressive asserts have been modified to handle
   488 	abort states in CSoundData objects, and more graceful handling of
   489 	serious file server failures (i.e. not panicing).
   490 
   491 
   492 Version 0.06.069
   493 ================
   494 (Made by AjThoelke, 16 April 1997)
   495 
   496 1.      Uses E32/098, F32/068, STORE/042, E32TOOLS/063
   497 
   498 	Binary compatible with 068
   499 
   500 	WINS release, debug, unicode release and unicode debug
   501 	ARM release, debug, unicode release and unicode debug
   502 
   503 	Size of BAFL.DLL:       27,504 bytes (ARMREL)
   504 				34,572 bytes (ARMDEB)
   505 
   506 2.      New Uid scheme adopted for MARM releasables. For MARM, requires
   507 	E32 098 for anything other than narrow release.
   508 
   509 3.      Refixed SW-2836. The relevant parties have been beaten into submission:
   510 
   511 	a)      F32 will not report changes when the first 16 bytes of a file
   512 		are touched.
   513 
   514 	b)      The clipboard has reverted to the 065 behaviour: try to open,
   515 		if that succeeds truncate the file and carry on, if it fails
   516 		replace the file.
   517 
   518 	c)      The Shell will hold off from scanning for a short delay
   519 		before checking what's happened to allow files to have their
   520 		header written before the Shell interrogates their type.
   521 
   522 	d)      Components which are too slow even for this should be using a
   523 		temporary file to write to in the first place, and rename it to
   524 		the final destination once it is good (and typed). Temporary
   525 		files do not cause change notification.
   526 
   527 4.      Revert following failure on CSoundData has been added to CommitHeaderL(),
   528 	ExternalizeL() and SaveL(). Previously a seek would have been required
   529 	to force it to revert.
   530 
   531 
   532 Version 0.06.068
   533 ================
   534 (Made by AjThoelke, 14 April 1997)
   535 
   536 1.      Uses E32/097, F32/067, STORE/041
   537 
   538 	Binary compatible with 067
   539 
   540 	WINS release, debug, unicode release and unicode debug
   541 	ARM release, debug, unicode release and unicode debug
   542 
   543 	Size of BAFL.DLL:       27,364 bytes (ARMREL)
   544 				34,452 bytes (ARMDEB)
   545 
   546 2.      Fixed the T_SNDDA bug. I had been testing against BC test executables,
   547 	which did not pick up that the constant KSoundDataChunkLength had been
   548 	mangled (8 instead of 800). This would have also caused CSoundSampler
   549 	and CSoundPlayer to be broken.
   550 
   551 
   552 Version 0.06.067
   553 ================
   554 (Made by DavidW, 13 April 1997)
   555 
   556 1.      Uses E32/097, F32/067, STORE/041
   557 
   558 	*Not* binary compatible with any previous version
   559 	(But source compatible with 065)
   560 
   561 	WINS release, debug, unicode release and unicode debug
   562 	ARM release, debug, unicode release and unicode debug
   563 
   564 	Size of BAFL.DLL:       27,364 bytes (ARMREL)
   565 				34,452 bytes (ARMDEB)
   566 
   567 2.      Consolidated some code from CONE's CCoeActiveScheduler into
   568 	BAFL's CBaActiveScheduler (shame it will never make it all
   569 	the way into CActiveScheduler)
   570 
   571 	Virtual function DisplayError() defined in CBaActiveScheduler
   572 	no implementation at BAFL level
   573 
   574 	The CActiveScheduler function Error() now has the following
   575 	implementation in BAFL:
   576 
   577 EXPORT_C void CBaActiveScheduler::Error(TInt aError) const
   578 	{
   579 	if (aError==KLeaveExit)
   580 		User::Leave(KLeaveExit);
   581 	if (aError==KLeaveWithoutAlert)
   582 		return;
   583 	DisplayError(aError);
   584 	}
   585 
   586 	New function DisplayExtendedError(), as follows
   587 
   588 EXPORT_C void CBaActiveScheduler::DisplayExtendedError(TUid aComponent,TInt aErrorNumber)
   589 	{ // static
   590 	CBaActiveScheduler* pS=((CBaActiveScheduler*)CActiveScheduler::Current());
   591 	pS->iExtendedError.iInformation=EFalse;
   592 	pS->iExtendedError.iComponent=aComponent;
   593 	pS->iExtendedError.iErrorNumber=aErrorNumber;
   594 	pS->DisplayError(KErrExtended);
   595 	}
   596 
   597 	The difference between DisplayExtendedError() and eg
   598 	ExtendedLeave() is that the former calls Leave first, and
   599 	relies on the Error() function being called later.
   600 	Whereas the former calls the Error() function directly,
   601 	and is then free eg to retry the current operation.
   602 
   603 	So, the assumption is that the Error() function will be
   604 	implemented "with wait".
   605 
   606 3.      New test app T_SCHED testing the CBaActiveScheduler class
   607 
   608 4.      Put two virtual Reserved_xxx() functions into CBaActiveScheduler
   609 
   610 5.      Changed KUidBaflDll from 0x10000043 to 0x100004e to avoid a clash
   611 
   612 6.      Fixed the MNT VALID verb
   613 
   614 7.      Known limitations
   615 
   616 	* the way DEF files get archived for WINS looks wrong
   617 
   618 	* test code T_SNDDA hangs under ARM (and runs horribly horribly
   619 	slowly under WINS) - note this is true in 066 too and isn't
   620 	anything I have introduced
   621 
   622 
   623 Version 0.06.066
   624 ================
   625 (Made by AjThoelke, 11 April 1997)
   626 
   627 1.      Uses E32/097, F32/067, STORE/041
   628 
   629 	To all known purposes: Binary compatible with 065.
   630 
   631 	WINS release, debug, unicode release and unicode debug
   632 	ARM release, debug, unicode release and unicode debug
   633 
   634 2.      The protected interface of CSoundData, CSoundSampler and CSoundPlayer
   635 	has been privatised. This is for future BC purposes, and they couldn't
   636 	usefully be derived from anyway.
   637 
   638 3.      System file and path names within BAFL (e.g. the clipboard) now use
   639 	capitalised names.
   640 
   641 4.      CSoundSampler is now using a block length of 800 samples (previously
   642 	400). This means that samples recorded with BAFL 066 will not be
   643 	playable with 065, but older samples will play happily on 066.
   644 
   645 5.      CSoundSampler has gained TInt Volume() and void SetVolume(TInt).
   646 	These squeeze an extra bit of data into the persistent data of a sound
   647 	sample: the player/sampler do not utilise this information, it is
   648 	provided for the RECORD app.
   649 
   650 	The limitation is that the repeat count is limited to 65535 (big deal
   651 	eh?), and the volume stored must be in the range 0-65535.
   652 
   653 6.      Unfixed SW-2836. The file system now reports changes even if the header
   654 	of a file is re-written so the scheme in place was not effective.
   655 	Clipboard is still being replaced every time now.
   656 
   657 	
   658 Version 0.06.065
   659 ================
   660 (Made by AjThoelke, 9 April 1997)
   661 
   662 1.      Uses E32/096, F32/065, STORE/040
   663 
   664 	Binary compatible with 064 except for one thing (see 2).
   665 
   666 	WINS release, debug, unicode release and unicode debug
   667 	ARM release, debug, unicode release and unicode debug
   668 
   669 2.      The two extended errors for clipboard use have been removed. This upsets
   670 	the enum ordering in BAERROR.H and introduces an incompatibility if you
   671 	use this enumeration. I understand this affects almost nobody: certainly
   672 	no-one who has yet built against BAFL 064, and so have been advised to
   673 	let this one slip in at this stage. So if you do include BAERROR.H, make
   674 	sure you compile against 065 not 064.
   675 
   676 3.      All MARM releasables are pre-PETRAN'd, so get rid of your obey file
   677 	UIDs for BAFL.
   678 
   679 4.      Sampled alarm sounds now live in \system\alarms\, previously
   680 	\system\sounds\, as this better reflects what this directory is used
   681 	for.
   682 
   683 5.      Fixed bug SW-2836. The clipboard now attempts to open the clipboard file
   684 	and truncate it, rather than always replace it, in order to prevent the
   685 	clipboard generate unecessary change notification.
   686 
   687 6.      Fixed bug SW-2721. If the clipboard store has no root stream when
   688 	destroyed, the clipboard file is deleted. This handles any case of
   689 	failure during copying to the clipboard. Note that the first thing that
   690 	happens during a paste operation is that the current contents of the
   691 	clipboard are discarded.
   692 
   693 7.      Modified the behaviour of the clipboard when trying to read when the
   694 	clipboard does not exist, is being copied to, is corrupt or otherwise
   695 	damaged. In all these situations an empty CClipboard object is returned
   696 	from CClipboard::NewForReadingL[C](). More serious errors (or OOM) are
   697 	reported as normal.
   698 
   699 	These situations are all considered to be equivalent to there being no
   700 	data to paste from the clipboard, and will therefore be handled already
   701 	by the code which attempts to find some suitable data type in the
   702 	clipboard stream dictionary.
   703 
   704 	This has resulted in the two clipboard extended errors being no longer
   705 	required.
   706 
   707 8.      New releasables:
   708 
   709 	WINSCPR contains DEF files for all WINS builds of compressor DLLs.
   710 	EMARMCPR contains FRZ files for all MARM builds of compressor DLLs.
   711 
   712 	They require that the DLLs exports a function with the prototype:
   713 
   714 	CCompressorBase* NewCompressorL();
   715 
   716 	See the dummy compressors which are part of the BAFL source for examples
   717 	of how to build them for WINS and ARM: WINS adds a /def option to the
   718 	linker command line, MARM uses freeze file technology.
   719 
   720 	These releaseables are extracted to \epoc32\release\wins and
   721 	epoc32\release\marm as part of MNT GETREL.
   722 
   723 
   724 Version 0.06.064
   725 ================
   726 (Made by AjThoelke, 7 April 1997)
   727 
   728 1.      Uses E32/096, F32/065, STORE/040
   729 
   730 	Binary incompatible with 063.
   731 	Source compatible with 063 with the exception of the CFindFileByType
   732 	class.
   733 
   734 	WINS release, debug, unicode release and unicode debug
   735 	ARM release, debug, unicode release and unicode debug
   736 
   737 	Further review for the purposes of binary compatibility issues and
   738 	conversion from export to inline has resulted in more changes.
   739 
   740 2.      WINS builds are now link-by-ordinal.
   741 
   742 3.      MARM builds now incorporate type-safe linkage: BAFL's uid3 is 0x10000043.
   743 
   744 4.      Added CBaflUtils::NearestLanguageFile(RFs& aFs,TFileName& aFileName).
   745 	This has been taken from the EIKON utility of the same name. The last
   746 	two characters of the filename are replaced with the language code if
   747 	such a file exists, otherwise the name is left unchanged.
   748 
   749 5.      CFindFileByType now has the following API:
   750 
   751 	CFindFileByType(RFs& aFs);
   752 	~CFindFileByType();
   753 	TInt FindFirst(const TDesC& aName,const TDesC& aDir,const TUidType& aType);
   754 	TInt FindNext();
   755 	const TEntry& Entry() const;
   756 	const TParse& File() const;
   757 
   758 	Following construction, the object can be used for mulitple finding
   759 	sessions.
   760 
   761 	To initiate a find, call FindFirst(): the name can have wild
   762 	cards, any path information not in aName is taken from aDir. A file type
   763 	is also specified in aType. For any Uids in aType which are not KNullUid,
   764 	a matching file will have the same Uid in that position. i.e. to find
   765 	document files use TUidType(KNullUid,KUidAppDllDoc).
   766 
   767 	FindFirst() returns KErrNone if it has found a match, FindNext() will
   768 	continue to search for the next matching file. KErrNotFound is returned
   769 	when there are no more matches, any other return is an error code.
   770 
   771 	When a matching file has been found, Entry() returns the TEntry for that
   772 	file, and File() returns a TParse object containing the parsed full name
   773 	for the file.
   774 
   775 The following changes do not affect source compatibility:
   776 
   777 6.      CEnvironmentChangeNotifier now takes a const TCallback& in its NewL()
   778 	and Set() members. Previously took TCallBack&.
   779 
   780 7.      Various exported functions are now inline as befits their purpose.
   781 
   782 8.      CDesC8Array constuctor is now protected, CDesC8ArrayFlat has a exported
   783 	destructor to reduce extra vtable generation in any sub-classers. Ditto
   784 	for CDesC8ArraySeg, and the unicode variants.
   785 
   786 9.      TLibAssoc has a general base class TLibAssocBase, to hold the common
   787 	code, reducing the template generated code, and also removes the
   788 	templated assertion (now in TLibAssocBase).
   789 
   790 10.     Improved the performance of the TResourceReader class.
   791 
   792 11.     Factored common code in RIncrMatcherBase to reduce code volume.
   793 
   794 
   795 Version 0.06.063
   796 ================
   797 (Made by AjThoelke, 2 April 1997)
   798 
   799 1.      Uses E32/095, F32/064, STORE/040
   800 
   801 	Binary compatible with 062
   802 
   803 	WINS release, debug, unicode release and unicode debug
   804 	ARM release and debug
   805 
   806 	Following full review of BAFL code, I have fixed some bugs (see below)
   807 	and tidied some other code resulting in some code savings. There are a
   808 	few outstanding binary-incompatible changes that are on the waiting list.
   809 
   810 2.      Fixed CEnvironmentChangeNotifier to close the RChangeNotifier when it is
   811 	destroyed.
   812 
   813 3.      Fixed RTextBuf to use the delete [] operator as it is using the new []
   814 	operator. Previously it was not using the array delete operator.
   815 
   816 4.      Major fixes to SoundUtilities: No non-leaving functions can now leave,
   817 	no alloc heaven following failures at any stage, private static members
   818 	are now local static to the source file and removed from the class
   819 	declaration.
   820 
   821 5.      Fixed SW-2001. Duplicate names in the list of alarm sounds or samples
   822 	are ignored. This matches the behaviour of CSoundPlayer: as soon as a
   823 	viable sound is found which matches the name, it is played.
   824 
   825 	Note that this means it though may be possible to save an sample as an
   826 	alarm called "Chimes", it'll never get played as an alarm while an
   827 	algorithmic sound of the same name exists.
   828 
   829 6.      Revised code for CFindFileByType to attempt a reduction in stack usage
   830 	by TFileName and TParse objects, to reduce code size, and to eliminate
   831 	problems when handling failures.
   832 
   833 7.      Removed unecessary (inline) copy constructors from TCellRef and
   834 	TRangeRef.
   835 
   836 8.      Included s32file.h into baclipb.h as CClipboard::Store() requires the
   837 	derivation relationship between CFileStore and CStreamStore.
   838 
   839 9.      CClipboard::CopyToL(const TReal&) now commits the stream it has written.
   840 
   841 10.     The clipboard has been moved from the very strangely named
   842 	c:\system\clipbd\main.sto to the somewhat more sensible sounding
   843 	c:\system\data\clipboard
   844 
   845 11.     Beefed up CSoundData's handling of in-place sample files being corrupt
   846 	or requiring truncation when opened or following (serious) failure.
   847 
   848 
   849 
   850 Version 0.06.062
   851 ================
   852 (Made by AjThoelke, 26 March 1997)
   853 
   854 1.      Uses E32/094, F32/063, STORE/038
   855 
   856 	Binary compatible with 061
   857 
   858 	WINS release, debug, unicode release and unicode debug
   859 	ARM release and debug
   860 
   861 2.      Fixed a bug when recording to the end of a just-opened sample, which
   862 	resulted in data loss, and end of file errors.
   863 
   864 3.      Correctly update the current position during recording when a compressor
   865 	is in use.
   866 
   867 4.      Avoid a panic from CActive when abandoning the background indexing, and
   868 	ensure the sampler restores its active priority as necessary.
   869 
   870 5.      Allow UseSeekIndexL to be called any number of times without causing
   871 	stray signals, or other nasty problems.
   872 
   873 
   874 Version 0.06.061
   875 ================
   876 (Made by AjThoelke, 26 March 1997)
   877 
   878 1.      Uses E32/094, F32/063, STORE/038
   879 
   880 	Binary compatible with 060 if you are not the RECORD app.
   881 
   882 	WINS release, debug, unicode release and unicode debug
   883 	ARM release and debug
   884 
   885 2.      Renamed CSoundPlayerRecorder to CSoundSampler, similarly for its
   886 	observer.
   887 
   888 3.      Fully construct the CTimer part of CSoundSampler, previously this
   889 	caused a panic when playing a sample.
   890 
   891 4.      Added CSoundSampler::TruncateL() to truncate the sample to the current
   892 	position.
   893 
   894 5.      Implemented a compressed sound data manager. This can use a temporary
   895 	index to enable fast random seeking in the sample.
   896 
   897 	The default is not to have one, as it is not needed for playing sounds,
   898 	enabling it will result in an index being built as the sound is
   899 	played (and so can cause OOM errors while playing). Compressed samples
   900 	do not allow random seeking without the index, only seeking to the
   901 	beginning or end of the sample.
   902 
   903 	CSoundSampler::UseSeekIndexL() will enable the indexing, and will cause
   904 	the sampler to build the index in the background, which is abandoned
   905 	whenever another operation is started.
   906 
   907 6.      Generally improved the robustness of the sampler when recording
   908 	terminates in resticted memory or disk space scenarios, and ordered the
   909 	file header re-writes to maintain document integrity in the presence of
   910 	failures.
   911 	
   912 	
   913 Version 0.06.060
   914 ================
   915 (Made by AjThoelke, 25 March 1997)
   916 
   917 1.      Uses E32/094, F32/063, STORE/038
   918 
   919 	For most people: Binary compatible with 059.
   920 	Binary incompatible if you use any of the functions
   921 
   922 	CSoundData::NewL(CStreamStore&,TStreamId);
   923 	CSoundPlayerRecorder::NewL(MSoundPlayerRecorderObserver&,CStreamStore&,TStreamId);
   924 	CSoundData::SaveToL(RFile&);
   925 	CSoundPlayerRecorder::SaveToL(RFile&);
   926 
   927 	(This should only be the RECORD app).
   928 
   929 2.      The two NewL() functions above now take a const CStreamStore&.
   930 
   931 3.      The SaveTOL() functions have morphed into:
   932 
   933 	SaveL(RFile& aNewFile,TBool aUseNewFile=EFalse);
   934 
   935 	The sample is saved into the new file passed in. If aUseNewFile is true,
   936 	then the sampler starts using the new file, and closes the old file. If
   937 	false (the default) the new file is closed following this function.
   938 
   939 	On any failure, the new file is closed automatically.
   940 
   941 4.      Added CSoundPlayer::SoundType() returning TSoundType, which is one of
   942 	ESoundAlgorithmic and ESoundSample. This reports the type of sound
   943 	last played (or currently playing) using this object.
   944 
   945 5.      Exported SoundUtilities::SoundStreamIdL(CPersistentStore&) to extract
   946 	the sound stream id from the stream dictionary in sound samples.
   947 
   948 	
   949 Version 0.06.059
   950 ================
   951 (Made by AjThoelke, 24 march 1997)
   952 
   953 1.      Uses E32/094, F32/063, STORE/038
   954 
   955 	Binary incompatible with 058.
   956 
   957 	WINS release, debug, unicode release and unicode debug
   958 	ARM release and debug
   959 
   960 	The main thrust of this release is to re-engineer the sound services to:
   961 
   962 	* enable in-place recording of sound samples
   963 	* modify the sound sample data format to improve seek performance
   964 	* remove the TRequestStatus asynchronous API.
   965 
   966 	Meanwhile I have totally revamped the API for the CSoundPlayer,
   967 	CSoundPlayerRecorder and CSoundData classes. Code which does not use any
   968 	of the sound classes or utilities will not need any modification to use
   969 	this new version of BAFL.
   970 
   971 	This release comes not entirely tested, and not entirely complete, in
   972 	order to freeze the API now, rather than later. Binary compatible
   973 	releases will be forth coming as the missing code is added and tested.
   974 
   975 From NeilD
   976 
   977 2.      Transferred the utility EikThread::ExtractAppNameFromFullName(...)
   978 	from EIKON to BAFL, now BaflUtils::ExtractAppNameFromFullName(...).
   979 	This will be removed from EIKON as and when appropriate.
   980 
   981 From AndrewT
   982 
   983 3.      CBulkData has been removed from the public API.
   984 
   985 4.      CSoundPlayer is similar to its previous API:
   986 
   987 	static CSoundPlayer* NewL(MSoundPlayerObserver& anObserver,RDevSound& aDev);
   988 	void PlaySoundL(const TDesC& aName,RFs& aFs);
   989 	void PlayFileL(const TDesC& aName,RFs& aFs);
   990 	void PlayAlarm(const TDesC& aName);
   991 	void PlayAlarm(TInt aAlarmIndex);
   992 	void PlayFallBackAlarm();
   993 	void Stop();
   994 	TBool IsPlaying() const;
   995 
   996 	To replace the I/O Semaphore API for notification of completion, an
   997 	MSoundPlayerObserver object is required. It's virtual PlayComplete(TInt)
   998 	member is invoked when the player has finished playing any sound,
   999 	passing any completion status as a parameter. Note that the player
  1000 	still requires an active scheduler to be running to operate, but is no
  1001 	longer itself an active object.
  1002 
  1003 	Playing alarm sounds is guaranteed to not fail. PlayAlarm(const TDesC&)
  1004 	attempts to find an alarm of the given name and play it, otherwise the
  1005 	fall-back alarm is played. PlayAlarm(TInt) is as before, playing the
  1006 	alarm by index.
  1007 
  1008 	PlayFileL(...) will try to locate the named sound file and play it,
  1009 	leaving on any error. PlaySoundL() will first try to find an alarm of
  1010 	the given name, and if none is found will try to find the named sound
  1011 	file, reporting an error if no such file exists.
  1012 
  1013 	Stop() will synchronously terminate the current sound playing, and will
  1014 	not cause the observer to be notified.
  1015 
  1016 	IsPlaying() just reports whether a sound is currently being playing by
  1017 	the object.
  1018 
  1019 5.      CSoundData API has totally changed. It supports embedded or in-place
  1020 	sound samples. It no longer uses temporary file for temporary storage, but
  1021 	a chunk instead. This means that spontaneous death will not eat up
  1022 	precious disk (& memory) space.
  1023 
  1024 	The API is now expressed entirely in terms of byte positions within
  1025 	the Alaw Sound sample, but provides conversion functions to and from
  1026 	microseconds.
  1027 	
  1028 	Uncompressed sound data now supports immediate seeking to any position
  1029 	in the sample. The compressed data manager has not been implemented yet,
  1030 	and, selecting a compressor will currently result in uncompressed data.
  1031 
  1032 	Recovery on failure and truncation of the sample in the face of OOM or
  1033 	DiskFull errors are still being worked on, and have yet to be tested.
  1034 
  1035 6.      CSoundPlayerRecorder has had its API changed as well. It also uses an
  1036 	observer, rather than I/O semaphore to mark completion of its services.
  1037 	This class has not been tested yet.
  1038 
  1039 7.      CCompressorList has had some of its members name's changed.
  1040 	Functionality is unchanged and still obvious.
  1041 
  1042 
  1043 Version 0.06.058
  1044 ================
  1045 (Made by SteveG, 12-Mar-1997)
  1046 
  1047 Uses
  1048 E32         (091)
  1049 F32         (060)
  1050 STORE       (037)
  1051 
  1052 1) Uses new sound driver functions for determining how many bytes have
  1053    been played, needed as the Record app now sets the sound drivers
  1054    buffer to 8000 bytes, and there will nearly always be 1 second of
  1055    sound remaining to be played when the end of the sample sound file
  1056    is reached
  1057 
  1058 Version 0.05.057
  1059 ================
  1060 (Made by SteveG, 04-Mar-1997)
  1061 
  1062 Uses
  1063 E32         (090)
  1064 E32UTILS    (008)
  1065 F32         (058)
  1066 STORE       (036)
  1067 E32TOOLS    (051)
  1068 EIKTOOLS    (120)
  1069 RCOMP       (313)
  1070 
  1071 1) Fixed panic when cancelling sounds played by PlaySoundFileByName. This
  1072    was not initialising the iDevSound property
  1073 
  1074 Version 0.05.056
  1075 ================
  1076 (Made by SteveG, 03-Mar-1997)
  1077 
  1078 Uses
  1079 E32         (090)
  1080 E32UTILS    (008)
  1081 F32         (058)
  1082 STORE       (036)
  1083 E32TOOLS    (051)
  1084 EIKTOOLS    (120)
  1085 RCOMP       (313)
  1086 
  1087 1) Altered the sound file format to store the uncompressed length of
  1088    each chunk, to speed up the seek functions. They no longer need
  1089    to read the chunk data in order to  work out the duration of the
  1090    decompressed chunk
  1091 
  1092 Version 0.05.055
  1093 ================
  1094 (Made by DavidW, 02-Mar-1997)
  1095 
  1096 Uses
  1097 E32         (090)
  1098 E32UTILS    (008)
  1099 F32         (058)
  1100 STORE       (036)
  1101 E32TOOLS    (051)
  1102 EIKTOOLS    (120)
  1103 RCOMP       (313)
  1104 
  1105 Not binary compatible with any predecessor
  1106 
  1107 Size of BAFL.DLL: ArmRel 28,596 bytes, ArmDeb 32,036 bytes
  1108 
  1109 1)  Upgraded to the latest releases of all upstream components
  1110 
  1111 2)  Removed the TBoundedArray classes (and their test code)
  1112 
  1113 3)  Removed the box layout classes (and their test code)
  1114 
  1115 4)  Removed the function BaflUtils::ExtractMnemonic()
  1116 
  1117 5)  Removed the function TResourceReader::SetJustBuffer()
  1118 
  1119 6)  Brought the contents of \bafl\src\empty.cpp up to date
  1120 
  1121 7)  Removed all reference to the #define __BAFL_B6__ and removed all
  1122 code branches in which this macro was *not* defined
  1123 
  1124 8)  Added the class CBaActiveScheduler, containing code that ought to
  1125 migrate shortly into CActiveScheduler (and User and DThread).  This
  1126 contains support for a grown-up error number system for the first
  1127 time.  For further details, see the discussion in the EPOC32 Software
  1128 Design database on Notes
  1129 
  1130 9)  Moved the functions Exit() and LeaveNoAlert() from
  1131 CCoeActiveScheduler to CBaActiveScheduler (and slightly changed their
  1132 implementation, to avoid some theoretical problems)
  1133 
  1134 10) Added the header file BAERROR.H containing Bafl-specific error
  1135 numbers, for the classes RResourceFile and CClipboard; improved the
  1136 code in BARSC.* and BACLIPB.* by taking advantage of this new scheme
  1137 
  1138 11) Changed the TInt ConfirmSignature function of RResourceFile into
  1139 a void ConfirmSignatureL function instead.  If the resource file
  1140 fails to have the expected signature, this function now does a custom
  1141 KUidBaflDll Leave with KErrBaflWrongResourceFileSignature
  1142 
  1143 12) Changed the CClipboard class to do a custom KUidBaflDll Leave
  1144 with KErrBaflClipboardDoesNotExist in the case of (you guessed it)
  1145 the clipboard not existing.  The Leave sets the "Information" bit, so
  1146 that the UI (ie Eikon level) should display an info message rather
  1147 than an alert dialog
  1148 
  1149 13) Modified the test code T_CLIPB in line with the above changes.
  1150 
  1151 Some limitations to report:
  1152 
  1153 The WINS UREL version of T_SPYRC intermittently crashes inside an
  1154 ASSERT_DEBUG in the sound driver.
  1155 
  1156 T_CELL gets lines 33-38 marked as "Unreachable code" when compiling
  1157 for Release mode under WINS.
  1158 
  1159 I suspect the class CFindFileByType ought to be removed too, being
  1160 superseded by F32 functionality.
  1161 
  1162 The T_BAFL.IBY hard-wires the location of T_RSC.RSC to a REL
  1163 directory, so it doesn't manage to build an ArmDeb ROM image unless
  1164 you've already built the ArmRel one.
  1165 
  1166 I had real difficulties in persuading the NMAKE for the ArmDeb build
  1167 to run at all, and only got it to run when I deleted all files on the
  1168 drive and re-installed from the network.  Something needs
  1169 investigating further here!
  1170 
  1171 
  1172 Version 0.05.054
  1173 ================
  1174 (Made by MartinB, 28-Feb-1997)
  1175 
  1176 Uses
  1177 E32         (089)
  1178 E32UTILS    (006)
  1179 F32         (055)
  1180 STORE       (035)
  1181 E32TOOLS    (051)
  1182 EIKTOOLS    (120)
  1183 RCOMP       (313)
  1184 
  1185 1) Changed ReadALawData() and Read() to take a TBool to indicate
  1186    whether to read the data or just perform a seek to the file
  1187    position that would result if that read took place. This is
  1188    used to dramatically decrease the time taken when seeking to
  1189    a time in a sample. SeekToTime() now calls ReadALawData passing
  1190    in EFalse to indicate not to read the data. However, if a
  1191    compressor is in use, then the read must take place and the
  1192    TBool argument is ignored. (SteveG)
  1193 
  1194 2) Made some improvements to the TCellRef and TRangeRef classes. In
  1195 particular:
  1196 
  1197 a) Inlined some functions
  1198 b) Default constructors no longer initialize values to zero.
  1199 c) Removed unnecessary operator=() functions.
  1200 
  1201 
  1202 Version 0.05.053
  1203 ================
  1204 (Made by Natasha, 07-Feb-1997)
  1205 
  1206 Uses
  1207 E32         (086)
  1208 E32UTILS    (005)
  1209 F32         (050)
  1210 STORE       (034)
  1211 E32TOOLS    (051)
  1212 EIKTOOLS    (119)
  1213 RCOMP       (113)
  1214 
  1215 From Natascha:
  1216 1) The new clipboard functions CopyToL(const TReal& aReal) and
  1217 PasteFromL(TReal& aReal) were mistakenly declared as IMPORT_C in the
  1218 source file - changed them to EXPORT_C.
  1219 
  1220 
  1221 Version 0.05.052
  1222 ================
  1223 (Made by SteveG, 03-Feb-1997)
  1224 
  1225 Uses
  1226 E32         (086)
  1227 E32UTILS    (005)
  1228 F32         (050)
  1229 STORE       (034)
  1230 E32TOOLS    (051)
  1231 EIKTOOLS    (119)
  1232 RCOMP       (113)
  1233 
  1234 From SteveG:
  1235 1) Changed ReadDataL() in BABUKDA.CPP to use the store functions
  1236    for copying to and from stores and files, rather than copying
  1237    256 bytes at a time in a tight loop. This increase dramatically
  1238    the speed of creating a temporary sample file and saving samples
  1239    (thanks to AndrewT for this)
  1240 
  1241 Version 0.04.051
  1242 ================
  1243 (Made by PeterJ, 30-Jan-1997)
  1244 
  1245 Uses
  1246 E32         (086)
  1247 E32UTILS    (005)
  1248 F32         (050)
  1249 STORE       (034)
  1250 E32TOOLS    (051)
  1251 EIKTOOLS    (119)
  1252 RCOMP       (113)
  1253 
  1254 NOT binary compatible with BAFL 050.
  1255 
  1256 
  1257 BAFL.DLL is 36648 bytes long (release), 41164 (debug).
  1258 
  1259 
  1260 The box layout test code T_BLO is temporarily removed from the
  1261 rack list because it provokes an internal error in the current GCC
  1262 compiler.
  1263 
  1264 
  1265 
  1266 
  1267 From PeterJ:
  1268 CLEAN verb added to the MNT command set.
  1269 
  1270 
  1271 From NataschaK:
  1272 
  1273 CClipboard member functions to copy/paste real numbers.  These are included
  1274 to provide common functionality.  There are architectural questions to answer
  1275 here.  Is this the right place for such functionality?  Should there be provision
  1276 for other low level data types?
  1277 
  1278 
  1279 
  1280 From Brendan:
  1281 A.      Changes to CSoundData
  1282 -------------------------
  1283 
  1284 1)      CSoundData::SeekToTime to take const reference argument (instead of const)
  1285 2)      Added EBafPanicBulkDataNoDestination which is used rather than
  1286 	EBafPanicBulkDataNoDataExist when no destination is specified in CopyDataToL()
  1287 3)      Grouped similar functions in header for CBulkData
  1288 4)      The function CBulkData::DeleteDataFromTheEnd(TInt aLength) now
  1289 	checks for a -ve value of length. 
  1290 	Added   TInt TruncateDataAt(TInt aPosition);
  1291 	to delete data from a given offset from the start.
  1292 5)      Added various private utility functions to CBulkData:
  1293 	TBool DoesFileExist(const TDesC& aFullFileName) const;
  1294 	void EnsurePathExistsL(const TDesC& aFullPath) const;
  1295 	void MoveFileL(const TParseBase& aDest,const TParseBase& aSource);
  1296 	TPtrC BulkDataTempFilePath() const;
  1297 	TPtrC TemporaryFile() const;
  1298 	void SetTemporaryFile(const TDesC& aName);
  1299 	void InternalizeL(RReadStream& aStream);
  1300 6)      CBulkData::SaveToNewStoreL now uses 1 TParse, instead of 2 TParses and a TFileName
  1301 7)      CBulkData::SaveToNewStoreL renamed to MoveToNewStoreL()
  1302 	It now deletes the old file if it was on the same drive as the new, 
  1303 	as well as if on different drives. 
  1304 	Note that this function will delete all data
  1305 	under error circumstances.
  1306 8)      Made internal use of CBulkData::IsReady... functions
  1307 9)      CBulkData::DeleteDataFromTheEnd() and truncate now return KErrNotReady if 
  1308 	there is no data, rather than KErrNotFound.
  1309 
  1310 B.      Changes to CSoundData
  1311 -------------------------
  1312 
  1313 1)      Grouped similar functions in header for CSoundData
  1314 2)      DataPlayTime renamed to SamplePlayLength
  1315 	DataBeingreadTime renamed to CurrentPosition
  1316 3)      Added TotalPlayLength which takes into account trailing silence and repeats
  1317 4)      Added various private utility functions
  1318 	TCompressorPtr DoCreateCompressorL(TUid aUid) const;
  1319 	TTimeIntervalMicroSeconds AlawBytesToMicroSeconds(TInt aBytes) const;
  1320 	TTimeIntervalMicroSeconds operator+(const TTimeIntervalMicroSeconds& aLeft,const TTimeIntervalMicroSeconds& aRight)
  1321 5)      Set a maximum of KSoundDataMaxReadChunkPlayLengthBytes=10000000
  1322 	for reading and writing chunks, to help check for corrupted data. This number should in fact never
  1323 	exceed 1000.
  1324 
  1325 C.      Changes to CSoundPlayerRecorder
  1326 -----------------------------------
  1327 
  1328 1)      Grouped similar functions in header for CSoundPlayerRecorder
  1329 2)      Extensive renaming of functions to clarify their roles.
  1330 	Removed most ...SoundData.. from function names since this class 
  1331 	can no longer deals with any other kind of data.
  1332 3)      Dropped IsSoundDataPresent since it was not being used anywhere
  1333 4)      PrepareForUpdateL renamed PrepareForRecordL
  1334 5)      SaveSoundDataTo becomes MoveSoundDataTo, since old data is deleted. Note that 
  1335 	the new store still needs to be opened before it can be used.
  1336 
  1337 D.      Changes to CSoundPlayer
  1338 ---------------------------
  1339 
  1340 1)      Uses two new private functions
  1341 	PlayAlarmSoundByName 
  1342 	PlaySoundFileByName
  1343 2)      inlined PlayFallBackAlarmSound to use PlayAlarmSound
  1344 
  1345 E.      Changes to SoundUtilities
  1346 -----------------------------
  1347 
  1348 1)      SoundUtilities::Populate makes use the new CDescArray::InsertIsq functions
  1349 2)      SoundUtilities::SoundFileByName no longer validates that a file contains
  1350 	a sound data stream. This function is now provided separately. This is to 
  1351 	help solve a problem in which corrupted files could not be deleted.
  1352 3)      Added function DoesFileContainSoundDataL which returns true if a sound data
  1353 	stream was found (It can leave when creating a store or the root stream).
  1354 
  1355 
  1356 
  1357 
  1358 Version 0.04.050
  1359 ================
  1360 (Made by PeterJ, January 1997)
  1361 
  1362 Uses 
  1363 E32         (085)
  1364 E32UTILS    (005)
  1365 F32         (049)
  1366 STORE       (033)
  1367 E32TOOLS    (050)
  1368 EIKTOOLS    (119)
  1369 RCOMP       (113)
  1370 
  1371 NOT binary compatible with BAFL 049.
  1372 
  1373 This version was reput at 20:00 ish on 14-Jan-1997 with a bugfix
  1374 in the RResource class that caused it to unpredictably reject
  1375 a resource binary as corrupt.
  1376 
  1377 Size of BAFL.DLL release is 35,736 (40,072 in debug version).
  1378 
  1379 There remains an outstanding problem with the sound player that
  1380 shows up in the test code running under WINS only.
  1381 
  1382 
  1383 Changes
  1384 -------
  1385 
  1386 From history:
  1387 1) Remove the following RResourceFile member functions which have been
  1388    deprecated for some time but were left around for binary compatibility.
  1389    
  1390   TInt PositionToResourceL(TInt aResourceId,TInt &aDecodedLen) const;
  1391   void ReadResourceDataL(TDes8 &aDes,TInt aReadLen,TInt aDecodedLen) const;
  1392   (BARSC.H)
  1393 
  1394 From Brendan:
  1395 2) template <class T>
  1396    inline TBool TLibAssoc<T>::IsNull()
  1397 
  1398    is now a const function.  (BALIBA.H)
  1399 
  1400 3) added the following functions to CDesCArray (8 and 16 bit versions)
  1401 
  1402 IMPORT_C TInt InsertIsqL(const TDesC8& aPtr
  1403 	      ,TKeyCmpText aTextComparisonType=ECmpFolded);
  1404 IMPORT_C TInt InsertIsqAllowDuplicatesL(const TDesC8& aPtr
  1405 	      ,TKeyCmpText aTextComparisonType=ECmpFolded);
  1406 IMPORT_C TInt FindIsq(const TDesC8& aPtr,TInt& aPos
  1407 	     ,TKeyCmpText aTextComparisonType=ECmpFolded) const;
  1408 
  1409 These allow the insertion in sequence of descriptors into an array,
  1410 and for finding the descriptors from a sorted array. 
  1411 
  1412 Note that this functionailty is already available for CPtrCArray variants.
  1413 The test T_PTRCA shows how this is done - it just requires that the user
  1414 create and use a : TKeyArrayFix key(0,{sort method});
  1415 
  1416 
  1417 T_DESCA has been modified to at call these functions and ensure that they
  1418 work. It does not stress test them.
  1419 
  1420 T_PTRCA has been modified to show how to call the FindIsq and
  1421 InsertIsq functions.
  1422 
  1423 
  1424 From Simon Ch:
  1425 4) Added CClipboard::NewForReadingL(RFs& aFsSession).  This is for use
  1426    by callers who don't know if the clipboard exists before they
  1427    attempt to paste. (BACLIPB.H) Test code added to T_CLIPB.
  1428 
  1429 
  1430 From AndrewT:
  1431 5) Modifications to allow resource data to be read out of ROM directly.
  1432    Affects BARSC and its test code and changes the RResourceFile class
  1433    signature slightly.
  1434 
  1435 
  1436 From PNJ:
  1437 6) Test code now compiles its own resources instead of using
  1438    stored resource objects.  Affects T_RSC and T_RSREAD.
  1439    MNT procedure modified to get an explicit resource compiler
  1440    version.  (may want to review the role of EIKTOOLS here).
  1441 
  1442 7) Resource file test code now deals with both 8 and 16-bit
  1443    text strings generated by RCOMP 3.13 or higher.
  1444 
  1445 
  1446 
  1447 
  1448 
  1449 
  1450 Version 0.04.049
  1451 ================
  1452 (Made by Brendan, 20 December 1996)
  1453 
  1454 Uses 
  1455 E32                     (081)
  1456 E32UTILS        (004)
  1457 F32                     (045)
  1458 STORE           (032)
  1459 E32TOOLS        (049)
  1460 EIKTOOLS        (119)
  1461 
  1462 1)      size            Arm release 
  1463 	BAFL.DLL        35,000
  1464 2)  Upgraded to new components. This release is not binary compatible, 
  1465 	and introduces the following new classes:
  1466 	CFindFileByType,TLibAssoc<>,CSoundPlayer,CPtrCArray (and variants)
  1467 	There are likely to be more changes in the sound utilities. 
  1468 3)      Incorporated a CSoundPlayer class from Julian, which is used to play sounds 
  1469 	by name. CSoundPlayerRecorder now only deals with file based sounds and not 
  1470 	algorithmic sounds.
  1471 -       PlayByName() returns an error instead of leaving, to be consistent with the API
  1472 	to algorithmic sounds.
  1473 4)  Incorporate CFindFileByType from Julian, making some minor changes
  1474     to return the file name and extention of a found file and just the 
  1475     file name (in TPtrC's).
  1476 5)  Took advantage of CFindFileByType in the CSoundUtilities
  1477 6)  Added CPtrCArray arrays - these are similar to CDesCArrays
  1478     but store an array of TPtrC's rather than the actual data.
  1479 -   There is a CopyL function to copy any MdcaArray to a CPtrCArray.
  1480 -   It can be used instead of CDesCArray in listboxes etc to reduce
  1481     duplicating memory, but care should be taken since it can 
  1482     hold invalid data if the data that the TPtrC's point to, is deleted.
  1483 7)  Added test code T_PTRCA for class CPtrCArray
  1484 8)  TLibAssoc<T> class to be used synonomously with a pointer to the 
  1485     library associated class (ie a pluggable component). It contains a RLibrary 
  1486 	and a pointer to the class that the library has created. When this 
  1487 	pointer class is "deleted"(Unload()), the library is unloaded after the
  1488 	the class has been deleted - ensuring that the destructor of the class is still 
  1489 	around during the deletion. See the test code T_LIBA for examples of how 
  1490 	it can be used.
  1491 -   use a "TLibAssoc" instance instead of "CLibraryClass*",
  1492 -   call "TLibAssoc.Unload()" instead of "delete(CLibraryClass*);"
  1493 -   call "TLibAssoc.IsNull()" instead if "CLibraryClass*==NULL"
  1494 -   TLibAssoc can be used with CleanupStack::PushL() and PopAndDestroy() etc.
  1495 -   TLibAssoc is safe to use in applications because it does not rely on an
  1496     active object to unload the libraries.
  1497 -   TLibAssoc should not be used to unload the Dll inwhich the TLibAssoc class
  1498     is defined, because the executed code must be in a different executable.
  1499 9)  Dropped CLibUnloader
  1500 10)     Changed sound utilities to compare alarm sound names with a fold comparison
  1501 	since the file server wouldnt distinguish between the files.
  1502 11)     Provided public SoundUtilities::PopulateAlgorithmicSoundsL()
  1503 	and SoundUtilities::PopulateAlarmSoundFilesL()
  1504 12) Minor changes to BASNDDA.CPP to prevent possible overlfow errors 
  1505     in calculations
  1506 13) Minor changes to T_SNDUT.CPP to check that sound files correspond 
  1507     to their names
  1508 14) Added TheSoundDev.FlushPlayBuffer() and TheSoundDev.FlushRecordBuffer()
  1509     to T_SNDDA to prevent it from failing with KErrInUse
  1510 	From comments in the test code, it looks as though this test needs to be 
  1511 	revisisted.
  1512 
  1513 Version 0.04.048
  1514 ================
  1515 Made by Julian, 02-Dec-1996
  1516 
  1517 Uses    E32/079, E32UTILS/004, F32/044, STORE/032,
  1518 	E32TOOLS/048, EIKTOOLS/119
  1519 
  1520 BAFL ARM DLL sizes: 33148 (release) 37140 (debug)
  1521 
  1522 Stay compatible with previous releases.
  1523 
  1524 Use new E32/079 and upward components
  1525 
  1526 From Julian:
  1527 ============
  1528 
  1529 1. Checking the drive of the saved file name is the same as the
  1530 temporary file's drive name in CBulkData::SaveToNewStoreL() function.
  1531 If they are not the same, the CFileMan's Copy() and Delete() functions
  1532 will be usedinstead of the RFs::Replace() function as Replace() function
  1533 couldn't replace files between different drives.
  1534 
  1535 
  1536 Version 0.04.047
  1537 ================
  1538 Made by PeterJ, 02-Dec-1996
  1539 
  1540 Uses    E32/075, E32UTILS/004, F32/042, STORE/030,
  1541 	E32TOOLS/048, EIKTOOLS/118
  1542 
  1543 BAFL ARM DLL sizes: 32908 (release) 36908 (debug)
  1544 
  1545 Main modifications to stay compatible with baser releases.
  1546 
  1547 NB. The debug build test code tends to display some Store
  1548     notifier messages. This seems to be a common phenomenon.
  1549 
  1550 	The T_SNDDA test code seemed to hang once in the WINS release
  1551 	build while supposedly playing a sound. Could not reproduce,
  1552 	but the recent sound driver changes in E32/075 may be relevant.
  1553 
  1554 From PeterJ:
  1555 ============
  1556 
  1557 1. BAFLVER.H once again reflects the release version numbers.
  1558    (Thanks to Brendan for pointing this out)
  1559 
  1560 2. TRangeRef::TIter::InRange() is now declared const. (As pointed
  1561    out by Lane)
  1562 
  1563 3. Instances of KNotFound return values replaced with KErrNotFound
  1564    instead.  (In incremental matcher code)
  1565    Also instances of KErrDoesNotExist replaced with KErrNotFound.
  1566    (Bulk data code, sound player code)
  1567 
  1568 4. Obey include files BASE.IBY and EWSRV.IBY updated to reflect
  1569    UID3 values now defined in E32.  Note that the uid3 parameter
  1570    has to be in LOWER CASE before it can be recognised.
  1571 
  1572 From DW2:
  1573 =========
  1574 
  1575 1. CClipboard::Store() now returns a CStreamStore instead of a
  1576    CFileStore reference.
  1577 
  1578 
  1579 Version 0.04.046
  1580 ================
  1581 Made by PeterJ, 23-Nov-1996
  1582 
  1583 Uses    E32/074, E32UTILS/003, F32/040, STORE/029,
  1584 	E32TOOLS/045, EIKTOOLS/118
  1585 
  1586 This is not binary compatible with 045.
  1587 
  1588 Size of ARM BAFL.DLL: 32,896 (Release), 36,384 (Debug).
  1589 
  1590 From PeterJ:
  1591 ============
  1592 
  1593 General modifications required to support the wide-character
  1594 build variant of BAFL.  This functions in the WINS release but
  1595 not yet in the ARM release.
  1596 
  1597 Excruciating details can be found in
  1598 
  1599 file:////sentinel-main/upeterj/japan/notes/code_modifications.html#BAFL_046
  1600 
  1601 In summary:
  1602 
  1603 1) Base address of the WINS BAFL.DLL changed from 61000000 to
  1604    40100000 to conform with MartinB's new allocation scheme.
  1605 
  1606 2) Various minor corrections where generic descriptors were being
  1607    used to refer to non-text data.
  1608 
  1609 3) TResourceReader class member functions that were defined in terms
  1610    of generic descriptors have been extended to provide explicit
  1611    8 and 16-bit data member functions. The caller must decide which ones
  1612    to use depending on whether they are meant to be reading text or
  1613    binary data. Functions affected are:
  1614 
  1615    ReadHBufCL, ReadTPtrC, ReadDesCArrayL.
  1616 
  1617 4) The CDesCArray and MDesCArray classes were defined in terms of 8-bit
  1618    buffers only.  This family now has explicit 8 and 16-bit variants:
  1619 
  1620    CDesC8Array, CDesC16Array, MDesC8Array and MDesC16Array.
  1621 
  1622 5) Minor test code changes. T_RSC has a new compare function to allow it
  1623    to compare 8-bit resource strings with internally defined text descriptors.
  1624    T_RSREAD modified to use explicit 8-bit resource strings.  This will be
  1625    revisited when the resource compiler supports Unicode strings. UIDs for the
  1626    dummy compressor files are now assigned in the make file instead of in
  1627    the MNT command file.
  1628 
  1629 6) Changes to MNT.CMD to support Unicode variants of BAFL. Later versions
  1630    of BAFL should now be released with MNT BLDUREL and MNT BLDUDEB steps
  1631    and the test code exercised after building with MNT BTSTUREL and BTSTUDEB.
  1632 
  1633 
  1634 
  1635 Version 0.03.045
  1636 ================
  1637 Made by DavidW, 11 Nov 1996
  1638 
  1639 Uses    E32/074, E32UTILS/003, F32/040, STORE/029,
  1640 	E32TOOLS/045, EIKTOOLS/118
  1641 
  1642 Retains binary compatibility with 044
  1643 
  1644 Size of BAFL.DLL (ARM):
  1645 	31,132 bytes (Release), 34,368 (Debug)
  1646 
  1647 Re-put at 11am 12th Nov, with:
  1648 
  1649 *) the class originally called CBaflChangeNotifier renamed to
  1650 CEnvironmentChangeNotifier, on the suggestion of MartinT
  1651 
  1652 *) improved T_CNTF test code, from Brenda
  1653 
  1654 *) an update to use the latest version of all system components (not
  1655 strictly necessary, except for MARMD ROMs on Proteas with 8Mb of RAM)
  1656     
  1657 
  1658 From DavidW:
  1659 ------------
  1660 1)  Added some timing tests for resource file lookup in T_RSREAD
  1661 
  1662 2)  Altered the way the RResourceFile class reads resources, to do a
  1663 seek-and-read together, rather than a seek followed by a separate
  1664 read.  This resulted in a 30% speed improvement
  1665 
  1666 3)  The two functions ReadResourceDataL() and PositionToResourceL()
  1667 of RResourceFile have been withdrawn from the public API (although
  1668 empty implementations remain until the next API thaw)
  1669 
  1670 4)  Switched to EIKTOOLS/118 and therefore now default to doing a
  1671 MARMD release as well as a MARM one (whereas previously the default
  1672 was not to do one)
  1673 
  1674 5)  Simplified ..\tsrc\bld.cmd to use setwhat.cmd
  1675 
  1676 Note that the steps required to build and test a new version of
  1677 Bafl are now
  1678 
  1679     MNT BLD followed by BTST then RTST for the Ascii Debug variant
  1680 
  1681     MNT BLDREL / BTSTREL / RTSTREL for the Ascii Release variant
  1682 
  1683     MNT ARMREL / ATSTREL / BLDIMG / REPRO for Gcc Release
  1684 
  1685     MNT ARMDEB / ATSTDEB / BLDIMD / REPROD for Gcc Debug
  1686 
  1687 Then MNT PUTREL as usual to release it.
  1688 
  1689 Note that if you are in a binary compatible phase, you need to rename
  1690 
  1691     BAFL.DEF -> BAFL.FRZ  *and*  BAFLD.DEF -> BAFLD.FRZ
  1692 
  1693 before doing the PUTSRC.
  1694 
  1695 From Brendan:
  1696 -------------
  1697 6)  New class CEnvironmentChangeNotifier in the new module BACNTF.*;
  1698 this is an active object that executes a TCallBack when a change in
  1699 TLocale is detected through RChangeNotifier.  Midnight rollover is
  1700 notified in the same way
  1701 
  1702 7)  New test code T_CNTF for the CEnvironmentChangeNotifier class,
  1703 testing that the callback gets called when locale is changed and
  1704 after midnight crossover.
  1705 
  1706 
  1707 Version 0.01.044
  1708 ================
  1709 Made by JulianL, 06 Nov 1996
  1710 
  1711 Uses    E32/072, E32UTILS/002, F32/038, STORE/028,
  1712 	E32TOOLS/045, EIKTOOLS/114
  1713 
  1714 Completely binary compatible with 043
  1715 
  1716 From Julian:
  1717 ------------
  1718 1) Fix bug in CSoundPlayerAndRecorder::PlaySoundByName() function
  1719 so that it can play the same name again. Also the
  1720 CSoundPlayerAndRecorder's Cancel() operation will close the store
  1721 which holds the alarm sound opened by the above fountion.
  1722 
  1723 
  1724 Version 0.01.043
  1725 ================
  1726 Made by DavidW, 29 October 1996
  1727 
  1728 Uses    E32/072, E32UTILS/002, F32/038, STORE/028,
  1729 	E32TOOLS/045, EIKTOOLS/114
  1730 
  1731 Upgraded to E32/072 et al.
  1732 Note the dependency on E32UTILS for the first time.
  1733 
  1734 Size of BAFL.DLL (ARM):
  1735 	30,660 bytes (Release), 33,764 (Debug)
  1736 
  1737 Re-put at 12:15pm 4/11/96 including MARMD releaseables; modest
  1738 changes were required in the *.?BY and *.CMD files to support this:
  1739 
  1740    *) the value of EXEUID now has to be passed in as a #define to
  1741 PREP, rather than being hard-wired in the BAFL.OBY file)
  1742 
  1743    *)  MNT GETE32UTILS needed some lines adding to it, to fetch the
  1744 MARMD components too
  1745 
  1746 From DavidW:
  1747 ------------
  1748 1)  Converted to the new WINS directory structure.  All INSTxxx verbs
  1749 in the MNT.CMD are history
  1750 
  1751 2)  Removed the template class MArray<T> as over-complicated for what
  1752 it achieved; replaced MArray<TDesC> with MArrayDesC, and renamed the
  1753 header file MARRAY.H to BAMDESCA.H; recall that the role of the
  1754 MArrayDesC class is to define an abstract interface whereby an "array"
  1755 returns references to constant descriptors, without prejudice as to
  1756 how these descriptors are stored
  1757 
  1758 3)  Renamed the functions of the above class to MdcaCount() and
  1759 MdcaPoint(), to avoid name clashes when multiply inheriting from both
  1760 a MArrayDesC and a "standard" array (see the example which has been
  1761 added to T_DESCA to demonstrate this case)
  1762 
  1763 4)  Changed the implementation of CDesCArray to avoid the run-time
  1764 alloc inefficiencies of the previous implementation, albeit at the
  1765 cost of a thicker class (which publicly inherits functions from
  1766 CArrayFixBase that, from a purist point of view, it ought not to);
  1767 recall that the role of the CDesCArray classes are to provide an
  1768 efficient storage of an array of variable length descriptors, which
  1769 are passed into the array as TDesC& and retrieved as TDesC& (const in
  1770 both cases); there are CDesCArrayFlat and CDesCArraySeg variants;
  1771 whereas the MArrayDesC class only provides "read access" to that
  1772 array, the CDesCArray classes additionally provide "write" functions
  1773 such as AppendL, Delete, and InsertL
  1774 
  1775 5)  The Find() and Sort() functions of CDesCArray now support an
  1776 optional TKeyCmpText parameter - which defaults in both cases to
  1777 ECmpFolded, with the same behaviour as before
  1778 
  1779 6)  Based on some code from Duncan, added the class CClipboard to
  1780 Bafl, to replace the classes CReadClipboard and CWriteClipboard that
  1781 are currently in EText (but which are about to disappear); this new
  1782 implementation utilizes the CStreamDictionary class
  1783 
  1784 Note that this change will *not* require software components like
  1785 EText to become dependent on Bafl.  That's because EText will supply
  1786 functions of the type
  1787     CopyToClipboardL(CStreamStore&,CStreamDictionary&,...)
  1788     PasteToClipboardL(CStreamStore&,CStreamDictionary&,...)
  1789 which operate at a level below that of the CClipboard class itself. 
  1790 There are Store() and StreamDictionary() accessor functions in
  1791 CClipboard to return these components.  See the new module BACLIPB.*
  1792 
  1793 7)  New test code T_CLIPB which exercises CClipboard
  1794 
  1795 From Dan:
  1796 ---------
  1797 8)  Fixed a bug in the InternalizeL() and ExternalizeL() functions of
  1798 TCellRef, which were only streaming TInt16's as opposed to TInt32's
  1799 
  1800 9)  Added InternalizeL() and ExternalizeL() functions for TRangeRef
  1801 
  1802 10) For completeness, added operator!=() to TRangeRef
  1803 
  1804 11) Updated T_CELL test code to match the above
  1805 
  1806 From Julian:
  1807 ------------
  1808 12) Altered TBulkData::OpenL() to Leave rather than Panic if
  1809 incompatible data is found, to allow the application to take
  1810 appropriate recovery action
  1811 
  1812 13) Took advantage of RFs::Replace() rather than Rename(), to allow a
  1813 temporary bulk data storage file to be on a different drive from the
  1814 file it is about to replace
  1815 
  1816 14) The SeekToTime function of CSoundPlayerAndRecorder has been
  1817 altered to allow cancellation (eg during a lengthy seek operation).
  1818 
  1819 
  1820 Version 0.01.042
  1821 ================
  1822 Made by DavidW, 27 September 1996
  1823 
  1824 Uses E32 069, F32 035, STORE 024, E32TOOLS 042, EIKTOOLS 113
  1825 
  1826 Size of BAFL.DLL (ARM): 28,084 bytes (inside ROM)
  1827 
  1828 Second attempt at B2-platform release for Bafl
  1829 
  1830 No changes apart from going up to E32/069 et al
  1831 
  1832 
  1833 Version 0.01.041
  1834 ================
  1835 Made by DavidW, 25 September 1996
  1836 
  1837 Uses E32 068, F32 034, STORE 023, E32TOOLS 042, EIKTOOLS 113
  1838 
  1839 Size of BAFL.DLL (ARM): 28,084 bytes (inside ROM)
  1840 
  1841 1)  This is the B2 day release, built in synch with E32/068 et al
  1842 
  1843 2)  The API of Bafl will now remain frozen until some time after
  1844 B2-day
  1845 
  1846 3)  From Julian: added a new function for CSoundPlayerAndRecorder to
  1847 return the compressor UID used by the sound data
  1848 
  1849 4)  This is the first Bafl to support a Debug MARM ROM image.  To
  1850 fetch the additional components necessary to build this, you have to
  1851 set the environment variable need_marmd before invoking the GETBLD. 
  1852 Then the verb MNT ARMDEB builds a debug Bafl.DLL for ARM, MNT ATSTDEB
  1853 does the same thing for the test code, and MNT BLDIMD builds a debug
  1854 ROM image file, BAF041P?.IMD
  1855 
  1856 5)  For reference, inside the ROM, the Debug BAFL.DLL is 31092 bytes
  1857 long, compared to 28084 bytes in Release mode
  1858 
  1859 6)  So long as need_marmd remains set, the PUTREL puts a MARMD
  1860 release component on the network, as well as the standard set.
  1861 
  1862 
  1863 Version 0.01.040
  1864 ================
  1865 Made by DavidW, 9 September 1996
  1866 
  1867 Uses E32 067, F32 032, STORE 021, E32TOOLS 040, EIKTOOLS 109
  1868 
  1869 Size of BAFL.DLL (ARM): 31,984 bytes
  1870 
  1871 "Binary compatible" re-release, with the changes to filepaths as
  1872 required by the changes in F32/032:
  1873 
  1874 1)  The "temp" directory is now c:\system\temp in all builds
  1875 
  1876 2)  The path searched for sound compressor DLLs is now \system\libs
  1877 in all builds
  1878 
  1879 3)  Added INST INSTDEB and INSTREL verbs to MNT
  1880 
  1881 4)  Call MNT INST inside MNT RTST and MNT INSTREL inside MNT RTSTREL
  1882 
  1883 5)  MNT MAKEDIR makes several more directories, as are now required
  1884 in the emulation drives
  1885 
  1886 6)  Changes to the *.OBY files - partly as required by upgrading to
  1887 E32TOOLS/040 - note that you now put in REPRO.EXE rather than
  1888 REPRO.RAM, and all references to REPRO.RAM can be removed
  1889 
  1890 7)  Removed a whole lot of #ifdef Xxx variants code from the test
  1891 code, since it can now be the same in all variants.
  1892 
  1893 
  1894 Version 0.01.039
  1895 ================
  1896 Made by DavidW, 4 September 1996
  1897 
  1898 Uses E32 066, F32 031, STORE 021, E32TOOLS 039, EIKTOOLS 109
  1899 
  1900 Size of BAFL.DLL (ARM): 31,984 bytes
  1901 
  1902 From Julian:
  1903 ------------
  1904 1)  Added two new functions, each called SeekToTime(), to the sound
  1905 services classes - one for CSoundData and the other for
  1906 CSoundPlayerAndRecorder
  1907 
  1908 2)  Modified test code to match
  1909 
  1910 3)  Other minor internal changes to sound services code
  1911 
  1912 From DavidW:
  1913 ------------
  1914 4)  Removed the last trace of *.INL files from \bafl
  1915 
  1916 5)  Moved some template code out of line, to avoid downstream
  1917 compiler warnings
  1918 
  1919 6)  MNT TOOLS now presupposes that the tools should be fetched to
  1920 \epoc32\tools on the local drive, ie any value of %drv% is ignored
  1921 
  1922 7)  The call to PREP in MNT BLDIMG is no longer preceded by a path to
  1923 PREP (ie %drv%\tools\); ie I now assume that PREP (in t:\tools or
  1924 c:\tools) is in your path and is high enough up it
  1925 
  1926 8)  Simplified parts of MNT.CMD by copying things from EIKON, ie the
  1927 calls to _GETCOMP.CMD
  1928 
  1929 9)  Moved the dummy compressors out of the build of BAFL itself, into
  1930 the build of its test code
  1931 
  1932 NB Some of the test code fails under WINS, due to a known defect in
  1933 F32, but it all runs fine under GCC.
  1934 
  1935 
  1936 Version 0.01.038
  1937 ================
  1938 Made by DavidW, 28 August 1996
  1939 
  1940 Uses E32 V066, F32 V030, STORE V020, E32TOOLS V039
  1941 
  1942 Size of BAFL.DLL (ARM): 31,468 bytes
  1943 
  1944 1)  First Bafl release in the post E32/065 world (new directory
  1945 structure and all that)
  1946 
  1947 2)  Completely rewrote large parts of MNT.CMD.  Changed over to the
  1948 new sets of released components (but only release the WINS, WINSD and
  1949 EMARM sets, together with the WINSDDB debugging files)
  1950 
  1951 3)  Re-did every *.MAK file, and removed every *.MDP file from the
  1952 LI.PRJ source file listings
  1953 
  1954 4)  Took advantage of some of the new Store API to simplify some of
  1955 the code and test code (the new way that the RLibrary::Load() et al
  1956 functions work helps too!)
  1957 
  1958 5)  Another Great Step Forward is that "mnt getcomps" now takes
  1959 *much* less time than before (because I no longer need to bother
  1960 fetching all these obscure Greek Hebrew etc variants that the Base
  1961 team used to package irretrievably bound up with the genuine
  1962 articles, but which are now happily separated into their own released
  1963 components
  1964 
  1965 6)  Got fed up with *.OBY files being so un-maintainable.  The
  1966 contents of my BAFL.OBY is now
  1967 
  1968     #define NOCALL nocallentrypoint
  1969 
  1970     romname=baf##ROMVER##ROMVAR##.img
  1971     version=0.01(##ROMVER##)
  1972 
  1973     #include "header.iby"       /* data definitions */
  1974     #include "base.iby"         /* standard Base components */
  1975     #include "ewsrv.iby"        /* text window server */
  1976 
  1977     file=RELDIR\eshell.exe      system\libs\eshell.exe NOCALL
  1978     file=RELDIR\estor.dll       system\libs\estor.dll NOCALL
  1979 
  1980     file=RELDIR\bafl.dll        system\libs\bafl.dll NOCALL
  1981 
  1982     #include "t_bafl.iby"       /* Bafl test files */
  1983 
  1984     file=RELDIR\d_exc.exe       system\progs\d_exc.exe
  1985 
  1986     file=RELDIR\d_gdb.exe       system\progs\d_gdb.exe
  1987     data=RELDIR\repro.ram       system\progs\repro.exe
  1988 
  1989 which ought to improve maintainability.
  1990 
  1991 The files header.iby, base.iby ought in time to become standards,
  1992 shared by all downstream components (I'll define other *.IBY files
  1993 further down the set of software releases)
  1994 
  1995 7)  Note that you *still* need to PETRAN the released file REPRO.EXE
  1996 into REPRO.RAM before you can expect to create a repro-able ROM
  1997 
  1998 8)  Watch out that you'll get lots of warnings, when compiling under
  1999 Gcc, about the HShareBuf class from Store - you can safely ignore all
  2000 these warnings, but you ought to pay attention to any others, as per
  2001 usual
  2002 
  2003 9)  BAFL has a working MNT VALID verb for the first time ever.  It's
  2004 
  2005     :valid
  2006     if not exist ..\valid\nul md ..\valid
  2007     cd ..\valid
  2008     call getrel %_vgroup% emarm %_par%
  2009     petran %_vgroup%.dll %_vgroup%.net
  2010     petran \epoc32\release\marm\rel\%_vgroup%.dll %_vgroup%.bld
  2011     pediff -e32 %_vgroup%.net %_vgroup%.bld
  2012     call cont %g% %p%
  2013     goto end
  2014 
  2015 which, as you can see, restricts itself to testing the built BAFL.DLL
  2016 (Gcc REL version) against one prepared and released earlier.  So, go
  2017 to a clean drive, type
  2018 
  2019 	pgetbld bafl group 038
  2020 	[ mnt gete32tools ] 
  2021 	mnt armrel
  2022 	mnt valid
  2023 
  2024 and you should see the following reassuring message on the screen:
  2025 
  2026     PEDIFF - PE file compare V0.01(039)
  2027     E32 image files are identical.
  2028 
  2029 
  2030 Version 0.01.037
  2031 ================
  2032 Made by DavidW, 15 August 1996
  2033 
  2034 Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036
  2035 
  2036 Size of BAFL.DLL (ARM): 31,980 bytes
  2037 
  2038 From Julian:
  2039 ------------
  2040 1)  Added two new functions to the sound services:
  2041 
  2042 	CSoundData::DataBeingReadTime() and
  2043 	CSoundPlayerRecorder::SoundDataBeingReadTime()
  2044 
  2045 to assist applications to display their playing status
  2046 
  2047 2)  Other internal changes to the sound services code and test code
  2048 
  2049 From DavidW:
  2050 ------------
  2051 3)  Altered the MNT.CMD and BAFL.OBY files of Bafl, bringing them
  2052 closer to the model of Nokie's.  In particular, MNT BLDIMG now
  2053 defaults to producing a P1 (reprogrammable) variant ROM image
  2054 
  2055 4)  Added REPRO and FIXREPRO verbs to MNT.
  2056 
  2057 
  2058 Version 0.01.036
  2059 ================
  2060 (Made by JulianL, 09 August 1996)
  2061 
  2062 Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036
  2063 
  2064 Size of BAFL.DLL (ARM): 28,004 bytes (With the new Sound service, extra
  2065 10K bytes are added).
  2066 
  2067 1) Added new class CBulkData which is an interface to streamed data
  2068 that provides fast data manipulation within minimal overhead. The data
  2069 is stored in temporary files, which may provide more storage space than
  2070 RAM. Also the temporary file can be renamed to a proper saved file name.
  2071 
  2072 2) Added new class CSoundData which provides access to sound data. It is a
  2073 specialization of CBulkData, which provides read/write access to the data
  2074 and to the header information. The data has to be read as chunks and this
  2075 class provides a mechanism for ensuring the chunks are kept in tact and keeps
  2076 the total play time correct. The header of the sound data contains the
  2077 compressor UID which is used to create relevant compressor to decode or
  2078 encode the data.
  2079 
  2080 3) Added new class CCompressorBase which provides the generic interface for
  2081 future compressors. The compressors will be used to compress the sound data.
  2082 A new CCompressorList class is created to contain an array of names, capabilities
  2083 and UIDs of the compressors in the list, which is useful for displaying
  2084 informations of the compressors.
  2085 
  2086 4) Added new static class SoundUtilities which can populate a CDesCArray with
  2087 alarm (algorithmic) sounds and sound files in the hardwired search path. The
  2088 path is *:\SYSTEM\SOUNDS\*.SND. It can also return the full path file name of
  2089 the sound data with a given name.
  2090 
  2091 5) The "SoundUtilites" can also populate the CCompressorList with the
  2092 available compressors provided by the system. Each compressor appears as a DLL
  2093 with the extension *.CPR. Two dummy compressors (DUMCM1 and DUMCM2) have been
  2094 created to show the possibility of plugable compressors. Therefore, future
  2095 compresssors can be pluged into the system easily. The SoundUtilities can also
  2096 return the compressor by searching through the system directory on all drives
  2097 with the specified UID. This is particular useful for CSoundData to create
  2098 compressor. The MNT's "bld" and "bldrel" commands will automatically attach
  2099 the correct UIDs for both dummy compressors. But if you compile the dummy
  2100 compressors using MSVC (not MNT's "bld" or "bldrel" commands), you need to
  2101 use the E32UID to attach the correct UIDs into their WINS release of DLL
  2102 which are in \e32sys directory.
  2103 (ie.    E32UID /a DUMCM1.cpr 290000001 268435539 299999001
  2104 	E32UID /a DUMCM1D.cpr 290000002 268435539 299999001
  2105 	E32UID /a DUMCM2.cpr 290000001 268435539 299999002
  2106 	E32UID /a DUMCM2D.cpr 290000002 268435539 299999002,
  2107 The first UID is temporary as later different builds will be put in different
  2108 directorys. The second UID is the KSoundCompressionV1Uid specified in Notes,
  2109 The third UID are dummy values set for the dummy compressors. In the future,
  2110 the real compressor will put their UID (third Uid) into Notes.)
  2111 
  2112 
  2113 6) Added new class CLibraryUnloader which is an active object for unloading a
  2114 given library when the current activated active object finished. This is particular
  2115 useful for the compressors to unload their librarys during destruction phase.
  2116 If the library is closed before the destruction completed, an access violation
  2117 will occur. Therefore, the compressor requires this library unloader to unload
  2118 their librarys after their destruction completed.
  2119 
  2120 7) Added new class CSoundPlayerRecorder which can play and record sound data.
  2121 It can also play the alarm (algorithmic) sound. This sound player and recorder
  2122 allows user to cancel the play or recording at any time as it is an active object.
  2123 
  2124 8) Added new test codes to test the above new classes ie.
  2125 T_BUKDA tests the CBulkData,
  2126 T_SNDUT tests the SoundUtilities,
  2127 T_SNDDA tests the CSoundData and the use of dummy compressors,
  2128 T_SPYRC tests the CSoundPlayerRecorder.
  2129  
  2130 
  2131 ***Note that when running the test codes on the rack, you will experience crashes
  2132 as there is a bug in F32's GetDir() function which cannot find the attached UID of
  2133 a DLL. Jal has already found the bug and the next release of F32 will have the
  2134 fix. For the time being, when you build the rom image, you copy the EFSRV.DLL,
  2135 EFILE.EXE, ELOCAL.FSY and ESHELL.EXE files from r:\BAFL\TEMP directory to your
  2136 \WORK\EMARM directory.***
  2137 
  2138 
  2139 
  2140 Version 0.01.035
  2141 ================
  2142 (Made by DavidW, 31 July 1996)
  2143 
  2144 Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036
  2145 
  2146 Size of BAFL.DLL (ARM): 18,876 bytes
  2147 
  2148 *** Re-put 12noon 1st Aug, binary compatible, with a tweak to
  2149 BAMATCH.H to avoid Gcc compiler woes downstream ***
  2150 
  2151 Release in synch with E32/064 et al:
  2152 
  2153 1)  Changed the interface to the TBoundedArray class so that its
  2154 Append function works by reference rather than by pointer, the same
  2155 as the arrays in the base
  2156 
  2157 2)  Commented out some references to Hufman decompression, since this
  2158 functionality no longer exists in TDes.
  2159 
  2160 
  2161 Version 0.01.034
  2162 ================
  2163 (Made by DavidW, 9 July 1996)
  2164 
  2165 Uses E32 V063, F32 V027, STORE V017, E32TOOLS V034
  2166 
  2167 Size of BAFL.DLL (ARM): 18,880 bytes
  2168 
  2169 1)  Changed the interface to CDesCArray to use const TDesC& rather
  2170 than const TDesC*; as well as being "the right thing" to do, this
  2171 also helps avoid some annoying Gcc compiler warnings (about taking
  2172 the address of temporaries) downstream.
  2173 
  2174 
  2175 Version 0.01.033
  2176 ================
  2177 (Made by DavidW, 8 July 1996)
  2178 
  2179 Uses E32 V063, F32 V027, STORE V017, E32TOOLS V034
  2180 
  2181 Size of BAFL.DLL (ARM): 18,880 bytes
  2182 
  2183 The new compiler resulted in a 14.3% codesize reduction (11.7% due to
  2184 the compiler improvements themselves, and the rest due to getting rid
  2185 of explicit template instantiations)
  2186 
  2187 1)  Release compatible with E32/063 etc
  2188 
  2189 2)  I've now got -g-Wno-ctor-dtor-privacy after every call to maktran,
  2190 to stop going mad on account of idiotic Gcc warning
  2191 
  2192 3)  OTOH the other "new" warning, about taking the address of a
  2193 temporary, is "a good thing", and I rearranged some (test) code to
  2194 avoid it
  2195 
  2196 
  2197 Version 0.01.032
  2198 ================
  2199 (Made by DavidW, 23 May 1996)
  2200 
  2201 Uses E32 V059, F32 V023, STORE V014, E32TOOLS V023
  2202 
  2203 Size of BAFL.DLL (ARM): 22,020 bytes
  2204 
  2205 *** Rebased using J-Day components, 4th June 1996 ***
  2206 
  2207 *** Modest changes to admin files, as required by new components ***
  2208 
  2209 From DavidW:
  2210 ------------
  2211 1)  Rebuilt compatible with STORE 014.
  2212 
  2213 
  2214 Version 0.01.031
  2215 ================
  2216 (Made by DavidW, 20 May 1996)
  2217 
  2218 Uses E32 V059, F32 V023, STORE V013, E32TOOLS V023
  2219 
  2220 Size of BAFL.DLL (ARM): 22,020 bytes
  2221 
  2222 From MartinB:
  2223 -------------
  2224 1)  New Bafl module BACELL.* containing the classes TCellRef and
  2225 TRangeRef which were previously duplicated between the Spreadsheet
  2226 engine and the Grid test code
  2227 
  2228 (Note that this requires BAFL to be dependent on STORE, for the first
  2229 time, which is a shame in a way, but too bad)
  2230 
  2231 2)  New test code T_CELL.CPP to test BACELL
  2232 
  2233 3)  New resource header file BADEF.RH containing a few definitions
  2234 likely to be of use to users of resource files other than Eikon, eg
  2235 the Sheet engine or the Opl translator
  2236 
  2237 
  2238 Version 0.01.030
  2239 ================
  2240 (Made by DavidW, 10 May 1996)
  2241 
  2242 Uses E32 V058, F32 V023, E32TOOLS V023
  2243 
  2244 Size of BAFL.DLL (ARM): 20,484 bytes
  2245 
  2246 From DavidW:
  2247 ------------
  2248 1)  Rebuilt with latest E32(058) etc - on the rack, the test code now
  2249 goes like a proverbial rocket
  2250 
  2251 
  2252 Version 0.01.029
  2253 ================
  2254 (Made by DavidW, 9 May 1996)
  2255 
  2256 Uses E32 V057, F32 V021, E32TOOLS V022
  2257 
  2258 Size of BAFL.DLL (ARM): 20,996 bytes
  2259 
  2260 From DavidW:
  2261 ------------
  2262 1)  Changes to class definitions to allow downstream software
  2263 components to meet the EMPTY.CPP test, and thereby cut down on
  2264 code-bloat under GCC
  2265 
  2266 2)  Removed the function MArray::MaCBase() as not required (arising
  2267 out of my lack of understanding of C++ casting rules)
  2268 
  2269 3)  Renamed TIncrMatcherXxx to RIncrMatcherXxx, since they need to
  2270 have a destructor, and TXxx classes should never have a destructor
  2271 
  2272 (actually Colly says RXxx classes should never have a destructor
  2273 either, but I'll leave things as they are for now)
  2274 
  2275 4)  Even more changes to the RIncrMatcherXxx class tree, eg to avoid
  2276 copy constructors being generated on the fly
  2277 
  2278 
  2279 Version 0.01.028
  2280 ================
  2281 (Made by DavidW, 1 May 1996)
  2282 
  2283 Uses E32 V057, F32 V021, E32TOOLS V021
  2284 
  2285 Size of BAFL.DLL (ARM): 20,484 bytes
  2286 
  2287 From Brendan:
  2288 -------------
  2289 1)  New feature added to box layout engine to support a layout being
  2290 reset and then recalculated with different parameters in force, eg
  2291 allowing an application to determine the largest possible font that
  2292 can be used for a set of controls inside a fixed region of screen:
  2293 
  2294 2)  Added virtual function ResetAll() to CBox and CBranchBox(), which
  2295 recursively reset the sizes of the boxes
  2296 
  2297 3)  New test code T_BLO2 for the above features
  2298 
  2299 
  2300 Version 0.01.027
  2301 ================
  2302 (Made by DavidW, 26 April 1996)
  2303 
  2304 Uses E32 V057, F32 V021, E32TOOLS V021
  2305 
  2306 Size of BAFL.DLL (ARM): 20,484 bytes
  2307 
  2308 From DavidW:
  2309 ------------
  2310 1)  Re-release compatible with E32(057) and F32(021): the only change
  2311 required was in the *.OBY file, as per the E32 release notes
  2312 
  2313 
  2314 Version 0.01.026
  2315 ================
  2316 (Made by DavidW, 15 April 1996)
  2317 
  2318 Uses E32 V056, F32 V020, E32TOOLS V020
  2319 
  2320 Size of BAFL.DLL (ARM): 20,484 bytes
  2321 
  2322 From DavidW:
  2323 ------------
  2324 1)  Fixed the resource reader class to handle mis-aligned
  2325 sub-resources, eg reading a TInt32 following inline after a text
  2326 string; added some tests to T_RSREAD to test this case
  2327 
  2328 2)  Made a few changes to BABLO.* to make it clean-compile, without
  2329 any compiler warnings, in all build variants.
  2330 
  2331 
  2332 Version 0.01.025
  2333 ================
  2334 (Made by DavidW, 15 April 1996)
  2335 
  2336 Uses E32 V056, F32 V020, E32TOOLS V020
  2337 
  2338 Size of BAFL.DLL (ARM): 19,972 bytes
  2339 
  2340 Note that ideas on how MNT VALID might work (described in the
  2341 previous release notes) now look a bit simplistic; more research in
  2342 this area is required
  2343 
  2344 From DavidW:
  2345 ------------
  2346 1)  Converted the CONE files LAYOUT.CPP, BLOMAIN.HRH and BLOMAIN.H to
  2347 be part of BAFL instead, as the files BABLO.* ("Box LayOut" engine),
  2348 making adjustments as required to run on ARM; likewise converted the
  2349 CONE test code \cone\layout\tlayout to run as \bafl\tsrc\t_blo
  2350 
  2351 2)  Converted the CONE files COERSBUF.* to be part of BAFL instead,
  2352 as the files BARSREAD.* ("ReSource READer"), making adjustments as
  2353 required to run on ARM; wrote new test code T_RSREAD for this class,
  2354 which reads resources from the same test file T_RSC.RSC that is used
  2355 by test code T_RSC
  2356 
  2357 3)  Slimmed down some of the test code T_RSC, since it was boring and
  2358 repetitive for little gain, and since T_RSREAD now provides an
  2359 independent test of using RResourceFile
  2360 
  2361 4)  Added a batch file to run under the Text Shell on the rack,
  2362 RACK.BTF (renamed to RACK.BAT in the ROM), with the intended effect
  2363 of running all BAFL test programs one after the other; what actually
  2364 happens is that they all get run simultaneously, which I suppose is
  2365 less boring and exercises the O/S more thoroughly; so the way of
  2366 running all test code under WINS is to CD to \bafl\tsrc and to type
  2367 "RUN", and the way of running all test code on the rack is to CD to
  2368 \test and to type "RACK.BAT".
  2369 
  2370 
  2371 Version 0.01.024
  2372 ================
  2373 (Made by DavidW, 12 April 1996)
  2374 
  2375 Uses E32 V056, F32 V020, E32TOOLS V020
  2376 
  2377 Size of BAFL.DLL (ARM): 8196 bytes
  2378 
  2379 From DavidW:
  2380 ------------
  2381 1)  Added VALID verb to MNT.CMD as follows:
  2382 
  2383     :valid
  2384     if not exist ..\valid\nul md ..\valid
  2385     cd ..\valid
  2386     call getrel %_vgroup% emarm %_par%
  2387     fc /b %_vgroup%.dll \work\emarm\%_vgroup%.dll > ..\valid.lis
  2388     call cont %g% %p%
  2389     type ..\valid.lis
  2390     goto end
  2391 
  2392 which can be used as a gauge of whether a BAFL.DLL built on one
  2393 person's PC matches that built (under supposedly identical
  2394 circumstances) on another person's PC.  It's only a "gauge" since
  2395 there can be, in my experience so far, up to two blocks of four bytes
  2396 each that vary, which are presumably embedded date-time stamps
  2397 
  2398 2)  Moved the following modules from CONE to BAFL: BNDARRAY (renamed
  2399 to BABNDA), COEDESCA (renamed to BADESCA), and COEMATCH (renamed to
  2400 BAMATCH); made alterations as required for an ARM build
  2401 
  2402 3)  Renamed CTextBuf to RTextBuf, and CIncrMatcherTextBuf to
  2403 RIncrMatcherTextBuf, since whatever else these classes may be, they
  2404 are *not* C's (as they do not inherit from CBase)
  2405 
  2406 4)  Wrote T_BND test code for TBoundedArray; this showed up the fact
  2407 that recent E32 changes (to compress flat buffers when they are
  2408 reset) have broken TBoundedArray; fixed this by overriding the
  2409 Compress() function, to do nothing
  2410 
  2411 5)  Wrote T_DESCA test code for the CDesCArray family
  2412 
  2413 6)  Moved Brendan's TMATCH test code for the incremental matchers to
  2414 Bafl, renaming it (Bafl style) to T_MATCH, and converting it as
  2415 required for ARM
  2416 
  2417 (all four BAFL test programs run successfully on the rack)
  2418 
  2419 7)  Deleted the header file BAFLSTD.H as an anachronism - you should
  2420 delete any copies you have, eg in \e32inc; in the modern standard,
  2421 you should include individual header files like BARSC.H or BNDARRAY.H
  2422 directly, as and when you need them
  2423 
  2424 8)  Outputting all errors from GCC builds to the same file CERR.TXT
  2425 has got to be a mistake; I now output errors to %1.AER files (Arm
  2426 ERror files), eg using the batch file \bafl\tsrc\doarm.cmd:
  2427 
  2428     call maktran %1.mak %1.arm
  2429     call nmake -f %1.arm /x %1.aer
  2430 
  2431 9)  Some long-overdue TLC for files in the BAFL group generally.
  2432 
  2433 
  2434 Version 0.01.023
  2435 ================
  2436 (Made by DavidW, 9 April 1996)
  2437 
  2438 Uses E32 V056, F32 V020, E32TOOLS V019
  2439 
  2440 From DavidW:
  2441 ------------
  2442 1)  Release compatible with E32(056) etc
  2443 
  2444 2)  Had to changed all KFileXxx file-open constants to EFileXxx; had
  2445 to change EShareReadersOnly to EFileShareReadersOnly, etc
  2446 
  2447 3)  Found out that it was daft to set the "-v" flag in BLDIMG.CMD,
  2448 since the verbose output seems to end up in a file E32ROM.LOG anyway;
  2449 so my \bafl\tsrc\bldimg.cmd is now just
  2450 
  2451 	e32rom -gcc bafl.oby
  2452 
  2453 4)  Had to replace the line
  2454 
  2455 	secondary=\work\emarm\efsrv.exe sys\efsrv.exe
  2456 
  2457 in BAFL.OBY with the pair of lines
  2458 
  2459 	secondary=c:\work\emarm\efile.exe sys\efile.exe
  2460 	file=c:\work\emarm\efsrv.dll sys\efsrv.dll
  2461 
  2462 
  2463 Version 0.01.022
  2464 ================
  2465 (Made by DavidW, 22 March 1996)
  2466 
  2467 Uses E32 V055, F32 V019, E32TOOLS V017
  2468 
  2469 From Bret:
  2470 ----------
  2471 1)  This is the first release of BAFL that supports an ARM build, and
  2472 whose test code runs on the rack
  2473 
  2474 2)  In order to build the ARM version of this code, you will need to
  2475 have installed the GCC tools on your PC: if you haven't done so
  2476 already, type
  2477     TOOLS GCC
  2478 (invokes the t:\tools\tools.bat batch file)
  2479 
  2480 3)  You will also need a suitable version of the E32TOOLS: type
  2481     MNT GETE32TOOLS
  2482 
  2483 4)  Apart from this, the standard GETBLD (or MNT GETCOMPS) will fetch
  2484 all the software components required to build BAFL in either WINS or
  2485 ARM variants
  2486 
  2487 5)  Type MNT ARMREL to build the Release version of the ARM variant
  2488 of BAFL.DLL, and MNT ATSTREL to build the Release version of the ARM
  2489 variant of T_RSC.EXE
  2490 
  2491 (Inspect the text file CERR.TXT for any build errors; note that you
  2492 can get lots of strange behaviour if you have failed to add \gcc\bin
  2493 to your PATH)
  2494 
  2495 6)  In the ..\tsrc directory, type BLDIMG to build the file
  2496 ARMROM.IMG (this follows instructions in the BAFL.OBY text file)
  2497 
  2498 7)  Use the network to transfer ARMROM.IMG to a RACK PC and type
  2499     PEIGER ARMROM.IMG
  2500 to repro the rack with that ROM ...
  2501 
  2502 8)  As it happens very few changes to the BAFL code were required, to
  2503 allow the compilation and linking under GCC
  2504 
  2505 From DavidW:
  2506 ------------
  2507 9)  Renamed the WINS release components BAFL and BAFLPDB to EWINS and
  2508 EWINSDB; following the practice from other software groups, the ARM
  2509 release component is called EMARM
  2510 
  2511 10) Renamed the MDWORK verb of MNT to MAKEWORK (this makes all the
  2512 ARM work directories as well as the EWINS work directories).
  2513 
  2514 
  2515 Version 0.01.021
  2516 ================
  2517 (Made by DavidW, 4 March 1996)
  2518 
  2519 Uses E32 V054, F32 V018
  2520 
  2521 1)  Re-release compatible with E32(054) and F32(018) (ie VC 4)
  2522 
  2523 2)  Removed "/FORCE" declarations in project settings, to allow
  2524 incremental linking for debug builds.
  2525 
  2526 
  2527 Version 0.01.020
  2528 ================
  2529 (Made by DavidW, 26 February 1996)
  2530 
  2531 Uses E32 V053, F32 V017
  2532 
  2533 From DavidW:
  2534 ------------
  2535 1)  RResourceFile now has an inline function Offset() returning the
  2536 value of iOffset, as required in order for CONE/Eikon to properly
  2537 support multiple application resource files being loaded in the same
  2538 enivronment
  2539 
  2540 2)  Added a TCleanupItem() operator to RResourceFile, allowing
  2541 RResourceFile objects to be placed on the cleanup stack; the contents
  2542 of the associated Cleanup() function is to call Close()
  2543 
  2544 3)  Renamed the GETJBLD verb of MNT.CMD to GETCOMPS
  2545 
  2546 
  2547 Version 0.01.019
  2548 ================
  2549 (Made by DavidW, 21 February 1996)
  2550 
  2551 Uses E32 V053, F32 V017
  2552 
  2553 This build is binary compatible with BAFL 018; a downstream component
  2554 that works with BAFL 018 should work equally well with BAFL 019,
  2555 without any recompilation
  2556 
  2557 From MartinT:
  2558 -------------
  2559 1)  Fixed bug whereby, if a file contained n resources, behaviour
  2560 when attempting to read resources n+1 and n+2 was unpredictable
  2561 (diagnosed by Jal).  It is now possible to reliably read through all
  2562 the resources in a file; attempting to read beyond the end results in
  2563 a Leave.
  2564 
  2565 
  2566 Version 0.01.018
  2567 ================
  2568 (Made by DavidW, 19 February 1996)
  2569 
  2570 Uses E32 V053, F32 V017
  2571 
  2572 1)  Re-release compatible with E32(053) and F32(017)
  2573 
  2574 2)  Added EXPORT and DELWORK verbs to MNT.CMD doing the usual things
  2575 
  2576 3)  THIS BUILD WORKS IN RELEASE MODE TOO!  (Not that I changed
  2577 anything; I guess that some bug fixes or other changes elsewhere in
  2578 the system must have put right whatever was going wrong before)
  2579 
  2580 
  2581 Version 0.01.017
  2582 ================
  2583 (Made by DavidW, 15 February 1996)
  2584 
  2585 Uses E32 V052, F32 V016
  2586 
  2587 From MartinT:
  2588 -------------
  2589 1) Altered RResourceFile class to better encapsulate the
  2590 20-bit offset generated by the NAME statement in resource
  2591 files.  There is now an iOffset member which carries the
  2592 offset corresponding to the name.  Initially this contains
  2593 zero (set by OpenL()).  When ConfirmSignature() is called,
  2594 the iOffset() is set from the top 20 bits of the second long in
  2595 the signature record.
  2596 
  2597 2) There is a OwnsResourceId() function which returns ETrue
  2598 if a resource id has top 20 bits the same as the iOffset's, or
  2599 if its top 20 bits are zero.  This means that resources can be
  2600 read in sequence 1, 2, 3 ..., or in sequence 0xabcde001,
  2601 0xabcde002 ..., where 0xabcde000 is the offset.  The latter
  2602 is intended for CONE application use.  The former can also
  2603 be useful.
  2604 
  2605 3) Changed the class to allow it to be a value type
  2606 rather than a reference type.  Also, changed from
  2607 privately inheriting an RFile to owning one.  You now
  2608 use OpenL() and Close() to open and close the resource
  2609 file, and you can pass them around by value.
  2610 
  2611 
  2612 Version 0.01.016
  2613 ================
  2614 (Made by DavidW, 31 January 1996)
  2615 
  2616 Uses E32 V052, F32 V016
  2617 
  2618 1)  Re-release compatible with E32(052) and F32(016)
  2619 
  2620 
  2621 Version 0.01.015
  2622 ================
  2623 (Made by DavidW, 8 January 1996)
  2624 
  2625 Uses E32 V051, F32 V015
  2626 
  2627 1)  Re-release compatible with E32(051) and F32(015)
  2628 
  2629 
  2630 Version 0.01.014
  2631 ================
  2632 (Made by DavidW, 19 December 1995)
  2633 
  2634 Uses E32 V050, F32 V014
  2635 
  2636 1)  Re-release compatible with E32(050) and F32(014)
  2637 
  2638 
  2639 Version 0.01.013
  2640 ================
  2641 (Made by DavidW, 4 December 1995)
  2642 
  2643 Uses E32 V049, F32 V013
  2644 
  2645 1)  Re-release compatible with E32(049) and F32(013)
  2646 
  2647 
  2648 Version 0.01.012
  2649 ================
  2650 (Made by DavidW, 16 November 1995)
  2651 
  2652 Uses E32 V048, F32 V012
  2653 
  2654 1)  Re-release compatible with E32(048) and F32(012)
  2655 
  2656 
  2657 Version 0.01.011
  2658 ================
  2659 (Made by DavidW, 19 October 1995)
  2660 
  2661 Uses E32 V047, F32 V011
  2662 
  2663 1)  Added ConfirmSignature(TInt aSignature,TInt &aOffset) to
  2664 RResourceFile, which can be called for resource files whose first
  2665 resource consists of two 32-bit integers
  2666 
  2667    *) the first being a signature, which must match the passed value
  2668 exactly
  2669 
  2670    *) the second having no special meaning as far as RResourceFile is
  2671 concerned (but higher level software may interpret it eg as the
  2672 "offset" value for the resource file); this gets written to aOffset
  2673 
  2674 The function returns either KErrNone, or an error value if the
  2675 signature does not match.
  2676 
  2677 
  2678 Version 0.01.010
  2679 ================
  2680 (Made by DavidW, 9 October 1995)
  2681 
  2682 Uses E32 V047, F32 V011
  2683 
  2684 1)  Rebuilt to work with new E32 and F32
  2685 
  2686 Unfortunately the release mode code still fails to run (it still
  2687 comes grinding to a halt in exactly the same place as before -
  2688 somewhere deep inside F32).
  2689 
  2690 
  2691 Version 0.01.009
  2692 ================
  2693 (Made by DavidW, 6 September 1995)
  2694 
  2695 Uses E32 V045, F32 V009
  2696 
  2697 1)  Rebuilt to work with new E32 and F32
  2698 
  2699 
  2700 Version 0.01.008
  2701 ================
  2702 (Made by DavidW, 28 August 1995)
  2703 
  2704 Uses E32 V044, F32 V008
  2705 
  2706 1)  Added RResourceFile::AllocReadLC, which does the same as
  2707 AllocRead but leaves the allocated cell (for the returned HBufC*
  2708 pointer) on the cleanup list
  2709 
  2710 2)  Converted test resource file to use BUF instead of STR and so no
  2711 longer need to go around removing terminating zeroes; also made the
  2712 test resource file more independent from xwim's S_.RSC.
  2713 
  2714 
  2715 Version 0.01.007
  2716 ================
  2717 (Made by DavidW, 23 August 1995)
  2718 
  2719 Uses E32 V044, F32 V008
  2720 
  2721 1)  Converted to work with new E32 and F32
  2722 
  2723 2)  I've taken a policy decision that, wherever relevant, Bafl will
  2724 presuppose that a trap handler has been installed by the caller. 
  2725 This will always be the case in an Hcil application (as
  2726 CHci::ExecuteD will install a trap handler), but other users of Bafl
  2727 will have to take independent steps.  See code in T_RSC for an
  2728 example
  2729 
  2730 3)  Thus CResourceFile::AllocReadL now presupposes that a trap
  2731 handler has been installed (and that the caller is already inside a
  2732 TRAP harness) - this allows the code to simplify (there's no longer
  2733 any need for a local TRAP harness)
  2734 
  2735 
  2736 Version 0.01.006
  2737 ================
  2738 (Made by DavidW, 21 August 1995)
  2739 
  2740 Uses E32 V043, F32 V007
  2741 
  2742 1)  Converted to work with new E32 and F32
  2743 
  2744 2)  Added L's to the names of all functions that can leave
  2745 
  2746 3)  Moved BAFL.MAK from ..\src to ..\group for the usual reason (to
  2747 make it easier for people debugging downstream to have the IDE know
  2748 automatically where to load bafl source code from)
  2749 
  2750 
  2751 Version 0.01.005
  2752 ================
  2753 *** Re-made by DavidW, 28 July 1995, using the new versions of E32
  2754 v041 and F32 v006 (as the old one was link-incompatible)
  2755 
  2756 (Made by DavidW, 26 July 1995)
  2757 
  2758 Available on R:
  2759 
  2760 Uses E32 V041, F32 V006 (from R:)
  2761 
  2762 1)  Converted to work with new E32 and F32
  2763 
  2764 2)  MNT.CMD improved, copying many ideas from Hcil
  2765 
  2766 3)  Converted to new-style no .LNK files CMD-line build system.
  2767 
  2768 
  2769 Version 0.01.004
  2770 ================
  2771 (Made by DavidW, 23 June 1995)
  2772 
  2773 Available on S:
  2774 
  2775 Uses E32 V039, F32 V005
  2776 
  2777 1)  Converted to work with new E32 and F32
  2778 
  2779 
  2780 Version 0.01.003
  2781 ================
  2782 (Made by DavidW, 22 May 1995)
  2783 
  2784 Uses E32 V038, F32 V003
  2785 
  2786 1)  RResourceFile::Read now tests to see if the resource will fit in
  2787 the passed buffer, and if not, panics
  2788 
  2789 2)  Resource files are now opened with EShareReadersOnly
  2790 
  2791 
  2792 Version 0.01.002
  2793 ================
  2794 (Made by DavidW, 15 May 1995)
  2795 
  2796 Uses E32 V035, F32 V001
  2797 
  2798 NB There's currently only an ascii debug version; Unicode threatens a
  2799 huge can of worms that will require a *lot* of attention to sort out.
  2800 
  2801 1)  Now uses F32 instead of home-brewed access to files
  2802 
  2803 2)  CResourceFile now exists as RResourceFile (a subclass of RFile
  2804 from F32)
  2805 
  2806 3)  Provided the static RResourceFile::New as a convenience function
  2807 
  2808 4)  Simplified many of the function names
  2809 
  2810 5)  Provided an HBufC *AllocRead() function to match the void Read()
  2811 function, but this is broken for two reasons:
  2812 
  2813 6)  First, the current implementation of HBufC::New is useless (it
  2814 sets the iLength field to zero, but there's no useful way to change
  2815 this later to something non-zero!)
  2816 
  2817 7)  Second, the current implementation of Hufman decoding often
  2818 decodes one extra spurious character, which can overwrite the end of
  2819 a supplied buffer
  2820 
  2821 
  2822 Version 0.01.001
  2823 ================
  2824 (Made by MartinB, 11 May 1995)
  2825 
  2826 Uses E32 V035
  2827 
  2828 First release.
  2829