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