Update contrib.
2 ===================================
3 Released into: GT Mainline 578
4 Built against: GT Mainline 574b ALL VARIENTS
5 Released by: Franco Bellu
6 Uses: EUSER ESOCK INSOCK IMUT INETPROTUTIL BAFL
7 For debug, add: FLOGGER EFSRV
8 For tests, add: HTTPTESTUTILS, C32
10 Website: http://lon-wapbuild01.INTRA/HTTP_Project/
20 * Fixed defect SAM-54WFUN : " String pool does not return an error when a string cannot be found in a string table using StringF() method "
21 * Fixed defect BEU-55CND8 "using the CStringPoolImplementation from an empty string causes an access violation "
22 * Fixed defect CLE-536M4D "String pool comparison operators should ASSERT_DEBUG check for use of multiple table "
28 Other Significant Changes
29 =========================
41 Tim and Arun, 3 July 2001
43 CR for BAFL and LocE32: allow customizable language downgrade paths to be specified as
48 Made by Kevin, 11 August 1999
50 Requires RCOMP 318 because of the BC break in the handling of TEXT16 resources.
52 Added TResourceReader::AlignCountedPtr16 which returns the counted string length and
53 adjusts the pointer past both the length byte and any additional padding byte. The value
54 of the padding byte is checked with an __ASSERT_DEBUG(): the wrong value will cause a
55 panic with code EBafPanicUnicodeTextPaddingError (=14).
57 Added AlignCountedPtr16 calls to the functions which read a Unicode descriptor from
60 TResourceReader::ReadHBufC16L()
61 TResourceReader::ReadTPtrC16()
62 TResourceReader::ReadTPtrC16(TInt aIndex,const TDesC8* aBuffer)
64 Modified T_RSC.CPP to correct the r_text_signature check which discriminated between a Unicode
65 resource file and an 8-bit resource file: the RCOMP padding algorithm puts in an additional
66 padding byte, which is now checked. Used _LIT() for the resource file names and arranged to build
67 the TRSC resource via the T_RSC.MMP file.
69 Extended T_RSREAD.CPP to test resources and arrays which contains a mixture of 8 and 16 bit text,
70 organised to test zero-length strings and Unicode strings with both odd and even alignment.
71 Added the TRSC resource to the T_RSREAD.MMP file for good measure, and get the resource file name
72 from the shared T_RSC.H include file.
74 Modified BLD.INF to mark T_CLINE as a manual test and T_LIBT as a supporting DLL.
76 NB ALSO INCLUDES CHANGES MADE IN RELEASE 100 WHICH ARE NOT DOCUMENTED HERE
81 Made by DavidK, 27 May 1999
83 Uses as 090. Identical release to 090 apart from wins urel and Marm variants also built.
87 Made By DavidK, 26 May 1999
89 Uses E32/156, F32/122, STORE/050, E32UTILS/019,
90 E32TOOLS/095, E32TOOLP/098, EIKTOOLS 133
92 Renamed the class BaflFileSortTable to CBaflFileSortTable so source incompatible but BC with 089
93 (which was a frozen deffile version of 088)
94 Intended for use with the first public release of Uikon.
98 Made by MarcoS, 29 April 1999
100 Uses E32/156, F32/122, STORE/050, E32UTILS/019,
101 E32TOOLS/095, E32TOOLP/098, EIKTOOLS 128
103 The sound staff has been moved from Bafl to form a new component: BaflSnd.
105 Most of the utilities defined on EikUtils (Eikon) have been transferred
111 Made by ChrisD, 4 December 1998
113 Uses E32/156, F32/122, STORE/050, E32UTILS/019,
114 E32TOOLS/095, E32TOOLP/098, EIKTOOLS 128
116 Minor source changes for boilerplating Symbian copyright text.
117 MNT command changed to use new version of E32TOOLP (098) and
118 valid command modified to use new evalid command for validation.
119 ROM building scripts updated so ROM could be built.
121 Built using VC5 and Service Pack 3. Release tested on the following
129 All tests passed on a PB rack. Note that test code T_SNDDA will fail
130 under WINS on PC's without a soundcard.
134 Made by MattM 28 October 1998
136 Uses E32/156, F32/122, STORE/050, E32UTILS/019,
137 E32TOOLS/095, E32TOOLS/096, EIKTOOLS 128
139 Changed Unicode third UID on BAFL.DLL
140 Changed Unicode second UID on clipboard file
144 (Made by SimonC, 29 September 1998)
146 Uses E32/125, F32/095, STORE/047, E32UTILS/019,
147 E32TOOLS/092, E32TOOLS/091, EIKTOOLS 128
149 Backwards but not forwards compatible with 078
150 Built using VC5. .PDBs are incompatible with VC4
152 1) Changed RResourceFile::ConfirmSignatureL() to always confirm resource
153 file signatures on the assumption that no-one can possibly be using version
154 003 files any longer (they were superceded two years ago) and the existing
155 resource layout and structures are fixed now for as long as we support BC.
157 2) Added RResourceFile::SignatureL() which returns the signature of the
158 resource file. This shouldn't be required by anyone or anything other than
161 3) Changed const TUint KBaflCharTruncation in BAUTILS.H to a const TUint to
162 prevent a VC5 warning.
164 Note that test code T_SNDDA will fail in wins builds on pcs without a sound card
170 (Made by SimonC, 16 Mar 1998)
172 Uses E32/125, F32/095, STORE/047, E32UTILS/019,
173 E32TOOLS/092, E32TOOLS/091, EIKTOOLS 125
175 No source changes - rebuilt with E32 125 et al
177 Changed *.IBY to support unicode ROMs and reflect recent E32 changes
179 All WINS and MARM release releases entirely forward compatible
180 MARM Debug releases are incompatible
186 (Made by SimonC, 9 Dec 1997)
188 Uses E32/107, F32/074, STORE/043, E32TOOLS/082, EIKTOOLS 123
190 Backward but not forward compatible with 076
193 In bacline.*, class CCommandLineArguments(), which gives Count() and
194 Arg() functions whose purpose is similar to argv and argc parsing in
195 conventional C/C++ programming. This class is mainly intended for WINC
196 programs which, unlike most regular EPOC32 programs, actively use their
197 command-line arguments.
200 Converted to MAKMAKE and moved building verbs from MNT.CMD to EBLD.BAT
205 (Made by DavidW, 28 May 1997)
207 Uses E32/107, F32/074, STORE/043, E32TOOLS/067
209 Completely BC with 075
211 Built with Platform 001 releases
213 Size of BAFL.DLL: 28,432 bytes (ARMREL)
214 35,568 bytes (ARMDEB)
216 MNT VALID works on a clean drive
218 1) Upgraded to Platform 001 releases
220 2) Fixed SW3-868: Resource language file look-up fails to find a
221 *.R01 file (though, as is often the cases with "simple fixes", the
222 fix wasn't quite so simple after all!)
224 3) Fixed SW3-827 by adding MAP files to the releasable file lists
226 4) The advent of EChangesSystemTime in E32 106 had the side-effect
227 of breaking a very restrictive test in Bafl test code T_CNTF. This
228 could be viewed as highlighting a non-BC feature in the E32 changes;
229 but it's already been decided that we can live with this (no real app
230 ought to be making a test like that in T_CNTF). This test code has
231 now been improved to avoid this problem (and, hopefully, to make it
232 immune against any future additions to the TChanges enum)
234 5) Fixed a problem with building the test code in ARMDEB (shown up
235 when there was no prior build of the test code in ARMREL)
240 (Made by DavidW, 8 May 1997)
242 Uses E32/101, F32/069, STORE/042, E32TOOLS/063
244 **Almost** completely compatible with 074
246 **IMPORTANT** See note about "descriptor arrays" below
248 WINS release, debug, unicode release and unicode debug
249 ARM release, debug, unicode release and unicode debug
251 Size of BAFL.DLL: 28,420 bytes (ARMREL)
252 35,556 bytes (ARMDEB)
254 MartinB has pointed out that the API of the descriptor array classes
255 has one real drawback to it: the MdcaPoint() functions were returning
259 whereas there are many advantages to them instead returning
263 For example, this causes real problems for the Shell, and has in the
264 past caused real problems with the printer model name array in Eikon
266 After prolonged discussions with MartinB, Bill, and Geert and myself,
267 we decided to "do the right thing" and *** break API compatibility
268 *** to that extent. This will avoid much lurking death in the
269 future, to do with temporary variables disappearing as the stack
272 All code that uses descriptor arrays - whether of the MDesCArray or
273 CDesCArray or whatever type - should be recompiled. That should be
274 the only change necessary.
276 Note however that if you previously assigned the result of an
277 MdcaPoint operation to a
281 reference variable on the stack in some code, you should now change
282 this code to assign it to a
288 *** Note that because the operator[] function of CDesCArray is
289 defined as being equivalent to its MdcaPoint() function, you may need
290 some care to find these cases.
292 All EXPORTed functions retain their same ordinal values.
297 (Made by DavidW, 7 May 1997)
299 Uses E32/101, F32/069, STORE/042, E32TOOLS/063
301 Completely compatible with 073
303 WINS release, debug, unicode release and unicode debug
304 ARM release, debug, unicode release and unicode debug
306 Size of BAFL.DLL: 28,284 bytes (ARMREL)
307 35,440 bytes (ARMDEB)
311 1. Fixed a potential bug with "change leakage" in
312 CEnvironmentChangeNotifier, when a change happening between
313 the beginning and the end of a RunL could go undetected
315 Removed the source-code dependency on the EChangesAll enum,
316 which makes the source code build compatible with E32 105
317 (and with any further changes to this enum that E32 might
318 introduce in a future version)
320 Updated test code to match.
325 (Made by DavidW, 6 May 1997)
327 Uses E32/101, F32/069, STORE/042, E32TOOLS/063
329 Backwards binary compatible with 072, but not forwards
331 WINS release, debug, unicode release and unicode debug
332 ARM release, debug, unicode release and unicode debug
334 Size of BAFL.DLL: 28,284 bytes (ARMREL)
335 35,440 bytes (ARMDEB)
337 1. New header file BAERRHAN.H, defining the interface of an
338 abstract "error handler"
340 New function CBaActiveScheduler::LeaveForErrorHandler
341 which takes a const CBaErrorHandler* pointer
343 The implementor of the DisplayError function in the concrete
344 subclass of CBaActiveScheduler (or something to which that
345 delegates, eg the implementor of CEikonEnv::HandleError) must
346 follow the contract that -
348 - when the Leave has unwound, the CBaErrorHandler object gets
349 sent a HandleError() function. This function is declared
350 pure virtual at the CBaErrorHandler level.
352 There are two parameters to this function - a reference to an
353 "error text" descriptor, and one to a "context text"
354 descriptor. The function can fill these in with text that
355 the environment will then display.
357 The HandleError() function should return one of
359 EAlertDisplay - use the standard alert dialog
360 EInfoDisplay - use an info message
361 (context text will be ignored)
362 ENoDisplay - no display required
363 (both text buffers will be ignored)
364 EErrorNotHandled - fall back to standard processing
366 Some test code for CBaErrorHandler has been added to T_SCHED
368 ** Note that this BAERRHAN.H is an enhancement to the copy of
369 this file provisionally contained in EIKON 183. In order to
370 move up to BAFL 073, you must also move up to EIKON 184
372 2. Removed the last remaining scare comments from BAFL source code
374 3. Provided explicit enumeration for all the panics in BAFLPAN.H
376 4. Tweak to T_RSC test code to cope with the file copied from
377 ROM to RAM nowadays ending up as read-only (bad news if you
378 want to run the test more than once)
380 *** Known limitation - the test code fails to build cleanly for
381 Unicode (WINS) and so several of the test apps fail. No problems
382 with any of the Narrow builds or test code, though
388 (Made by AjThoelke, 30 April 1997)
390 1. Uses E32/101, F32/069, STORE/042, E32TOOLS/063
392 Backwards binary compatible with 071, but not forwards:
394 Build against 072 only if you use CSoundPlayer::PlayTone() or
395 SoundUtilities::PlayTone()
396 Build against 071 if you use CClipboard::Clear()
397 Otherwise build against 069
399 WINS release, debug, unicode release and unicode debug
400 ARM release, debug, unicode release and unicode debug
402 Size of BAFL.DLL: 28,252 bytes (ARMREL)
403 35,392 bytes (ARMDEB)
407 1. Fixed SW-4266. Incorrect assert in matcher code.
411 2. Fixed SW-4477. KErrLeaveNoAlert is passed on to
412 CBaActiveScheduler::DisplayError() for EIKON to cancel busy messages.
416 3. Fixed SW-4619. Sound files are not assumed to have the default extension
419 Note for ROM builders: Alarm samples in Z:\System\Alarms\ should not have
420 the extension ".snd" any more. They will still work, but the public
421 alarm name will be reported as "Soft Bells.snd" rather than "Soft Bells"
422 for example. (The files released as BAFL ALARMS have not changed their
423 names and still have a .snd extension)
425 4. Fixed SW-4610. Ensure that the sample is left in a valid state when
426 trying to complete the recording when in a Disk Full situation.
428 5. Implemented SW-4007. Two new services are provided by BAFL.
430 void CSoundPlayer::PlayTone(TInt aFrequency,TTimeIntervalMicroSeconds32 aDuration,TInt aAmplitude)
432 This makes the player play a sine-wave generated tone on the sound
433 device at the frequency and amplitude specified for aDuration.
434 Completion is notified via the observer as for other CSoundPlayer
437 TInt SoundUtilities::PlayTone(TInt aFrequency,TTimeIntervalMicroSeconds32 aDuration,
438 TInt aAmplitude,TDeviceVolume aVolume)
440 This service opens and configures the sound device and plays a sine-wave
441 generated tone as specified, then closes the device. The function only
442 returns after the tone has finished playing.
444 The TDeviceVolume parameter maps onto the sound device volume settings.
445 Experimenting with the device volume and amplitude values is recommended
446 for getting a good tone volume...
451 (Made by AjThoelke, 24 April 1997)
453 1. Uses E32/099, F32/069, STORE/042, E32TOOLS/063
455 Backwards binary compatible with 070, but not forwards
457 WINS release, debug, unicode release and unicode debug
458 ARM release, debug, unicode release and unicode debug
460 Size of BAFL.DLL: 27,748 bytes (ARMREL)
461 34,844 bytes (ARMDEB)
463 2. Added new exported function
465 static TInt CClipboard::Clear(RFs&);
467 This will clear the clipboard of its contents. Initially it will
468 try to do this by truncating the file, if this fails then it will
469 attempt to delete the file. I the clipboard cannot be cleared the
475 (Made by AjThoelke, 22 April 1997)
477 1. Uses E32/099, F32/069, STORE/042, E32TOOLS/063
479 Binary compatible with 069
481 WINS release, debug, unicode release and unicode debug
482 ARM release, debug, unicode release and unicode debug
484 Size of BAFL.DLL: 27,564 bytes (ARMREL)
485 34,656 bytes (ARMDEB)
487 2. Fixed SW-3879. Over-aggressive asserts have been modified to handle
488 abort states in CSoundData objects, and more graceful handling of
489 serious file server failures (i.e. not panicing).
494 (Made by AjThoelke, 16 April 1997)
496 1. Uses E32/098, F32/068, STORE/042, E32TOOLS/063
498 Binary compatible with 068
500 WINS release, debug, unicode release and unicode debug
501 ARM release, debug, unicode release and unicode debug
503 Size of BAFL.DLL: 27,504 bytes (ARMREL)
504 34,572 bytes (ARMDEB)
506 2. New Uid scheme adopted for MARM releasables. For MARM, requires
507 E32 098 for anything other than narrow release.
509 3. Refixed SW-2836. The relevant parties have been beaten into submission:
511 a) F32 will not report changes when the first 16 bytes of a file
514 b) The clipboard has reverted to the 065 behaviour: try to open,
515 if that succeeds truncate the file and carry on, if it fails
518 c) The Shell will hold off from scanning for a short delay
519 before checking what's happened to allow files to have their
520 header written before the Shell interrogates their type.
522 d) Components which are too slow even for this should be using a
523 temporary file to write to in the first place, and rename it to
524 the final destination once it is good (and typed). Temporary
525 files do not cause change notification.
527 4. Revert following failure on CSoundData has been added to CommitHeaderL(),
528 ExternalizeL() and SaveL(). Previously a seek would have been required
529 to force it to revert.
534 (Made by AjThoelke, 14 April 1997)
536 1. Uses E32/097, F32/067, STORE/041
538 Binary compatible with 067
540 WINS release, debug, unicode release and unicode debug
541 ARM release, debug, unicode release and unicode debug
543 Size of BAFL.DLL: 27,364 bytes (ARMREL)
544 34,452 bytes (ARMDEB)
546 2. Fixed the T_SNDDA bug. I had been testing against BC test executables,
547 which did not pick up that the constant KSoundDataChunkLength had been
548 mangled (8 instead of 800). This would have also caused CSoundSampler
549 and CSoundPlayer to be broken.
554 (Made by DavidW, 13 April 1997)
556 1. Uses E32/097, F32/067, STORE/041
558 *Not* binary compatible with any previous version
559 (But source compatible with 065)
561 WINS release, debug, unicode release and unicode debug
562 ARM release, debug, unicode release and unicode debug
564 Size of BAFL.DLL: 27,364 bytes (ARMREL)
565 34,452 bytes (ARMDEB)
567 2. Consolidated some code from CONE's CCoeActiveScheduler into
568 BAFL's CBaActiveScheduler (shame it will never make it all
569 the way into CActiveScheduler)
571 Virtual function DisplayError() defined in CBaActiveScheduler
572 no implementation at BAFL level
574 The CActiveScheduler function Error() now has the following
575 implementation in BAFL:
577 EXPORT_C void CBaActiveScheduler::Error(TInt aError) const
579 if (aError==KLeaveExit)
580 User::Leave(KLeaveExit);
581 if (aError==KLeaveWithoutAlert)
583 DisplayError(aError);
586 New function DisplayExtendedError(), as follows
588 EXPORT_C void CBaActiveScheduler::DisplayExtendedError(TUid aComponent,TInt aErrorNumber)
590 CBaActiveScheduler* pS=((CBaActiveScheduler*)CActiveScheduler::Current());
591 pS->iExtendedError.iInformation=EFalse;
592 pS->iExtendedError.iComponent=aComponent;
593 pS->iExtendedError.iErrorNumber=aErrorNumber;
594 pS->DisplayError(KErrExtended);
597 The difference between DisplayExtendedError() and eg
598 ExtendedLeave() is that the former calls Leave first, and
599 relies on the Error() function being called later.
600 Whereas the former calls the Error() function directly,
601 and is then free eg to retry the current operation.
603 So, the assumption is that the Error() function will be
604 implemented "with wait".
606 3. New test app T_SCHED testing the CBaActiveScheduler class
608 4. Put two virtual Reserved_xxx() functions into CBaActiveScheduler
610 5. Changed KUidBaflDll from 0x10000043 to 0x100004e to avoid a clash
612 6. Fixed the MNT VALID verb
616 * the way DEF files get archived for WINS looks wrong
618 * test code T_SNDDA hangs under ARM (and runs horribly horribly
619 slowly under WINS) - note this is true in 066 too and isn't
620 anything I have introduced
625 (Made by AjThoelke, 11 April 1997)
627 1. Uses E32/097, F32/067, STORE/041
629 To all known purposes: Binary compatible with 065.
631 WINS release, debug, unicode release and unicode debug
632 ARM release, debug, unicode release and unicode debug
634 2. The protected interface of CSoundData, CSoundSampler and CSoundPlayer
635 has been privatised. This is for future BC purposes, and they couldn't
636 usefully be derived from anyway.
638 3. System file and path names within BAFL (e.g. the clipboard) now use
641 4. CSoundSampler is now using a block length of 800 samples (previously
642 400). This means that samples recorded with BAFL 066 will not be
643 playable with 065, but older samples will play happily on 066.
645 5. CSoundSampler has gained TInt Volume() and void SetVolume(TInt).
646 These squeeze an extra bit of data into the persistent data of a sound
647 sample: the player/sampler do not utilise this information, it is
648 provided for the RECORD app.
650 The limitation is that the repeat count is limited to 65535 (big deal
651 eh?), and the volume stored must be in the range 0-65535.
653 6. Unfixed SW-2836. The file system now reports changes even if the header
654 of a file is re-written so the scheme in place was not effective.
655 Clipboard is still being replaced every time now.
660 (Made by AjThoelke, 9 April 1997)
662 1. Uses E32/096, F32/065, STORE/040
664 Binary compatible with 064 except for one thing (see 2).
666 WINS release, debug, unicode release and unicode debug
667 ARM release, debug, unicode release and unicode debug
669 2. The two extended errors for clipboard use have been removed. This upsets
670 the enum ordering in BAERROR.H and introduces an incompatibility if you
671 use this enumeration. I understand this affects almost nobody: certainly
672 no-one who has yet built against BAFL 064, and so have been advised to
673 let this one slip in at this stage. So if you do include BAERROR.H, make
674 sure you compile against 065 not 064.
676 3. All MARM releasables are pre-PETRAN'd, so get rid of your obey file
679 4. Sampled alarm sounds now live in \system\alarms\, previously
680 \system\sounds\, as this better reflects what this directory is used
683 5. Fixed bug SW-2836. The clipboard now attempts to open the clipboard file
684 and truncate it, rather than always replace it, in order to prevent the
685 clipboard generate unecessary change notification.
687 6. Fixed bug SW-2721. If the clipboard store has no root stream when
688 destroyed, the clipboard file is deleted. This handles any case of
689 failure during copying to the clipboard. Note that the first thing that
690 happens during a paste operation is that the current contents of the
691 clipboard are discarded.
693 7. Modified the behaviour of the clipboard when trying to read when the
694 clipboard does not exist, is being copied to, is corrupt or otherwise
695 damaged. In all these situations an empty CClipboard object is returned
696 from CClipboard::NewForReadingL[C](). More serious errors (or OOM) are
699 These situations are all considered to be equivalent to there being no
700 data to paste from the clipboard, and will therefore be handled already
701 by the code which attempts to find some suitable data type in the
702 clipboard stream dictionary.
704 This has resulted in the two clipboard extended errors being no longer
709 WINSCPR contains DEF files for all WINS builds of compressor DLLs.
710 EMARMCPR contains FRZ files for all MARM builds of compressor DLLs.
712 They require that the DLLs exports a function with the prototype:
714 CCompressorBase* NewCompressorL();
716 See the dummy compressors which are part of the BAFL source for examples
717 of how to build them for WINS and ARM: WINS adds a /def option to the
718 linker command line, MARM uses freeze file technology.
720 These releaseables are extracted to \epoc32\release\wins and
721 epoc32\release\marm as part of MNT GETREL.
726 (Made by AjThoelke, 7 April 1997)
728 1. Uses E32/096, F32/065, STORE/040
730 Binary incompatible with 063.
731 Source compatible with 063 with the exception of the CFindFileByType
734 WINS release, debug, unicode release and unicode debug
735 ARM release, debug, unicode release and unicode debug
737 Further review for the purposes of binary compatibility issues and
738 conversion from export to inline has resulted in more changes.
740 2. WINS builds are now link-by-ordinal.
742 3. MARM builds now incorporate type-safe linkage: BAFL's uid3 is 0x10000043.
744 4. Added CBaflUtils::NearestLanguageFile(RFs& aFs,TFileName& aFileName).
745 This has been taken from the EIKON utility of the same name. The last
746 two characters of the filename are replaced with the language code if
747 such a file exists, otherwise the name is left unchanged.
749 5. CFindFileByType now has the following API:
751 CFindFileByType(RFs& aFs);
753 TInt FindFirst(const TDesC& aName,const TDesC& aDir,const TUidType& aType);
755 const TEntry& Entry() const;
756 const TParse& File() const;
758 Following construction, the object can be used for mulitple finding
761 To initiate a find, call FindFirst(): the name can have wild
762 cards, any path information not in aName is taken from aDir. A file type
763 is also specified in aType. For any Uids in aType which are not KNullUid,
764 a matching file will have the same Uid in that position. i.e. to find
765 document files use TUidType(KNullUid,KUidAppDllDoc).
767 FindFirst() returns KErrNone if it has found a match, FindNext() will
768 continue to search for the next matching file. KErrNotFound is returned
769 when there are no more matches, any other return is an error code.
771 When a matching file has been found, Entry() returns the TEntry for that
772 file, and File() returns a TParse object containing the parsed full name
775 The following changes do not affect source compatibility:
777 6. CEnvironmentChangeNotifier now takes a const TCallback& in its NewL()
778 and Set() members. Previously took TCallBack&.
780 7. Various exported functions are now inline as befits their purpose.
782 8. CDesC8Array constuctor is now protected, CDesC8ArrayFlat has a exported
783 destructor to reduce extra vtable generation in any sub-classers. Ditto
784 for CDesC8ArraySeg, and the unicode variants.
786 9. TLibAssoc has a general base class TLibAssocBase, to hold the common
787 code, reducing the template generated code, and also removes the
788 templated assertion (now in TLibAssocBase).
790 10. Improved the performance of the TResourceReader class.
792 11. Factored common code in RIncrMatcherBase to reduce code volume.
797 (Made by AjThoelke, 2 April 1997)
799 1. Uses E32/095, F32/064, STORE/040
801 Binary compatible with 062
803 WINS release, debug, unicode release and unicode debug
804 ARM release and debug
806 Following full review of BAFL code, I have fixed some bugs (see below)
807 and tidied some other code resulting in some code savings. There are a
808 few outstanding binary-incompatible changes that are on the waiting list.
810 2. Fixed CEnvironmentChangeNotifier to close the RChangeNotifier when it is
813 3. Fixed RTextBuf to use the delete [] operator as it is using the new []
814 operator. Previously it was not using the array delete operator.
816 4. Major fixes to SoundUtilities: No non-leaving functions can now leave,
817 no alloc heaven following failures at any stage, private static members
818 are now local static to the source file and removed from the class
821 5. Fixed SW-2001. Duplicate names in the list of alarm sounds or samples
822 are ignored. This matches the behaviour of CSoundPlayer: as soon as a
823 viable sound is found which matches the name, it is played.
825 Note that this means it though may be possible to save an sample as an
826 alarm called "Chimes", it'll never get played as an alarm while an
827 algorithmic sound of the same name exists.
829 6. Revised code for CFindFileByType to attempt a reduction in stack usage
830 by TFileName and TParse objects, to reduce code size, and to eliminate
831 problems when handling failures.
833 7. Removed unecessary (inline) copy constructors from TCellRef and
836 8. Included s32file.h into baclipb.h as CClipboard::Store() requires the
837 derivation relationship between CFileStore and CStreamStore.
839 9. CClipboard::CopyToL(const TReal&) now commits the stream it has written.
841 10. The clipboard has been moved from the very strangely named
842 c:\system\clipbd\main.sto to the somewhat more sensible sounding
843 c:\system\data\clipboard
845 11. Beefed up CSoundData's handling of in-place sample files being corrupt
846 or requiring truncation when opened or following (serious) failure.
852 (Made by AjThoelke, 26 March 1997)
854 1. Uses E32/094, F32/063, STORE/038
856 Binary compatible with 061
858 WINS release, debug, unicode release and unicode debug
859 ARM release and debug
861 2. Fixed a bug when recording to the end of a just-opened sample, which
862 resulted in data loss, and end of file errors.
864 3. Correctly update the current position during recording when a compressor
867 4. Avoid a panic from CActive when abandoning the background indexing, and
868 ensure the sampler restores its active priority as necessary.
870 5. Allow UseSeekIndexL to be called any number of times without causing
871 stray signals, or other nasty problems.
876 (Made by AjThoelke, 26 March 1997)
878 1. Uses E32/094, F32/063, STORE/038
880 Binary compatible with 060 if you are not the RECORD app.
882 WINS release, debug, unicode release and unicode debug
883 ARM release and debug
885 2. Renamed CSoundPlayerRecorder to CSoundSampler, similarly for its
888 3. Fully construct the CTimer part of CSoundSampler, previously this
889 caused a panic when playing a sample.
891 4. Added CSoundSampler::TruncateL() to truncate the sample to the current
894 5. Implemented a compressed sound data manager. This can use a temporary
895 index to enable fast random seeking in the sample.
897 The default is not to have one, as it is not needed for playing sounds,
898 enabling it will result in an index being built as the sound is
899 played (and so can cause OOM errors while playing). Compressed samples
900 do not allow random seeking without the index, only seeking to the
901 beginning or end of the sample.
903 CSoundSampler::UseSeekIndexL() will enable the indexing, and will cause
904 the sampler to build the index in the background, which is abandoned
905 whenever another operation is started.
907 6. Generally improved the robustness of the sampler when recording
908 terminates in resticted memory or disk space scenarios, and ordered the
909 file header re-writes to maintain document integrity in the presence of
915 (Made by AjThoelke, 25 March 1997)
917 1. Uses E32/094, F32/063, STORE/038
919 For most people: Binary compatible with 059.
920 Binary incompatible if you use any of the functions
922 CSoundData::NewL(CStreamStore&,TStreamId);
923 CSoundPlayerRecorder::NewL(MSoundPlayerRecorderObserver&,CStreamStore&,TStreamId);
924 CSoundData::SaveToL(RFile&);
925 CSoundPlayerRecorder::SaveToL(RFile&);
927 (This should only be the RECORD app).
929 2. The two NewL() functions above now take a const CStreamStore&.
931 3. The SaveTOL() functions have morphed into:
933 SaveL(RFile& aNewFile,TBool aUseNewFile=EFalse);
935 The sample is saved into the new file passed in. If aUseNewFile is true,
936 then the sampler starts using the new file, and closes the old file. If
937 false (the default) the new file is closed following this function.
939 On any failure, the new file is closed automatically.
941 4. Added CSoundPlayer::SoundType() returning TSoundType, which is one of
942 ESoundAlgorithmic and ESoundSample. This reports the type of sound
943 last played (or currently playing) using this object.
945 5. Exported SoundUtilities::SoundStreamIdL(CPersistentStore&) to extract
946 the sound stream id from the stream dictionary in sound samples.
951 (Made by AjThoelke, 24 march 1997)
953 1. Uses E32/094, F32/063, STORE/038
955 Binary incompatible with 058.
957 WINS release, debug, unicode release and unicode debug
958 ARM release and debug
960 The main thrust of this release is to re-engineer the sound services to:
962 * enable in-place recording of sound samples
963 * modify the sound sample data format to improve seek performance
964 * remove the TRequestStatus asynchronous API.
966 Meanwhile I have totally revamped the API for the CSoundPlayer,
967 CSoundPlayerRecorder and CSoundData classes. Code which does not use any
968 of the sound classes or utilities will not need any modification to use
969 this new version of BAFL.
971 This release comes not entirely tested, and not entirely complete, in
972 order to freeze the API now, rather than later. Binary compatible
973 releases will be forth coming as the missing code is added and tested.
977 2. Transferred the utility EikThread::ExtractAppNameFromFullName(...)
978 from EIKON to BAFL, now BaflUtils::ExtractAppNameFromFullName(...).
979 This will be removed from EIKON as and when appropriate.
983 3. CBulkData has been removed from the public API.
985 4. CSoundPlayer is similar to its previous API:
987 static CSoundPlayer* NewL(MSoundPlayerObserver& anObserver,RDevSound& aDev);
988 void PlaySoundL(const TDesC& aName,RFs& aFs);
989 void PlayFileL(const TDesC& aName,RFs& aFs);
990 void PlayAlarm(const TDesC& aName);
991 void PlayAlarm(TInt aAlarmIndex);
992 void PlayFallBackAlarm();
994 TBool IsPlaying() const;
996 To replace the I/O Semaphore API for notification of completion, an
997 MSoundPlayerObserver object is required. It's virtual PlayComplete(TInt)
998 member is invoked when the player has finished playing any sound,
999 passing any completion status as a parameter. Note that the player
1000 still requires an active scheduler to be running to operate, but is no
1001 longer itself an active object.
1003 Playing alarm sounds is guaranteed to not fail. PlayAlarm(const TDesC&)
1004 attempts to find an alarm of the given name and play it, otherwise the
1005 fall-back alarm is played. PlayAlarm(TInt) is as before, playing the
1008 PlayFileL(...) will try to locate the named sound file and play it,
1009 leaving on any error. PlaySoundL() will first try to find an alarm of
1010 the given name, and if none is found will try to find the named sound
1011 file, reporting an error if no such file exists.
1013 Stop() will synchronously terminate the current sound playing, and will
1014 not cause the observer to be notified.
1016 IsPlaying() just reports whether a sound is currently being playing by
1019 5. CSoundData API has totally changed. It supports embedded or in-place
1020 sound samples. It no longer uses temporary file for temporary storage, but
1021 a chunk instead. This means that spontaneous death will not eat up
1022 precious disk (& memory) space.
1024 The API is now expressed entirely in terms of byte positions within
1025 the Alaw Sound sample, but provides conversion functions to and from
1028 Uncompressed sound data now supports immediate seeking to any position
1029 in the sample. The compressed data manager has not been implemented yet,
1030 and, selecting a compressor will currently result in uncompressed data.
1032 Recovery on failure and truncation of the sample in the face of OOM or
1033 DiskFull errors are still being worked on, and have yet to be tested.
1035 6. CSoundPlayerRecorder has had its API changed as well. It also uses an
1036 observer, rather than I/O semaphore to mark completion of its services.
1037 This class has not been tested yet.
1039 7. CCompressorList has had some of its members name's changed.
1040 Functionality is unchanged and still obvious.
1045 (Made by SteveG, 12-Mar-1997)
1052 1) Uses new sound driver functions for determining how many bytes have
1053 been played, needed as the Record app now sets the sound drivers
1054 buffer to 8000 bytes, and there will nearly always be 1 second of
1055 sound remaining to be played when the end of the sample sound file
1060 (Made by SteveG, 04-Mar-1997)
1071 1) Fixed panic when cancelling sounds played by PlaySoundFileByName. This
1072 was not initialising the iDevSound property
1076 (Made by SteveG, 03-Mar-1997)
1087 1) Altered the sound file format to store the uncompressed length of
1088 each chunk, to speed up the seek functions. They no longer need
1089 to read the chunk data in order to work out the duration of the
1094 (Made by DavidW, 02-Mar-1997)
1105 Not binary compatible with any predecessor
1107 Size of BAFL.DLL: ArmRel 28,596 bytes, ArmDeb 32,036 bytes
1109 1) Upgraded to the latest releases of all upstream components
1111 2) Removed the TBoundedArray classes (and their test code)
1113 3) Removed the box layout classes (and their test code)
1115 4) Removed the function BaflUtils::ExtractMnemonic()
1117 5) Removed the function TResourceReader::SetJustBuffer()
1119 6) Brought the contents of \bafl\src\empty.cpp up to date
1121 7) Removed all reference to the #define __BAFL_B6__ and removed all
1122 code branches in which this macro was *not* defined
1124 8) Added the class CBaActiveScheduler, containing code that ought to
1125 migrate shortly into CActiveScheduler (and User and DThread). This
1126 contains support for a grown-up error number system for the first
1127 time. For further details, see the discussion in the EPOC32 Software
1128 Design database on Notes
1130 9) Moved the functions Exit() and LeaveNoAlert() from
1131 CCoeActiveScheduler to CBaActiveScheduler (and slightly changed their
1132 implementation, to avoid some theoretical problems)
1134 10) Added the header file BAERROR.H containing Bafl-specific error
1135 numbers, for the classes RResourceFile and CClipboard; improved the
1136 code in BARSC.* and BACLIPB.* by taking advantage of this new scheme
1138 11) Changed the TInt ConfirmSignature function of RResourceFile into
1139 a void ConfirmSignatureL function instead. If the resource file
1140 fails to have the expected signature, this function now does a custom
1141 KUidBaflDll Leave with KErrBaflWrongResourceFileSignature
1143 12) Changed the CClipboard class to do a custom KUidBaflDll Leave
1144 with KErrBaflClipboardDoesNotExist in the case of (you guessed it)
1145 the clipboard not existing. The Leave sets the "Information" bit, so
1146 that the UI (ie Eikon level) should display an info message rather
1147 than an alert dialog
1149 13) Modified the test code T_CLIPB in line with the above changes.
1151 Some limitations to report:
1153 The WINS UREL version of T_SPYRC intermittently crashes inside an
1154 ASSERT_DEBUG in the sound driver.
1156 T_CELL gets lines 33-38 marked as "Unreachable code" when compiling
1157 for Release mode under WINS.
1159 I suspect the class CFindFileByType ought to be removed too, being
1160 superseded by F32 functionality.
1162 The T_BAFL.IBY hard-wires the location of T_RSC.RSC to a REL
1163 directory, so it doesn't manage to build an ArmDeb ROM image unless
1164 you've already built the ArmRel one.
1166 I had real difficulties in persuading the NMAKE for the ArmDeb build
1167 to run at all, and only got it to run when I deleted all files on the
1168 drive and re-installed from the network. Something needs
1169 investigating further here!
1174 (Made by MartinB, 28-Feb-1997)
1185 1) Changed ReadALawData() and Read() to take a TBool to indicate
1186 whether to read the data or just perform a seek to the file
1187 position that would result if that read took place. This is
1188 used to dramatically decrease the time taken when seeking to
1189 a time in a sample. SeekToTime() now calls ReadALawData passing
1190 in EFalse to indicate not to read the data. However, if a
1191 compressor is in use, then the read must take place and the
1192 TBool argument is ignored. (SteveG)
1194 2) Made some improvements to the TCellRef and TRangeRef classes. In
1197 a) Inlined some functions
1198 b) Default constructors no longer initialize values to zero.
1199 c) Removed unnecessary operator=() functions.
1204 (Made by Natasha, 07-Feb-1997)
1216 1) The new clipboard functions CopyToL(const TReal& aReal) and
1217 PasteFromL(TReal& aReal) were mistakenly declared as IMPORT_C in the
1218 source file - changed them to EXPORT_C.
1223 (Made by SteveG, 03-Feb-1997)
1235 1) Changed ReadDataL() in BABUKDA.CPP to use the store functions
1236 for copying to and from stores and files, rather than copying
1237 256 bytes at a time in a tight loop. This increase dramatically
1238 the speed of creating a temporary sample file and saving samples
1239 (thanks to AndrewT for this)
1243 (Made by PeterJ, 30-Jan-1997)
1254 NOT binary compatible with BAFL 050.
1257 BAFL.DLL is 36648 bytes long (release), 41164 (debug).
1260 The box layout test code T_BLO is temporarily removed from the
1261 rack list because it provokes an internal error in the current GCC
1268 CLEAN verb added to the MNT command set.
1273 CClipboard member functions to copy/paste real numbers. These are included
1274 to provide common functionality. There are architectural questions to answer
1275 here. Is this the right place for such functionality? Should there be provision
1276 for other low level data types?
1281 A. Changes to CSoundData
1282 -------------------------
1284 1) CSoundData::SeekToTime to take const reference argument (instead of const)
1285 2) Added EBafPanicBulkDataNoDestination which is used rather than
1286 EBafPanicBulkDataNoDataExist when no destination is specified in CopyDataToL()
1287 3) Grouped similar functions in header for CBulkData
1288 4) The function CBulkData::DeleteDataFromTheEnd(TInt aLength) now
1289 checks for a -ve value of length.
1290 Added TInt TruncateDataAt(TInt aPosition);
1291 to delete data from a given offset from the start.
1292 5) Added various private utility functions to CBulkData:
1293 TBool DoesFileExist(const TDesC& aFullFileName) const;
1294 void EnsurePathExistsL(const TDesC& aFullPath) const;
1295 void MoveFileL(const TParseBase& aDest,const TParseBase& aSource);
1296 TPtrC BulkDataTempFilePath() const;
1297 TPtrC TemporaryFile() const;
1298 void SetTemporaryFile(const TDesC& aName);
1299 void InternalizeL(RReadStream& aStream);
1300 6) CBulkData::SaveToNewStoreL now uses 1 TParse, instead of 2 TParses and a TFileName
1301 7) CBulkData::SaveToNewStoreL renamed to MoveToNewStoreL()
1302 It now deletes the old file if it was on the same drive as the new,
1303 as well as if on different drives.
1304 Note that this function will delete all data
1305 under error circumstances.
1306 8) Made internal use of CBulkData::IsReady... functions
1307 9) CBulkData::DeleteDataFromTheEnd() and truncate now return KErrNotReady if
1308 there is no data, rather than KErrNotFound.
1310 B. Changes to CSoundData
1311 -------------------------
1313 1) Grouped similar functions in header for CSoundData
1314 2) DataPlayTime renamed to SamplePlayLength
1315 DataBeingreadTime renamed to CurrentPosition
1316 3) Added TotalPlayLength which takes into account trailing silence and repeats
1317 4) Added various private utility functions
1318 TCompressorPtr DoCreateCompressorL(TUid aUid) const;
1319 TTimeIntervalMicroSeconds AlawBytesToMicroSeconds(TInt aBytes) const;
1320 TTimeIntervalMicroSeconds operator+(const TTimeIntervalMicroSeconds& aLeft,const TTimeIntervalMicroSeconds& aRight)
1321 5) Set a maximum of KSoundDataMaxReadChunkPlayLengthBytes=10000000
1322 for reading and writing chunks, to help check for corrupted data. This number should in fact never
1325 C. Changes to CSoundPlayerRecorder
1326 -----------------------------------
1328 1) Grouped similar functions in header for CSoundPlayerRecorder
1329 2) Extensive renaming of functions to clarify their roles.
1330 Removed most ...SoundData.. from function names since this class
1331 can no longer deals with any other kind of data.
1332 3) Dropped IsSoundDataPresent since it was not being used anywhere
1333 4) PrepareForUpdateL renamed PrepareForRecordL
1334 5) SaveSoundDataTo becomes MoveSoundDataTo, since old data is deleted. Note that
1335 the new store still needs to be opened before it can be used.
1337 D. Changes to CSoundPlayer
1338 ---------------------------
1340 1) Uses two new private functions
1341 PlayAlarmSoundByName
1343 2) inlined PlayFallBackAlarmSound to use PlayAlarmSound
1345 E. Changes to SoundUtilities
1346 -----------------------------
1348 1) SoundUtilities::Populate makes use the new CDescArray::InsertIsq functions
1349 2) SoundUtilities::SoundFileByName no longer validates that a file contains
1350 a sound data stream. This function is now provided separately. This is to
1351 help solve a problem in which corrupted files could not be deleted.
1352 3) Added function DoesFileContainSoundDataL which returns true if a sound data
1353 stream was found (It can leave when creating a store or the root stream).
1360 (Made by PeterJ, January 1997)
1371 NOT binary compatible with BAFL 049.
1373 This version was reput at 20:00 ish on 14-Jan-1997 with a bugfix
1374 in the RResource class that caused it to unpredictably reject
1375 a resource binary as corrupt.
1377 Size of BAFL.DLL release is 35,736 (40,072 in debug version).
1379 There remains an outstanding problem with the sound player that
1380 shows up in the test code running under WINS only.
1387 1) Remove the following RResourceFile member functions which have been
1388 deprecated for some time but were left around for binary compatibility.
1390 TInt PositionToResourceL(TInt aResourceId,TInt &aDecodedLen) const;
1391 void ReadResourceDataL(TDes8 &aDes,TInt aReadLen,TInt aDecodedLen) const;
1395 2) template <class T>
1396 inline TBool TLibAssoc<T>::IsNull()
1398 is now a const function. (BALIBA.H)
1400 3) added the following functions to CDesCArray (8 and 16 bit versions)
1402 IMPORT_C TInt InsertIsqL(const TDesC8& aPtr
1403 ,TKeyCmpText aTextComparisonType=ECmpFolded);
1404 IMPORT_C TInt InsertIsqAllowDuplicatesL(const TDesC8& aPtr
1405 ,TKeyCmpText aTextComparisonType=ECmpFolded);
1406 IMPORT_C TInt FindIsq(const TDesC8& aPtr,TInt& aPos
1407 ,TKeyCmpText aTextComparisonType=ECmpFolded) const;
1409 These allow the insertion in sequence of descriptors into an array,
1410 and for finding the descriptors from a sorted array.
1412 Note that this functionailty is already available for CPtrCArray variants.
1413 The test T_PTRCA shows how this is done - it just requires that the user
1414 create and use a : TKeyArrayFix key(0,{sort method});
1417 T_DESCA has been modified to at call these functions and ensure that they
1418 work. It does not stress test them.
1420 T_PTRCA has been modified to show how to call the FindIsq and
1421 InsertIsq functions.
1425 4) Added CClipboard::NewForReadingL(RFs& aFsSession). This is for use
1426 by callers who don't know if the clipboard exists before they
1427 attempt to paste. (BACLIPB.H) Test code added to T_CLIPB.
1431 5) Modifications to allow resource data to be read out of ROM directly.
1432 Affects BARSC and its test code and changes the RResourceFile class
1437 6) Test code now compiles its own resources instead of using
1438 stored resource objects. Affects T_RSC and T_RSREAD.
1439 MNT procedure modified to get an explicit resource compiler
1440 version. (may want to review the role of EIKTOOLS here).
1442 7) Resource file test code now deals with both 8 and 16-bit
1443 text strings generated by RCOMP 3.13 or higher.
1452 (Made by Brendan, 20 December 1996)
1464 2) Upgraded to new components. This release is not binary compatible,
1465 and introduces the following new classes:
1466 CFindFileByType,TLibAssoc<>,CSoundPlayer,CPtrCArray (and variants)
1467 There are likely to be more changes in the sound utilities.
1468 3) Incorporated a CSoundPlayer class from Julian, which is used to play sounds
1469 by name. CSoundPlayerRecorder now only deals with file based sounds and not
1471 - PlayByName() returns an error instead of leaving, to be consistent with the API
1472 to algorithmic sounds.
1473 4) Incorporate CFindFileByType from Julian, making some minor changes
1474 to return the file name and extention of a found file and just the
1475 file name (in TPtrC's).
1476 5) Took advantage of CFindFileByType in the CSoundUtilities
1477 6) Added CPtrCArray arrays - these are similar to CDesCArrays
1478 but store an array of TPtrC's rather than the actual data.
1479 - There is a CopyL function to copy any MdcaArray to a CPtrCArray.
1480 - It can be used instead of CDesCArray in listboxes etc to reduce
1481 duplicating memory, but care should be taken since it can
1482 hold invalid data if the data that the TPtrC's point to, is deleted.
1483 7) Added test code T_PTRCA for class CPtrCArray
1484 8) TLibAssoc<T> class to be used synonomously with a pointer to the
1485 library associated class (ie a pluggable component). It contains a RLibrary
1486 and a pointer to the class that the library has created. When this
1487 pointer class is "deleted"(Unload()), the library is unloaded after the
1488 the class has been deleted - ensuring that the destructor of the class is still
1489 around during the deletion. See the test code T_LIBA for examples of how
1491 - use a "TLibAssoc" instance instead of "CLibraryClass*",
1492 - call "TLibAssoc.Unload()" instead of "delete(CLibraryClass*);"
1493 - call "TLibAssoc.IsNull()" instead if "CLibraryClass*==NULL"
1494 - TLibAssoc can be used with CleanupStack::PushL() and PopAndDestroy() etc.
1495 - TLibAssoc is safe to use in applications because it does not rely on an
1496 active object to unload the libraries.
1497 - TLibAssoc should not be used to unload the Dll inwhich the TLibAssoc class
1498 is defined, because the executed code must be in a different executable.
1499 9) Dropped CLibUnloader
1500 10) Changed sound utilities to compare alarm sound names with a fold comparison
1501 since the file server wouldnt distinguish between the files.
1502 11) Provided public SoundUtilities::PopulateAlgorithmicSoundsL()
1503 and SoundUtilities::PopulateAlarmSoundFilesL()
1504 12) Minor changes to BASNDDA.CPP to prevent possible overlfow errors
1506 13) Minor changes to T_SNDUT.CPP to check that sound files correspond
1508 14) Added TheSoundDev.FlushPlayBuffer() and TheSoundDev.FlushRecordBuffer()
1509 to T_SNDDA to prevent it from failing with KErrInUse
1510 From comments in the test code, it looks as though this test needs to be
1515 Made by Julian, 02-Dec-1996
1517 Uses E32/079, E32UTILS/004, F32/044, STORE/032,
1518 E32TOOLS/048, EIKTOOLS/119
1520 BAFL ARM DLL sizes: 33148 (release) 37140 (debug)
1522 Stay compatible with previous releases.
1524 Use new E32/079 and upward components
1529 1. Checking the drive of the saved file name is the same as the
1530 temporary file's drive name in CBulkData::SaveToNewStoreL() function.
1531 If they are not the same, the CFileMan's Copy() and Delete() functions
1532 will be usedinstead of the RFs::Replace() function as Replace() function
1533 couldn't replace files between different drives.
1538 Made by PeterJ, 02-Dec-1996
1540 Uses E32/075, E32UTILS/004, F32/042, STORE/030,
1541 E32TOOLS/048, EIKTOOLS/118
1543 BAFL ARM DLL sizes: 32908 (release) 36908 (debug)
1545 Main modifications to stay compatible with baser releases.
1547 NB. The debug build test code tends to display some Store
1548 notifier messages. This seems to be a common phenomenon.
1550 The T_SNDDA test code seemed to hang once in the WINS release
1551 build while supposedly playing a sound. Could not reproduce,
1552 but the recent sound driver changes in E32/075 may be relevant.
1557 1. BAFLVER.H once again reflects the release version numbers.
1558 (Thanks to Brendan for pointing this out)
1560 2. TRangeRef::TIter::InRange() is now declared const. (As pointed
1563 3. Instances of KNotFound return values replaced with KErrNotFound
1564 instead. (In incremental matcher code)
1565 Also instances of KErrDoesNotExist replaced with KErrNotFound.
1566 (Bulk data code, sound player code)
1568 4. Obey include files BASE.IBY and EWSRV.IBY updated to reflect
1569 UID3 values now defined in E32. Note that the uid3 parameter
1570 has to be in LOWER CASE before it can be recognised.
1575 1. CClipboard::Store() now returns a CStreamStore instead of a
1576 CFileStore reference.
1581 Made by PeterJ, 23-Nov-1996
1583 Uses E32/074, E32UTILS/003, F32/040, STORE/029,
1584 E32TOOLS/045, EIKTOOLS/118
1586 This is not binary compatible with 045.
1588 Size of ARM BAFL.DLL: 32,896 (Release), 36,384 (Debug).
1593 General modifications required to support the wide-character
1594 build variant of BAFL. This functions in the WINS release but
1595 not yet in the ARM release.
1597 Excruciating details can be found in
1599 file:////sentinel-main/upeterj/japan/notes/code_modifications.html#BAFL_046
1603 1) Base address of the WINS BAFL.DLL changed from 61000000 to
1604 40100000 to conform with MartinB's new allocation scheme.
1606 2) Various minor corrections where generic descriptors were being
1607 used to refer to non-text data.
1609 3) TResourceReader class member functions that were defined in terms
1610 of generic descriptors have been extended to provide explicit
1611 8 and 16-bit data member functions. The caller must decide which ones
1612 to use depending on whether they are meant to be reading text or
1613 binary data. Functions affected are:
1615 ReadHBufCL, ReadTPtrC, ReadDesCArrayL.
1617 4) The CDesCArray and MDesCArray classes were defined in terms of 8-bit
1618 buffers only. This family now has explicit 8 and 16-bit variants:
1620 CDesC8Array, CDesC16Array, MDesC8Array and MDesC16Array.
1622 5) Minor test code changes. T_RSC has a new compare function to allow it
1623 to compare 8-bit resource strings with internally defined text descriptors.
1624 T_RSREAD modified to use explicit 8-bit resource strings. This will be
1625 revisited when the resource compiler supports Unicode strings. UIDs for the
1626 dummy compressor files are now assigned in the make file instead of in
1627 the MNT command file.
1629 6) Changes to MNT.CMD to support Unicode variants of BAFL. Later versions
1630 of BAFL should now be released with MNT BLDUREL and MNT BLDUDEB steps
1631 and the test code exercised after building with MNT BTSTUREL and BTSTUDEB.
1637 Made by DavidW, 11 Nov 1996
1639 Uses E32/074, E32UTILS/003, F32/040, STORE/029,
1640 E32TOOLS/045, EIKTOOLS/118
1642 Retains binary compatibility with 044
1644 Size of BAFL.DLL (ARM):
1645 31,132 bytes (Release), 34,368 (Debug)
1647 Re-put at 11am 12th Nov, with:
1649 *) the class originally called CBaflChangeNotifier renamed to
1650 CEnvironmentChangeNotifier, on the suggestion of MartinT
1652 *) improved T_CNTF test code, from Brenda
1654 *) an update to use the latest version of all system components (not
1655 strictly necessary, except for MARMD ROMs on Proteas with 8Mb of RAM)
1660 1) Added some timing tests for resource file lookup in T_RSREAD
1662 2) Altered the way the RResourceFile class reads resources, to do a
1663 seek-and-read together, rather than a seek followed by a separate
1664 read. This resulted in a 30% speed improvement
1666 3) The two functions ReadResourceDataL() and PositionToResourceL()
1667 of RResourceFile have been withdrawn from the public API (although
1668 empty implementations remain until the next API thaw)
1670 4) Switched to EIKTOOLS/118 and therefore now default to doing a
1671 MARMD release as well as a MARM one (whereas previously the default
1674 5) Simplified ..\tsrc\bld.cmd to use setwhat.cmd
1676 Note that the steps required to build and test a new version of
1679 MNT BLD followed by BTST then RTST for the Ascii Debug variant
1681 MNT BLDREL / BTSTREL / RTSTREL for the Ascii Release variant
1683 MNT ARMREL / ATSTREL / BLDIMG / REPRO for Gcc Release
1685 MNT ARMDEB / ATSTDEB / BLDIMD / REPROD for Gcc Debug
1687 Then MNT PUTREL as usual to release it.
1689 Note that if you are in a binary compatible phase, you need to rename
1691 BAFL.DEF -> BAFL.FRZ *and* BAFLD.DEF -> BAFLD.FRZ
1693 before doing the PUTSRC.
1697 6) New class CEnvironmentChangeNotifier in the new module BACNTF.*;
1698 this is an active object that executes a TCallBack when a change in
1699 TLocale is detected through RChangeNotifier. Midnight rollover is
1700 notified in the same way
1702 7) New test code T_CNTF for the CEnvironmentChangeNotifier class,
1703 testing that the callback gets called when locale is changed and
1704 after midnight crossover.
1709 Made by JulianL, 06 Nov 1996
1711 Uses E32/072, E32UTILS/002, F32/038, STORE/028,
1712 E32TOOLS/045, EIKTOOLS/114
1714 Completely binary compatible with 043
1718 1) Fix bug in CSoundPlayerAndRecorder::PlaySoundByName() function
1719 so that it can play the same name again. Also the
1720 CSoundPlayerAndRecorder's Cancel() operation will close the store
1721 which holds the alarm sound opened by the above fountion.
1726 Made by DavidW, 29 October 1996
1728 Uses E32/072, E32UTILS/002, F32/038, STORE/028,
1729 E32TOOLS/045, EIKTOOLS/114
1731 Upgraded to E32/072 et al.
1732 Note the dependency on E32UTILS for the first time.
1734 Size of BAFL.DLL (ARM):
1735 30,660 bytes (Release), 33,764 (Debug)
1737 Re-put at 12:15pm 4/11/96 including MARMD releaseables; modest
1738 changes were required in the *.?BY and *.CMD files to support this:
1740 *) the value of EXEUID now has to be passed in as a #define to
1741 PREP, rather than being hard-wired in the BAFL.OBY file)
1743 *) MNT GETE32UTILS needed some lines adding to it, to fetch the
1744 MARMD components too
1748 1) Converted to the new WINS directory structure. All INSTxxx verbs
1749 in the MNT.CMD are history
1751 2) Removed the template class MArray<T> as over-complicated for what
1752 it achieved; replaced MArray<TDesC> with MArrayDesC, and renamed the
1753 header file MARRAY.H to BAMDESCA.H; recall that the role of the
1754 MArrayDesC class is to define an abstract interface whereby an "array"
1755 returns references to constant descriptors, without prejudice as to
1756 how these descriptors are stored
1758 3) Renamed the functions of the above class to MdcaCount() and
1759 MdcaPoint(), to avoid name clashes when multiply inheriting from both
1760 a MArrayDesC and a "standard" array (see the example which has been
1761 added to T_DESCA to demonstrate this case)
1763 4) Changed the implementation of CDesCArray to avoid the run-time
1764 alloc inefficiencies of the previous implementation, albeit at the
1765 cost of a thicker class (which publicly inherits functions from
1766 CArrayFixBase that, from a purist point of view, it ought not to);
1767 recall that the role of the CDesCArray classes are to provide an
1768 efficient storage of an array of variable length descriptors, which
1769 are passed into the array as TDesC& and retrieved as TDesC& (const in
1770 both cases); there are CDesCArrayFlat and CDesCArraySeg variants;
1771 whereas the MArrayDesC class only provides "read access" to that
1772 array, the CDesCArray classes additionally provide "write" functions
1773 such as AppendL, Delete, and InsertL
1775 5) The Find() and Sort() functions of CDesCArray now support an
1776 optional TKeyCmpText parameter - which defaults in both cases to
1777 ECmpFolded, with the same behaviour as before
1779 6) Based on some code from Duncan, added the class CClipboard to
1780 Bafl, to replace the classes CReadClipboard and CWriteClipboard that
1781 are currently in EText (but which are about to disappear); this new
1782 implementation utilizes the CStreamDictionary class
1784 Note that this change will *not* require software components like
1785 EText to become dependent on Bafl. That's because EText will supply
1786 functions of the type
1787 CopyToClipboardL(CStreamStore&,CStreamDictionary&,...)
1788 PasteToClipboardL(CStreamStore&,CStreamDictionary&,...)
1789 which operate at a level below that of the CClipboard class itself.
1790 There are Store() and StreamDictionary() accessor functions in
1791 CClipboard to return these components. See the new module BACLIPB.*
1793 7) New test code T_CLIPB which exercises CClipboard
1797 8) Fixed a bug in the InternalizeL() and ExternalizeL() functions of
1798 TCellRef, which were only streaming TInt16's as opposed to TInt32's
1800 9) Added InternalizeL() and ExternalizeL() functions for TRangeRef
1802 10) For completeness, added operator!=() to TRangeRef
1804 11) Updated T_CELL test code to match the above
1808 12) Altered TBulkData::OpenL() to Leave rather than Panic if
1809 incompatible data is found, to allow the application to take
1810 appropriate recovery action
1812 13) Took advantage of RFs::Replace() rather than Rename(), to allow a
1813 temporary bulk data storage file to be on a different drive from the
1814 file it is about to replace
1816 14) The SeekToTime function of CSoundPlayerAndRecorder has been
1817 altered to allow cancellation (eg during a lengthy seek operation).
1822 Made by DavidW, 27 September 1996
1824 Uses E32 069, F32 035, STORE 024, E32TOOLS 042, EIKTOOLS 113
1826 Size of BAFL.DLL (ARM): 28,084 bytes (inside ROM)
1828 Second attempt at B2-platform release for Bafl
1830 No changes apart from going up to E32/069 et al
1835 Made by DavidW, 25 September 1996
1837 Uses E32 068, F32 034, STORE 023, E32TOOLS 042, EIKTOOLS 113
1839 Size of BAFL.DLL (ARM): 28,084 bytes (inside ROM)
1841 1) This is the B2 day release, built in synch with E32/068 et al
1843 2) The API of Bafl will now remain frozen until some time after
1846 3) From Julian: added a new function for CSoundPlayerAndRecorder to
1847 return the compressor UID used by the sound data
1849 4) This is the first Bafl to support a Debug MARM ROM image. To
1850 fetch the additional components necessary to build this, you have to
1851 set the environment variable need_marmd before invoking the GETBLD.
1852 Then the verb MNT ARMDEB builds a debug Bafl.DLL for ARM, MNT ATSTDEB
1853 does the same thing for the test code, and MNT BLDIMD builds a debug
1854 ROM image file, BAF041P?.IMD
1856 5) For reference, inside the ROM, the Debug BAFL.DLL is 31092 bytes
1857 long, compared to 28084 bytes in Release mode
1859 6) So long as need_marmd remains set, the PUTREL puts a MARMD
1860 release component on the network, as well as the standard set.
1865 Made by DavidW, 9 September 1996
1867 Uses E32 067, F32 032, STORE 021, E32TOOLS 040, EIKTOOLS 109
1869 Size of BAFL.DLL (ARM): 31,984 bytes
1871 "Binary compatible" re-release, with the changes to filepaths as
1872 required by the changes in F32/032:
1874 1) The "temp" directory is now c:\system\temp in all builds
1876 2) The path searched for sound compressor DLLs is now \system\libs
1879 3) Added INST INSTDEB and INSTREL verbs to MNT
1881 4) Call MNT INST inside MNT RTST and MNT INSTREL inside MNT RTSTREL
1883 5) MNT MAKEDIR makes several more directories, as are now required
1884 in the emulation drives
1886 6) Changes to the *.OBY files - partly as required by upgrading to
1887 E32TOOLS/040 - note that you now put in REPRO.EXE rather than
1888 REPRO.RAM, and all references to REPRO.RAM can be removed
1890 7) Removed a whole lot of #ifdef Xxx variants code from the test
1891 code, since it can now be the same in all variants.
1896 Made by DavidW, 4 September 1996
1898 Uses E32 066, F32 031, STORE 021, E32TOOLS 039, EIKTOOLS 109
1900 Size of BAFL.DLL (ARM): 31,984 bytes
1904 1) Added two new functions, each called SeekToTime(), to the sound
1905 services classes - one for CSoundData and the other for
1906 CSoundPlayerAndRecorder
1908 2) Modified test code to match
1910 3) Other minor internal changes to sound services code
1914 4) Removed the last trace of *.INL files from \bafl
1916 5) Moved some template code out of line, to avoid downstream
1919 6) MNT TOOLS now presupposes that the tools should be fetched to
1920 \epoc32\tools on the local drive, ie any value of %drv% is ignored
1922 7) The call to PREP in MNT BLDIMG is no longer preceded by a path to
1923 PREP (ie %drv%\tools\); ie I now assume that PREP (in t:\tools or
1924 c:\tools) is in your path and is high enough up it
1926 8) Simplified parts of MNT.CMD by copying things from EIKON, ie the
1927 calls to _GETCOMP.CMD
1929 9) Moved the dummy compressors out of the build of BAFL itself, into
1930 the build of its test code
1932 NB Some of the test code fails under WINS, due to a known defect in
1933 F32, but it all runs fine under GCC.
1938 Made by DavidW, 28 August 1996
1940 Uses E32 V066, F32 V030, STORE V020, E32TOOLS V039
1942 Size of BAFL.DLL (ARM): 31,468 bytes
1944 1) First Bafl release in the post E32/065 world (new directory
1945 structure and all that)
1947 2) Completely rewrote large parts of MNT.CMD. Changed over to the
1948 new sets of released components (but only release the WINS, WINSD and
1949 EMARM sets, together with the WINSDDB debugging files)
1951 3) Re-did every *.MAK file, and removed every *.MDP file from the
1952 LI.PRJ source file listings
1954 4) Took advantage of some of the new Store API to simplify some of
1955 the code and test code (the new way that the RLibrary::Load() et al
1956 functions work helps too!)
1958 5) Another Great Step Forward is that "mnt getcomps" now takes
1959 *much* less time than before (because I no longer need to bother
1960 fetching all these obscure Greek Hebrew etc variants that the Base
1961 team used to package irretrievably bound up with the genuine
1962 articles, but which are now happily separated into their own released
1965 6) Got fed up with *.OBY files being so un-maintainable. The
1966 contents of my BAFL.OBY is now
1968 #define NOCALL nocallentrypoint
1970 romname=baf##ROMVER##ROMVAR##.img
1971 version=0.01(##ROMVER##)
1973 #include "header.iby" /* data definitions */
1974 #include "base.iby" /* standard Base components */
1975 #include "ewsrv.iby" /* text window server */
1977 file=RELDIR\eshell.exe system\libs\eshell.exe NOCALL
1978 file=RELDIR\estor.dll system\libs\estor.dll NOCALL
1980 file=RELDIR\bafl.dll system\libs\bafl.dll NOCALL
1982 #include "t_bafl.iby" /* Bafl test files */
1984 file=RELDIR\d_exc.exe system\progs\d_exc.exe
1986 file=RELDIR\d_gdb.exe system\progs\d_gdb.exe
1987 data=RELDIR\repro.ram system\progs\repro.exe
1989 which ought to improve maintainability.
1991 The files header.iby, base.iby ought in time to become standards,
1992 shared by all downstream components (I'll define other *.IBY files
1993 further down the set of software releases)
1995 7) Note that you *still* need to PETRAN the released file REPRO.EXE
1996 into REPRO.RAM before you can expect to create a repro-able ROM
1998 8) Watch out that you'll get lots of warnings, when compiling under
1999 Gcc, about the HShareBuf class from Store - you can safely ignore all
2000 these warnings, but you ought to pay attention to any others, as per
2003 9) BAFL has a working MNT VALID verb for the first time ever. It's
2006 if not exist ..\valid\nul md ..\valid
2008 call getrel %_vgroup% emarm %_par%
2009 petran %_vgroup%.dll %_vgroup%.net
2010 petran \epoc32\release\marm\rel\%_vgroup%.dll %_vgroup%.bld
2011 pediff -e32 %_vgroup%.net %_vgroup%.bld
2015 which, as you can see, restricts itself to testing the built BAFL.DLL
2016 (Gcc REL version) against one prepared and released earlier. So, go
2017 to a clean drive, type
2019 pgetbld bafl group 038
2024 and you should see the following reassuring message on the screen:
2026 PEDIFF - PE file compare V0.01(039)
2027 E32 image files are identical.
2032 Made by DavidW, 15 August 1996
2034 Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036
2036 Size of BAFL.DLL (ARM): 31,980 bytes
2040 1) Added two new functions to the sound services:
2042 CSoundData::DataBeingReadTime() and
2043 CSoundPlayerRecorder::SoundDataBeingReadTime()
2045 to assist applications to display their playing status
2047 2) Other internal changes to the sound services code and test code
2051 3) Altered the MNT.CMD and BAFL.OBY files of Bafl, bringing them
2052 closer to the model of Nokie's. In particular, MNT BLDIMG now
2053 defaults to producing a P1 (reprogrammable) variant ROM image
2055 4) Added REPRO and FIXREPRO verbs to MNT.
2060 (Made by JulianL, 09 August 1996)
2062 Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036
2064 Size of BAFL.DLL (ARM): 28,004 bytes (With the new Sound service, extra
2065 10K bytes are added).
2067 1) Added new class CBulkData which is an interface to streamed data
2068 that provides fast data manipulation within minimal overhead. The data
2069 is stored in temporary files, which may provide more storage space than
2070 RAM. Also the temporary file can be renamed to a proper saved file name.
2072 2) Added new class CSoundData which provides access to sound data. It is a
2073 specialization of CBulkData, which provides read/write access to the data
2074 and to the header information. The data has to be read as chunks and this
2075 class provides a mechanism for ensuring the chunks are kept in tact and keeps
2076 the total play time correct. The header of the sound data contains the
2077 compressor UID which is used to create relevant compressor to decode or
2080 3) Added new class CCompressorBase which provides the generic interface for
2081 future compressors. The compressors will be used to compress the sound data.
2082 A new CCompressorList class is created to contain an array of names, capabilities
2083 and UIDs of the compressors in the list, which is useful for displaying
2084 informations of the compressors.
2086 4) Added new static class SoundUtilities which can populate a CDesCArray with
2087 alarm (algorithmic) sounds and sound files in the hardwired search path. The
2088 path is *:\SYSTEM\SOUNDS\*.SND. It can also return the full path file name of
2089 the sound data with a given name.
2091 5) The "SoundUtilites" can also populate the CCompressorList with the
2092 available compressors provided by the system. Each compressor appears as a DLL
2093 with the extension *.CPR. Two dummy compressors (DUMCM1 and DUMCM2) have been
2094 created to show the possibility of plugable compressors. Therefore, future
2095 compresssors can be pluged into the system easily. The SoundUtilities can also
2096 return the compressor by searching through the system directory on all drives
2097 with the specified UID. This is particular useful for CSoundData to create
2098 compressor. The MNT's "bld" and "bldrel" commands will automatically attach
2099 the correct UIDs for both dummy compressors. But if you compile the dummy
2100 compressors using MSVC (not MNT's "bld" or "bldrel" commands), you need to
2101 use the E32UID to attach the correct UIDs into their WINS release of DLL
2102 which are in \e32sys directory.
2103 (ie. E32UID /a DUMCM1.cpr 290000001 268435539 299999001
2104 E32UID /a DUMCM1D.cpr 290000002 268435539 299999001
2105 E32UID /a DUMCM2.cpr 290000001 268435539 299999002
2106 E32UID /a DUMCM2D.cpr 290000002 268435539 299999002,
2107 The first UID is temporary as later different builds will be put in different
2108 directorys. The second UID is the KSoundCompressionV1Uid specified in Notes,
2109 The third UID are dummy values set for the dummy compressors. In the future,
2110 the real compressor will put their UID (third Uid) into Notes.)
2113 6) Added new class CLibraryUnloader which is an active object for unloading a
2114 given library when the current activated active object finished. This is particular
2115 useful for the compressors to unload their librarys during destruction phase.
2116 If the library is closed before the destruction completed, an access violation
2117 will occur. Therefore, the compressor requires this library unloader to unload
2118 their librarys after their destruction completed.
2120 7) Added new class CSoundPlayerRecorder which can play and record sound data.
2121 It can also play the alarm (algorithmic) sound. This sound player and recorder
2122 allows user to cancel the play or recording at any time as it is an active object.
2124 8) Added new test codes to test the above new classes ie.
2125 T_BUKDA tests the CBulkData,
2126 T_SNDUT tests the SoundUtilities,
2127 T_SNDDA tests the CSoundData and the use of dummy compressors,
2128 T_SPYRC tests the CSoundPlayerRecorder.
2131 ***Note that when running the test codes on the rack, you will experience crashes
2132 as there is a bug in F32's GetDir() function which cannot find the attached UID of
2133 a DLL. Jal has already found the bug and the next release of F32 will have the
2134 fix. For the time being, when you build the rom image, you copy the EFSRV.DLL,
2135 EFILE.EXE, ELOCAL.FSY and ESHELL.EXE files from r:\BAFL\TEMP directory to your
2136 \WORK\EMARM directory.***
2142 (Made by DavidW, 31 July 1996)
2144 Uses E32 V064, F32 V028, STORE V019, E32TOOLS V036
2146 Size of BAFL.DLL (ARM): 18,876 bytes
2148 *** Re-put 12noon 1st Aug, binary compatible, with a tweak to
2149 BAMATCH.H to avoid Gcc compiler woes downstream ***
2151 Release in synch with E32/064 et al:
2153 1) Changed the interface to the TBoundedArray class so that its
2154 Append function works by reference rather than by pointer, the same
2155 as the arrays in the base
2157 2) Commented out some references to Hufman decompression, since this
2158 functionality no longer exists in TDes.
2163 (Made by DavidW, 9 July 1996)
2165 Uses E32 V063, F32 V027, STORE V017, E32TOOLS V034
2167 Size of BAFL.DLL (ARM): 18,880 bytes
2169 1) Changed the interface to CDesCArray to use const TDesC& rather
2170 than const TDesC*; as well as being "the right thing" to do, this
2171 also helps avoid some annoying Gcc compiler warnings (about taking
2172 the address of temporaries) downstream.
2177 (Made by DavidW, 8 July 1996)
2179 Uses E32 V063, F32 V027, STORE V017, E32TOOLS V034
2181 Size of BAFL.DLL (ARM): 18,880 bytes
2183 The new compiler resulted in a 14.3% codesize reduction (11.7% due to
2184 the compiler improvements themselves, and the rest due to getting rid
2185 of explicit template instantiations)
2187 1) Release compatible with E32/063 etc
2189 2) I've now got -g-Wno-ctor-dtor-privacy after every call to maktran,
2190 to stop going mad on account of idiotic Gcc warning
2192 3) OTOH the other "new" warning, about taking the address of a
2193 temporary, is "a good thing", and I rearranged some (test) code to
2199 (Made by DavidW, 23 May 1996)
2201 Uses E32 V059, F32 V023, STORE V014, E32TOOLS V023
2203 Size of BAFL.DLL (ARM): 22,020 bytes
2205 *** Rebased using J-Day components, 4th June 1996 ***
2207 *** Modest changes to admin files, as required by new components ***
2211 1) Rebuilt compatible with STORE 014.
2216 (Made by DavidW, 20 May 1996)
2218 Uses E32 V059, F32 V023, STORE V013, E32TOOLS V023
2220 Size of BAFL.DLL (ARM): 22,020 bytes
2224 1) New Bafl module BACELL.* containing the classes TCellRef and
2225 TRangeRef which were previously duplicated between the Spreadsheet
2226 engine and the Grid test code
2228 (Note that this requires BAFL to be dependent on STORE, for the first
2229 time, which is a shame in a way, but too bad)
2231 2) New test code T_CELL.CPP to test BACELL
2233 3) New resource header file BADEF.RH containing a few definitions
2234 likely to be of use to users of resource files other than Eikon, eg
2235 the Sheet engine or the Opl translator
2240 (Made by DavidW, 10 May 1996)
2242 Uses E32 V058, F32 V023, E32TOOLS V023
2244 Size of BAFL.DLL (ARM): 20,484 bytes
2248 1) Rebuilt with latest E32(058) etc - on the rack, the test code now
2249 goes like a proverbial rocket
2254 (Made by DavidW, 9 May 1996)
2256 Uses E32 V057, F32 V021, E32TOOLS V022
2258 Size of BAFL.DLL (ARM): 20,996 bytes
2262 1) Changes to class definitions to allow downstream software
2263 components to meet the EMPTY.CPP test, and thereby cut down on
2264 code-bloat under GCC
2266 2) Removed the function MArray::MaCBase() as not required (arising
2267 out of my lack of understanding of C++ casting rules)
2269 3) Renamed TIncrMatcherXxx to RIncrMatcherXxx, since they need to
2270 have a destructor, and TXxx classes should never have a destructor
2272 (actually Colly says RXxx classes should never have a destructor
2273 either, but I'll leave things as they are for now)
2275 4) Even more changes to the RIncrMatcherXxx class tree, eg to avoid
2276 copy constructors being generated on the fly
2281 (Made by DavidW, 1 May 1996)
2283 Uses E32 V057, F32 V021, E32TOOLS V021
2285 Size of BAFL.DLL (ARM): 20,484 bytes
2289 1) New feature added to box layout engine to support a layout being
2290 reset and then recalculated with different parameters in force, eg
2291 allowing an application to determine the largest possible font that
2292 can be used for a set of controls inside a fixed region of screen:
2294 2) Added virtual function ResetAll() to CBox and CBranchBox(), which
2295 recursively reset the sizes of the boxes
2297 3) New test code T_BLO2 for the above features
2302 (Made by DavidW, 26 April 1996)
2304 Uses E32 V057, F32 V021, E32TOOLS V021
2306 Size of BAFL.DLL (ARM): 20,484 bytes
2310 1) Re-release compatible with E32(057) and F32(021): the only change
2311 required was in the *.OBY file, as per the E32 release notes
2316 (Made by DavidW, 15 April 1996)
2318 Uses E32 V056, F32 V020, E32TOOLS V020
2320 Size of BAFL.DLL (ARM): 20,484 bytes
2324 1) Fixed the resource reader class to handle mis-aligned
2325 sub-resources, eg reading a TInt32 following inline after a text
2326 string; added some tests to T_RSREAD to test this case
2328 2) Made a few changes to BABLO.* to make it clean-compile, without
2329 any compiler warnings, in all build variants.
2334 (Made by DavidW, 15 April 1996)
2336 Uses E32 V056, F32 V020, E32TOOLS V020
2338 Size of BAFL.DLL (ARM): 19,972 bytes
2340 Note that ideas on how MNT VALID might work (described in the
2341 previous release notes) now look a bit simplistic; more research in
2342 this area is required
2346 1) Converted the CONE files LAYOUT.CPP, BLOMAIN.HRH and BLOMAIN.H to
2347 be part of BAFL instead, as the files BABLO.* ("Box LayOut" engine),
2348 making adjustments as required to run on ARM; likewise converted the
2349 CONE test code \cone\layout\tlayout to run as \bafl\tsrc\t_blo
2351 2) Converted the CONE files COERSBUF.* to be part of BAFL instead,
2352 as the files BARSREAD.* ("ReSource READer"), making adjustments as
2353 required to run on ARM; wrote new test code T_RSREAD for this class,
2354 which reads resources from the same test file T_RSC.RSC that is used
2357 3) Slimmed down some of the test code T_RSC, since it was boring and
2358 repetitive for little gain, and since T_RSREAD now provides an
2359 independent test of using RResourceFile
2361 4) Added a batch file to run under the Text Shell on the rack,
2362 RACK.BTF (renamed to RACK.BAT in the ROM), with the intended effect
2363 of running all BAFL test programs one after the other; what actually
2364 happens is that they all get run simultaneously, which I suppose is
2365 less boring and exercises the O/S more thoroughly; so the way of
2366 running all test code under WINS is to CD to \bafl\tsrc and to type
2367 "RUN", and the way of running all test code on the rack is to CD to
2368 \test and to type "RACK.BAT".
2373 (Made by DavidW, 12 April 1996)
2375 Uses E32 V056, F32 V020, E32TOOLS V020
2377 Size of BAFL.DLL (ARM): 8196 bytes
2381 1) Added VALID verb to MNT.CMD as follows:
2384 if not exist ..\valid\nul md ..\valid
2386 call getrel %_vgroup% emarm %_par%
2387 fc /b %_vgroup%.dll \work\emarm\%_vgroup%.dll > ..\valid.lis
2392 which can be used as a gauge of whether a BAFL.DLL built on one
2393 person's PC matches that built (under supposedly identical
2394 circumstances) on another person's PC. It's only a "gauge" since
2395 there can be, in my experience so far, up to two blocks of four bytes
2396 each that vary, which are presumably embedded date-time stamps
2398 2) Moved the following modules from CONE to BAFL: BNDARRAY (renamed
2399 to BABNDA), COEDESCA (renamed to BADESCA), and COEMATCH (renamed to
2400 BAMATCH); made alterations as required for an ARM build
2402 3) Renamed CTextBuf to RTextBuf, and CIncrMatcherTextBuf to
2403 RIncrMatcherTextBuf, since whatever else these classes may be, they
2404 are *not* C's (as they do not inherit from CBase)
2406 4) Wrote T_BND test code for TBoundedArray; this showed up the fact
2407 that recent E32 changes (to compress flat buffers when they are
2408 reset) have broken TBoundedArray; fixed this by overriding the
2409 Compress() function, to do nothing
2411 5) Wrote T_DESCA test code for the CDesCArray family
2413 6) Moved Brendan's TMATCH test code for the incremental matchers to
2414 Bafl, renaming it (Bafl style) to T_MATCH, and converting it as
2417 (all four BAFL test programs run successfully on the rack)
2419 7) Deleted the header file BAFLSTD.H as an anachronism - you should
2420 delete any copies you have, eg in \e32inc; in the modern standard,
2421 you should include individual header files like BARSC.H or BNDARRAY.H
2422 directly, as and when you need them
2424 8) Outputting all errors from GCC builds to the same file CERR.TXT
2425 has got to be a mistake; I now output errors to %1.AER files (Arm
2426 ERror files), eg using the batch file \bafl\tsrc\doarm.cmd:
2428 call maktran %1.mak %1.arm
2429 call nmake -f %1.arm /x %1.aer
2431 9) Some long-overdue TLC for files in the BAFL group generally.
2436 (Made by DavidW, 9 April 1996)
2438 Uses E32 V056, F32 V020, E32TOOLS V019
2442 1) Release compatible with E32(056) etc
2444 2) Had to changed all KFileXxx file-open constants to EFileXxx; had
2445 to change EShareReadersOnly to EFileShareReadersOnly, etc
2447 3) Found out that it was daft to set the "-v" flag in BLDIMG.CMD,
2448 since the verbose output seems to end up in a file E32ROM.LOG anyway;
2449 so my \bafl\tsrc\bldimg.cmd is now just
2451 e32rom -gcc bafl.oby
2453 4) Had to replace the line
2455 secondary=\work\emarm\efsrv.exe sys\efsrv.exe
2457 in BAFL.OBY with the pair of lines
2459 secondary=c:\work\emarm\efile.exe sys\efile.exe
2460 file=c:\work\emarm\efsrv.dll sys\efsrv.dll
2465 (Made by DavidW, 22 March 1996)
2467 Uses E32 V055, F32 V019, E32TOOLS V017
2471 1) This is the first release of BAFL that supports an ARM build, and
2472 whose test code runs on the rack
2474 2) In order to build the ARM version of this code, you will need to
2475 have installed the GCC tools on your PC: if you haven't done so
2478 (invokes the t:\tools\tools.bat batch file)
2480 3) You will also need a suitable version of the E32TOOLS: type
2483 4) Apart from this, the standard GETBLD (or MNT GETCOMPS) will fetch
2484 all the software components required to build BAFL in either WINS or
2487 5) Type MNT ARMREL to build the Release version of the ARM variant
2488 of BAFL.DLL, and MNT ATSTREL to build the Release version of the ARM
2489 variant of T_RSC.EXE
2491 (Inspect the text file CERR.TXT for any build errors; note that you
2492 can get lots of strange behaviour if you have failed to add \gcc\bin
2495 6) In the ..\tsrc directory, type BLDIMG to build the file
2496 ARMROM.IMG (this follows instructions in the BAFL.OBY text file)
2498 7) Use the network to transfer ARMROM.IMG to a RACK PC and type
2500 to repro the rack with that ROM ...
2502 8) As it happens very few changes to the BAFL code were required, to
2503 allow the compilation and linking under GCC
2507 9) Renamed the WINS release components BAFL and BAFLPDB to EWINS and
2508 EWINSDB; following the practice from other software groups, the ARM
2509 release component is called EMARM
2511 10) Renamed the MDWORK verb of MNT to MAKEWORK (this makes all the
2512 ARM work directories as well as the EWINS work directories).
2517 (Made by DavidW, 4 March 1996)
2519 Uses E32 V054, F32 V018
2521 1) Re-release compatible with E32(054) and F32(018) (ie VC 4)
2523 2) Removed "/FORCE" declarations in project settings, to allow
2524 incremental linking for debug builds.
2529 (Made by DavidW, 26 February 1996)
2531 Uses E32 V053, F32 V017
2535 1) RResourceFile now has an inline function Offset() returning the
2536 value of iOffset, as required in order for CONE/Eikon to properly
2537 support multiple application resource files being loaded in the same
2540 2) Added a TCleanupItem() operator to RResourceFile, allowing
2541 RResourceFile objects to be placed on the cleanup stack; the contents
2542 of the associated Cleanup() function is to call Close()
2544 3) Renamed the GETJBLD verb of MNT.CMD to GETCOMPS
2549 (Made by DavidW, 21 February 1996)
2551 Uses E32 V053, F32 V017
2553 This build is binary compatible with BAFL 018; a downstream component
2554 that works with BAFL 018 should work equally well with BAFL 019,
2555 without any recompilation
2559 1) Fixed bug whereby, if a file contained n resources, behaviour
2560 when attempting to read resources n+1 and n+2 was unpredictable
2561 (diagnosed by Jal). It is now possible to reliably read through all
2562 the resources in a file; attempting to read beyond the end results in
2568 (Made by DavidW, 19 February 1996)
2570 Uses E32 V053, F32 V017
2572 1) Re-release compatible with E32(053) and F32(017)
2574 2) Added EXPORT and DELWORK verbs to MNT.CMD doing the usual things
2576 3) THIS BUILD WORKS IN RELEASE MODE TOO! (Not that I changed
2577 anything; I guess that some bug fixes or other changes elsewhere in
2578 the system must have put right whatever was going wrong before)
2583 (Made by DavidW, 15 February 1996)
2585 Uses E32 V052, F32 V016
2589 1) Altered RResourceFile class to better encapsulate the
2590 20-bit offset generated by the NAME statement in resource
2591 files. There is now an iOffset member which carries the
2592 offset corresponding to the name. Initially this contains
2593 zero (set by OpenL()). When ConfirmSignature() is called,
2594 the iOffset() is set from the top 20 bits of the second long in
2595 the signature record.
2597 2) There is a OwnsResourceId() function which returns ETrue
2598 if a resource id has top 20 bits the same as the iOffset's, or
2599 if its top 20 bits are zero. This means that resources can be
2600 read in sequence 1, 2, 3 ..., or in sequence 0xabcde001,
2601 0xabcde002 ..., where 0xabcde000 is the offset. The latter
2602 is intended for CONE application use. The former can also
2605 3) Changed the class to allow it to be a value type
2606 rather than a reference type. Also, changed from
2607 privately inheriting an RFile to owning one. You now
2608 use OpenL() and Close() to open and close the resource
2609 file, and you can pass them around by value.
2614 (Made by DavidW, 31 January 1996)
2616 Uses E32 V052, F32 V016
2618 1) Re-release compatible with E32(052) and F32(016)
2623 (Made by DavidW, 8 January 1996)
2625 Uses E32 V051, F32 V015
2627 1) Re-release compatible with E32(051) and F32(015)
2632 (Made by DavidW, 19 December 1995)
2634 Uses E32 V050, F32 V014
2636 1) Re-release compatible with E32(050) and F32(014)
2641 (Made by DavidW, 4 December 1995)
2643 Uses E32 V049, F32 V013
2645 1) Re-release compatible with E32(049) and F32(013)
2650 (Made by DavidW, 16 November 1995)
2652 Uses E32 V048, F32 V012
2654 1) Re-release compatible with E32(048) and F32(012)
2659 (Made by DavidW, 19 October 1995)
2661 Uses E32 V047, F32 V011
2663 1) Added ConfirmSignature(TInt aSignature,TInt &aOffset) to
2664 RResourceFile, which can be called for resource files whose first
2665 resource consists of two 32-bit integers
2667 *) the first being a signature, which must match the passed value
2670 *) the second having no special meaning as far as RResourceFile is
2671 concerned (but higher level software may interpret it eg as the
2672 "offset" value for the resource file); this gets written to aOffset
2674 The function returns either KErrNone, or an error value if the
2675 signature does not match.
2680 (Made by DavidW, 9 October 1995)
2682 Uses E32 V047, F32 V011
2684 1) Rebuilt to work with new E32 and F32
2686 Unfortunately the release mode code still fails to run (it still
2687 comes grinding to a halt in exactly the same place as before -
2688 somewhere deep inside F32).
2693 (Made by DavidW, 6 September 1995)
2695 Uses E32 V045, F32 V009
2697 1) Rebuilt to work with new E32 and F32
2702 (Made by DavidW, 28 August 1995)
2704 Uses E32 V044, F32 V008
2706 1) Added RResourceFile::AllocReadLC, which does the same as
2707 AllocRead but leaves the allocated cell (for the returned HBufC*
2708 pointer) on the cleanup list
2710 2) Converted test resource file to use BUF instead of STR and so no
2711 longer need to go around removing terminating zeroes; also made the
2712 test resource file more independent from xwim's S_.RSC.
2717 (Made by DavidW, 23 August 1995)
2719 Uses E32 V044, F32 V008
2721 1) Converted to work with new E32 and F32
2723 2) I've taken a policy decision that, wherever relevant, Bafl will
2724 presuppose that a trap handler has been installed by the caller.
2725 This will always be the case in an Hcil application (as
2726 CHci::ExecuteD will install a trap handler), but other users of Bafl
2727 will have to take independent steps. See code in T_RSC for an
2730 3) Thus CResourceFile::AllocReadL now presupposes that a trap
2731 handler has been installed (and that the caller is already inside a
2732 TRAP harness) - this allows the code to simplify (there's no longer
2733 any need for a local TRAP harness)
2738 (Made by DavidW, 21 August 1995)
2740 Uses E32 V043, F32 V007
2742 1) Converted to work with new E32 and F32
2744 2) Added L's to the names of all functions that can leave
2746 3) Moved BAFL.MAK from ..\src to ..\group for the usual reason (to
2747 make it easier for people debugging downstream to have the IDE know
2748 automatically where to load bafl source code from)
2753 *** Re-made by DavidW, 28 July 1995, using the new versions of E32
2754 v041 and F32 v006 (as the old one was link-incompatible)
2756 (Made by DavidW, 26 July 1995)
2760 Uses E32 V041, F32 V006 (from R:)
2762 1) Converted to work with new E32 and F32
2764 2) MNT.CMD improved, copying many ideas from Hcil
2766 3) Converted to new-style no .LNK files CMD-line build system.
2771 (Made by DavidW, 23 June 1995)
2775 Uses E32 V039, F32 V005
2777 1) Converted to work with new E32 and F32
2782 (Made by DavidW, 22 May 1995)
2784 Uses E32 V038, F32 V003
2786 1) RResourceFile::Read now tests to see if the resource will fit in
2787 the passed buffer, and if not, panics
2789 2) Resource files are now opened with EShareReadersOnly
2794 (Made by DavidW, 15 May 1995)
2796 Uses E32 V035, F32 V001
2798 NB There's currently only an ascii debug version; Unicode threatens a
2799 huge can of worms that will require a *lot* of attention to sort out.
2801 1) Now uses F32 instead of home-brewed access to files
2803 2) CResourceFile now exists as RResourceFile (a subclass of RFile
2806 3) Provided the static RResourceFile::New as a convenience function
2808 4) Simplified many of the function names
2810 5) Provided an HBufC *AllocRead() function to match the void Read()
2811 function, but this is broken for two reasons:
2813 6) First, the current implementation of HBufC::New is useless (it
2814 sets the iLength field to zero, but there's no useful way to change
2815 this later to something non-zero!)
2817 7) Second, the current implementation of Hufman decoding often
2818 decodes one extra spurious character, which can overwrite the end of
2824 (Made by MartinB, 11 May 1995)