bintools/rcomp/group/RELEASE.TXT
changeset 0 044383f39525
child 590 360bd6b35136
equal deleted inserted replaced
-1:000000000000 0:044383f39525
       
     1 Version 8.1.005
       
     2 ===============
       
     3 Released by KunalM, 06/03/2007
       
     4 
       
     5 	1) RCOMP ported to the TOOLS2 platform, under PREQ1182, MS3.6.2
       
     6 
       
     7 
       
     8 Version 8.00.002
       
     9 ================
       
    10 Released by AndrewR, 3/3/2005
       
    11 
       
    12 	1) DEFECT FIX: DEF055559 - Problems building rcomp in VC6 IDE
       
    13 
       
    14 Version 8.00.001
       
    15 ================
       
    16 Released by AndrewR, 7/2/2005
       
    17 
       
    18 	1) DEFECT FIX: DEF054981 - tools_rcomp component is updated every day
       
    19 
       
    20 Version 8.00.000
       
    21 ================
       
    22 Released by AndrewR, 4/2/2005
       
    23 	1) Fixed DEF054617 - rcomp doesn't build from source
       
    24 	2) Fixed INC049059 - incorrect line number for error reported by rcomp when building \s60\gs
       
    25 
       
    26 Version 7.01.009
       
    27 ============
       
    28 Released by KuldipN, 22/07/2004
       
    29 	Add UID2 and UID3 keywords to RCOMP 
       
    30 	(CR HBRT-5YJJ9C Specifying UID2 and UID3 in RSS files)
       
    31 
       
    32 Version 7.01.008
       
    33 ============
       
    34 Released by DuskoJ, 10/07/2003
       
    35 	1) Fixed DEF022269  Resource value is read incorrectly
       
    36 	2) Fixed INC036025  RCOMP chinese resource complation problem 
       
    37 
       
    38 Version 7.01.007
       
    39 ============
       
    40 Released by Jon Chatten, 03/06/2003
       
    41 	1) Fixed "DEF025433 RComp core dumps on certain resource files"
       
    42 	2) Adjusted version number in release.txt to match binary.
       
    43 
       
    44 	
       
    45 Version 7.06
       
    46 ============
       
    47 Released by Dusko Jahora, 03/06/2003
       
    48 	1) Reverted fix for DEF022269
       
    49 
       
    50 
       
    51 Version 7.05
       
    52 ============
       
    53 Released by Dusko Jahora, 02/06/2003
       
    54 1)	DuskoJ
       
    55 	1)	Changes to RCOMP whihch are part of CR PCHY-5L3RDW 
       
    56 		"Typhoon must support 16bpp colour".
       
    57 	2)	Fixed DEF022269  Resource value is read incorrectly
       
    58 		(this fix was not submitted on 09/05/2003 because of 
       
    59 		 an integration error)
       
    60 
       
    61 
       
    62 Version 7.04
       
    63 ============
       
    64 
       
    65 Released by Dusko Jahora, 09/05/2003
       
    66 1)	DuskoJ
       
    67 	1)	Fixed DEF022269  Resource value is read incorrectly
       
    68 
       
    69 
       
    70 Version 7.03
       
    71 ============
       
    72 
       
    73 Released by Dusko Jahora, April 2003
       
    74 	1)	Fixed defect DEF017151 "RCOMP should be upgraded to support files with UTF8 
       
    75 		signature".
       
    76 
       
    77 
       
    78 1)	William
       
    79 	1)	Fixed defect ROS-58VCX8 "RCOMP doesn't allow + in filenames" by removing
       
    80 		the unnecessary validation of the filenames left by the C++ preprocessor.
       
    81 	2)	Fixed defect RED-5ACK5F "Resource compiler creates nothing for empty and bad 
       
    82 		counted byte arrays"
       
    83 2)	Dusko
       
    84 	1)	Fixed defect ROS-5B7MHW "RCOMP fails to handle boundary values correctly
       
    85 		for WORD data type"
       
    86 	
       
    87 NB. The handling of LABEL suggests that it would be pretty easy to add rls_string support
       
    88 into the compiler directly.
       
    89 
       
    90 Version 7.01
       
    91 ============
       
    92 
       
    93 Released by Jon Chatten, February 2002
       
    94 
       
    95 Fixed defect ROS-56PHFA - Replaced system() call to uidcrc.exe with a call to _spawnlp -
       
    96 this addresses the IDE-hanging issue when epocrc.pl is integrated as a plug-in with the CW
       
    97 IDE on Windows 98.
       
    98 
       
    99 Removed attempt to absolutely identify uidcrc.exe - this is no longer required as the CW RCOMP/EPOCRC.PL
       
   100 plug-in now sets the PATH before invoking the command line tools.
       
   101 
       
   102 
       
   103 1)	William
       
   104 	1)	Fixed defect ROS-55KJ4U "RCOMP fails if epoc32\tools not on the path"
       
   105 
       
   106 
       
   107 Version 7.00
       
   108 ============
       
   109 
       
   110 Released by David Batchelor (November/December 2001)
       
   111 
       
   112 The format of resource files changes as follows:
       
   113 
       
   114 - The initial 2 two-byte values are removed as they are completely redundant. (All the information
       
   115   they provide can be derived from the last 2 bytes of the file combined with the size of the
       
   116   file.)
       
   117 - Resource files now have a standard 4-byte checked-UID field at the start. The first UID is
       
   118   0x101f4a6b, to indicate that the resource file potentially contains Unicode compressed according
       
   119   to the "Standard Compression Scheme for Unicode" (see
       
   120   http://www.unicode.org/unicode/reports/tr6/tr6-3.2.html). The second and third UIDs may be
       
   121   specified on the command-line by using an optional parameter of the form
       
   122   "-{0x12345678,0x9abcdef0}" (without the quotation marks). If "*" is used as the last UID, e.g.
       
   123   "-{0x600ddea1,*}", then the resource file's "offset" (i.e. the 20-bit number generated from the
       
   124   resource file's "NAME") is used as the last UID.
       
   125 - The UID field is immediately followed by a bit-array, one bit for each resource in the resource
       
   126   file, where each bit indicates whether the corresponding resource contains compressed Unicode.
       
   127   The bit field is padded up to a multiple of 8-bits (if necessary) with zero bits.
       
   128 - Each resource which contains compressed Unicode consists of a series of "runs" preceded by a 1
       
   129   or 2-byte run-length (1 byte if the run is <128 bytes, else 2 bytes). The run-length value does
       
   130   not include itself in the byte count that it holds. The first run, the third run, the fifth run
       
   131   etc contain compressed Unicode. The second run, the fourth run, the sixth run etc contain other
       
   132   stuff. As the protocol defines that the first run is compressed Unicode, this run may obviously
       
   133   be of zero length - no subsequent run in that resource may be of zero length.
       
   134 - Rcomp only uses compressed Unicode for text fields if it yields any benefit (i.e. only if it
       
   135   actually makes the output file smaller).
       
   136 - The changes are completely transparent for code that reads resources.
       
   137 
       
   138 
       
   139 Version 6.03
       
   140 ============
       
   141 
       
   142 Released by William Roberts, 30-Jul-2001
       
   143 
       
   144 Fix defect EXT-4YSCUV "Resource compiler corrupts long strings"
       
   145 Handle very long C++ comments, which previously caused a "token buffer overflow" message from the
       
   146 lexical analyser. Avoid overruning the buffer for literals by using a CHECK_APPEND() macro which
       
   147 discards characters rather than run off the end, giving errors like
       
   148 
       
   149 <empty>(5) : string too long - 1 ignored
       
   150 <empty>(5) : string too long - 2 ignored
       
   151 
       
   152 Avoid overflowing the Value array in string expressions by checking the new length before
       
   153 agreeing to concatenate the strings. Ultimately it would be best to replace Value[] with 
       
   154 a char* which has been created with strdup() and can therefore be realloc'd to grow the string.
       
   155 
       
   156 Fix defect ARG-4TZF7J "RCOMP needs warning waivers registered with SI"
       
   157 Removed all warnings in tools rel build - some tools deb warnings will appear in rcomp.cpp 
       
   158 because of problems in the mks\etc\yyparse.cpp file, but I didn't want to hide related problems 
       
   159 in any new Symbian code we might add. 
       
   160 
       
   161 Improve the -v output to show the primitive types being emitted, and to dump the IndexTable as hex
       
   162 offsets followed by the resource name, e.g.
       
   163 
       
   164     IndexTable
       
   165     IndexTableItem 4	<empty>
       
   166     IndexTableItem c	r_eikserv_panic_dialog
       
   167     IndexTableItem b8	r_eiksrv_oom_event_top
       
   168     IndexTableItem e4	r_eiksrv_oom_event_bot
       
   169     IndexTableItem 144	r_eikserv_replace_main_batteries
       
   170     IndexTableItem 170	r_eikserv_replace_backup_battery
       
   171 
       
   172 and 
       
   173 
       
   174     ResourceHeader          r_eiksrv_tasklist_dialog
       
   175     ++ResourceItemArray
       
   176     SimpleResourceItem [Long flags]  9
       
   177     SimpleResourceItem [LText16 title]  
       
   178     SimpleResourceItem [LLink pages]  
       
   179     SimpleResourceItem [LLink buttons]  
       
   180     StructArrayResourceItem (Level 0) [items]  
       
   181     ArrayLength [Word] 1
       
   182     ----------------------
       
   183     --ResourceItemArrayArray
       
   184     ++ResourceItemArray
       
   185     SimpleResourceItem [Word type]  1001
       
   186     SimpleResourceItem [LText16 prompt]  
       
   187     SimpleResourceItem [Word id]  1
       
   188     SimpleResourceItem [Long itemflags]  0
       
   189     StructTypeResourceItem (Level 0) [control]  
       
   190     ----------------------
       
   191     ++ResourceItemArray
       
   192     SimpleResourceItem [Byte version]  0
       
   193     SimpleResourceItem [Word flags]  0
       
   194     SimpleResourceItem [Word height]  8
       
   195     SimpleResourceItem [Word width]  20
       
   196     SimpleResourceItem [LLink array_id]  
       
   197     ----------------------
       
   198     SimpleResourceItem [LText16 trailer]  
       
   199     ----------------------
       
   200 
       
   201 Together these changes should make it significantly easier to step through the binary image of a
       
   202 resource and work out which element has changed unexpectedly.
       
   203 
       
   204 
       
   205 Version 6.02
       
   206 ============
       
   207 
       
   208 Released by William Roberts, 15-Feb-2001
       
   209 
       
   210 Fix awful defect in version 6.01, which caused negative integer constants to be written to the file as -1.
       
   211 
       
   212 When testing with LOCKIT, RCOMP developer should be aware that the version of RCOMP.EXE used by lockit 
       
   213 is kept in \lockit\tools, not \epoc32\tools.
       
   214 
       
   215 
       
   216 Version 6.01
       
   217 ============
       
   218 
       
   219 Released by William Roberts, 14-Feb-2001
       
   220 
       
   221 Redefined character literals ('x') to be effectively strings so that they can contain UTF8 encodings
       
   222 for interesting characters. This is handled using the same lexical rules as string literals, so
       
   223 the limited escape processing is also supported. The introduction of strings surrounded by single-quotes
       
   224 means that the sequence \' is now accepted as standing for '.
       
   225 
       
   226 If the character literal string decodes to more than one Unicode character, a warning is given and the
       
   227 rest of the string is ignored. The prevailing source character encoding is used, but there is no support
       
   228 narrow character literals in the difficult part of the CP1252 range: the interpretation of the literal
       
   229 is always "the Unicode encoding for the first character of the string". For example, even in a 
       
   230 CP1252 source file building a narrow resource, a literal containing the Euro symbol will be interpreted 
       
   231 as 0x20ac, not 0x80.
       
   232 
       
   233 LTEXT strings are now checked to ensure that they are less than 256 characters in length.
       
   234 
       
   235 The NAME statement can now take a string literal or a label, instead of the previous behaviour where the
       
   236 lexical analyser handled the following word differently. Any RSS file which used a keyword as a name,
       
   237 for example WORD.RSS, will need to be changed to specify the name as a literal: the preferred syntax
       
   238 is to use string literals in all cases.
       
   239 
       
   240 
       
   241 Version 3.18
       
   242 ============
       
   243 
       
   244 Released by William Roberts, 05-Aug-1999.
       
   245 
       
   246 Requires BAFL 092.
       
   247 
       
   248 Changed the handling of Unicode string resources (TEXT16 and LTEXT16) to ensure that the
       
   249 Unicode characters are aligned to a multiple of 2 bytes when the resource is used.
       
   250  
       
   251 Resources are never used in place: instead RResourceFile::AllocReadLC creates an HBufC8 to hold a
       
   252 copy of the data. This means that rather than aligning from the start of the entire resource file,
       
   253 instead we have to align to the start of the individual resource, because the data in an HBufC8 
       
   254 always starts at an aligned address.
       
   255 
       
   256 Added RCBinaryStream::Align(int nBytes) and RCBinaryStream::SetAlignBase() to support the 
       
   257 generation of the necessary padding, and call them from suitable places in RCOSTRM.CPP.
       
   258 
       
   259 Also added code to add 1 to the offset of the end of the table of resource offsets: this is tested
       
   260 in BAFL as a marker to indicate the new format of resource file.
       
   261 
       
   262 Added a /verbose flag to core.cmd which invokes RCOMP with -v.
       
   263 
       
   264 Added #pragma warning( disable : 4710 ) in a couple of places to cut down on the number of
       
   265 unnecessary and useless "warnings".
       
   266 
       
   267 Regenerated the test resources.
       
   268 
       
   269 
       
   270 Version 3.17
       
   271 ============
       
   272 
       
   273 Released by William Roberts, 25-Jun-1999.
       
   274 
       
   275 Fixed defect where embedded Unicode characters could cause BUF<x> strings to fail a length check.
       
   276 Updated test code include a check for this.
       
   277 
       
   278 Added more stuff for the Engineering Automated Build.
       
   279 
       
   280 
       
   281 Version 3.16
       
   282 ============
       
   283 
       
   284 Released by Pute, 9-Jun-1999.  Based on work by William Roberts,
       
   285 26-May-1999 described in the "William's notes" section below.
       
   286 
       
   287 
       
   288 Character sets
       
   289 --------------
       
   290 
       
   291 We are moving towards a specific principle of character sets for RCOMP.
       
   292 
       
   293 Previously, the character set used by RCOMP was not well defined, later we
       
   294 added the CHARACTER_SET identifier.  This implied that any specific values
       
   295 inserted into strings in <n> format would be in the character set of the
       
   296 source.
       
   297 
       
   298 In this design RCOMP will have trouble handling multibyte encodings like
       
   299 Shift-JIS because the tools it relies upon, LEX and YACC, are based on
       
   300 single-octet encodings only. Sometimes a multibyte encoding will produce
       
   301 artefacts that appear to be syntax elements such as double quote marks.
       
   302 
       
   303 In future the intention is that RCOMP uses UTF-8 encoding internally,
       
   304 provided by a pre-processing phase.  This release is an interim step.
       
   305 
       
   306 In this release, when explicit values are inserted in text strings, they
       
   307 are interpreted as Unicode values and converted to UTF-8.  To retain
       
   308 backward compatibility with CP1252 source, values 80-9F are also permitted
       
   309 and these will be mapped to Unicode as before when the source character set
       
   310 is defined to be CP1252.  The use of explicit values 80-9F is deprecated
       
   311 however.
       
   312 
       
   313 The default input character set is CP1252.  Previously, the default
       
   314 character set was "unknown".  This possibility is no-longer supported.
       
   315 This was also contrary to documentation.
       
   316 
       
   317 
       
   318 Details:
       
   319 
       
   320 Test command procedure updated and enhanced.
       
   321 
       
   322 Test comparison files TUTEXT8.RSC and TUTEXT16.RSC have been updated to
       
   323 allow for the introduction of the extra characters in the CP1252 character
       
   324 set.  (128 used to be "not used" and is now the euro sign)
       
   325 
       
   326 Note that compilation warning messages about deprecated characters will
       
   327 appear durng this test.
       
   328 
       
   329 A new test source file TWTEXT.RSS and associated reference binaries have
       
   330 been added to the test suite to demonstrate explicit use of values >255.
       
   331 
       
   332 
       
   333 
       
   334 
       
   335 William's notes (edited by Pute):
       
   336 ---------------
       
   337 
       
   338 Defined a new "character set" called UTF8, which supports the UTF8
       
   339 encoding of Unicode strings. 
       
   340 This actually allows the whole resource source file to be entered as
       
   341 UTF8 if required.  However the default charset remains CP1252.
       
   342 
       
   343 Arranged to support embedded Unicode characters constructed using the
       
   344 <xxx> notation, to support the use of 0x07ED as the end-of-paragraph
       
   345 marker (see ETEXT 120). This exploits the UTF8 support by inserting the
       
   346 appropriate UTF8 sequence into the 8-bit data.
       
   347 
       
   348 The embedded Unicode characters are also supported in the CP1252
       
   349 character set, with internal use of 0x81 as an "escape" character
       
   350 indicating that the following bytes are a UTF8 encoded character. This
       
   351 allows existing CP1252 resource source files to be used with the new
       
   352 ETEXT.
       
   353 
       
   354 Added the Euro and the Z caron encodings to the cp1252_exceptions table.
       
   355 
       
   356 
       
   357 Only RCOMP.EXE has been rebuilt.  Judging from the timestamps, the other
       
   358 executables haven't been rebuilt for the last few releases.
       
   359 
       
   360 To build rcomp, first run ..\src\BLDEX, then MNT BLDREL
       
   361 
       
   362 Building is only possible from NT and makes use of lex and yacc from
       
   363 T:\mks - this should be updated to use the GNUPro tools which we use to
       
   364 build GCC, as the Cygnus toolchain is something we expect to have always
       
   365 available.
       
   366 
       
   367 
       
   368 
       
   369 Version 3.15
       
   370 ============
       
   371 
       
   372 Released by SimonC, 01-Feb-1999
       
   373 
       
   374 Fixed defects
       
   375 	EDN484092 "RCOMP needs to be Symbianised"
       
   376 	EDN584421 "Need to rebuild RCOMP with boilerplated headers"
       
   377 
       
   378 Only RCOMP.EXE has been rebuilt.  Judging from the timestamps, the other executables
       
   379 haven't been rebuilt for the last few releases.
       
   380 
       
   381 To build rcomp, first run ..\src\BLDEX, then MNT BLDREL
       
   382 
       
   383 Building is only possible from the NT and makes use of executables on T: so this can't
       
   384 be rebuilt by licensees (which doesn't seem to have been a problem so far...)
       
   385 
       
   386 
       
   387 
       
   388 Version 3.14
       
   389 ============
       
   390 
       
   391 Released by PNJ, 19-Mar-1997
       
   392 
       
   393 The CORE command and the test procedures rely on NT command extensions.
       
   394 
       
   395 
       
   396 Version 314 mods
       
   397 
       
   398   1. In FILELINE.CPP, FileLineManager::ExtractFileName updated to add
       
   399      filename information planted by the preprocessor. This is a rewrite of
       
   400      the code that was removed in the previous release because it was
       
   401      violating.
       
   402   2. Test code now in a formalised framework accessed via MNT TEST. The
       
   403      formalism isn't perfect because of the limitations imposed by the
       
   404      legacy command language. See TEST.HTM in the TSRC directory for more
       
   405      information. The test procedure relies on NT command extensions.
       
   406   3. The CORE command procedure has been changed to allow preprocessor
       
   407      symbols to be defined. See below.
       
   408 
       
   409 CORE syntax
       
   410 
       
   411 CORE filename [ object_directory [options] ]
       
   412 
       
   413 If options are being used the object directory parameter must be present,
       
   414 the default value is "." for the current directory.
       
   415 
       
   416 Options are:
       
   417 
       
   418 /UNICODE
       
   419      Specifies that strings are emitted as Unicode in the resource binary.
       
   420      Previously, this option was selected with "-u", which is the parameter
       
   421      currently used by RCOMP itself.
       
   422 /DEFINE symbol [ symbol...]
       
   423      Specifies one or more symbols to be defined for the preprocessor pass.
       
   424      This must be the last option supplied because it is followed by an
       
   425      arbitrary number of tokens and the command language is so primitive.
       
   426 
       
   427 
       
   428 
       
   429 
       
   430 
       
   431 
       
   432 
       
   433 
       
   434 Version 3.13
       
   435 ============
       
   436 
       
   437 Released by PNJ, 13-Jan-1997
       
   438 
       
   439 Version number scheme is independent of product-specific E32 chain
       
   440 numbering.
       
   441 
       
   442 This is an interim release, to provide 16-bit character set functionality.
       
   443 Later releases are planned to provide other requested features.  Existing
       
   444 RSS files produce identical binaries to previous releases when compiled
       
   445 in the default non-Unicode mode.
       
   446 
       
   447 There are some serious defects in the source code which will take
       
   448 a long time to address properly, eg misuse of assert as a status check.
       
   449 
       
   450 1.  Minor changes to MNT and build settings.
       
   451 2.  Minor code changes to remove warnings.
       
   452 3.  Renamed STRING.CPP, .H to remove ambiguity with
       
   453     standard header of the same name.
       
   454 4.  rcscan::yyerror function updated so that it actually
       
   455     interprets formatted strings instead of ignoring the extra
       
   456     parameters.
       
   457 5.  Fixed defect in String operator != which was doing the inverse
       
   458     of what it is supposed to do!
       
   459 6.  Provide a qualifier for Unicode output.
       
   460 7.  Fix erroneous error message if source file not specified.
       
   461 8.  Fixed problem which caused run time fatal errors during
       
   462     source context switching.
       
   463 9.  Introduce new tokens to differentiate between 8 and 16-bit
       
   464     text strings.
       
   465 10. Introduce a CHARACTER_SET token to specify the source
       
   466     character set.
       
   467 11. Introduce an extra test component directory.
       
   468 12. Introduce a command procedure wrapper for RCOMP (called CoRe)
       
   469 
       
   470 
       
   471 Language features
       
   472 -----------------
       
   473 
       
   474 CHARACTER_SET name
       
   475 
       
   476 Specifies the character set of the input file.  The implementation currently
       
   477 does not do much with this, but will do in the nexty release or 2.  Legal
       
   478 values for name are currently:
       
   479 
       
   480 ASCII, CP1252, CP850, ISOLatin1, ShiftJIS, Unicode
       
   481 
       
   482 Note that Unicode source text is not likely to be supported any time soon,
       
   483 largely because RCOMP relies on LEX and YACC which are not Unicode-aware.
       
   484 
       
   485 The default setting in this implementation is CP1252.
       
   486 
       
   487 
       
   488 TEXT, LTEXT and BUF
       
   489 
       
   490 Now have explicit 8 and 16-bit variants, eg TEXT8, BUF16.  The unadorned
       
   491 variants are internally converted to the 8 or 16-bit equivalents depending
       
   492 on the presence of the -u (for unicode) command line qualifier.
       
   493 
       
   494 The prefixed counter for an LTEXT16 is still an 8-bit field.
       
   495 
       
   496 The zero terminator for a TEXT16 is a 16-bit field.
       
   497 
       
   498 For text fields, it is recommended that you continue to use the unadorned
       
   499 keywords. For binary data, you should use the explicit 8-bit keywords. This
       
   500 is likely to apply most commonly to the BUF (BUF8) keyword.
       
   501 
       
   502 
       
   503 
       
   504 
       
   505 
       
   506 Version 0.03.12
       
   507 ===============
       
   508 
       
   509 1) Reduced verbosity.
       
   510 2) Released a version compatible with NT4.
       
   511 
       
   512 Version 0.03.11
       
   513 ===============
       
   514 
       
   515 1) PVCS'ed RCOMP and generally tidied it up.
       
   516 2) Fixed empty BUF crash.
       
   517 3) Fixed extra trailing comma crash.
       
   518 4) Cleaned up the build warnings.
       
   519 5) Added ...BUF<n>... where n is an integer giving max length of BUF.
       
   520 6) The .exe is now called rcomp.exe.
       
   521 
       
   522 Version 3.06, MartinW, 05 Jul 96
       
   523 ================================
       
   524 1. Added enum handling.
       
   525         e.g.
       
   526         ENUM ExampleEnum { Elem1, Elem2}
       
   527         STRUCT a { BYTE b;}
       
   528         RESOURCE a c { b = ExampleEnum::Elem2;}
       
   529 This should set up b with the value 1.
       
   530 
       
   531 Version 3.05, MartinW, 30 May 96
       
   532 ================================
       
   533 1.Deal with long (>42characters) resource names in output to header
       
   534   file.
       
   535 2.Prevent assertion failure in case of missing comma after first item
       
   536   in an array of struct's.
       
   537 
       
   538 Version 3.04, MartinW, 29 Apr 96
       
   539 ================================
       
   540 Avoid using cin by reading from a specified file (-s<filename>). The 
       
   541 cin approach suffered from something to do with the source file being 
       
   542 left open even when the program ended. This was the case at least with 
       
   543 a test program built using C++ 1.51 and run under NT 3.51.
       
   544 e.g.    void main() { char a; cin << a; }
       
   545         TestProgram < a.src
       
   546         del a.src             <---- "file in use by another process".
       
   547 
       
   548 Version 3.03, MartinW, 18 Apr 96
       
   549 ================================
       
   550 1.Handle syntax error with numbers more effectively so assert does not
       
   551   fail.
       
   552 2.Accept 0 for double without warning.
       
   553 
       
   554 Version 3.02, MartinW, 11 Apr 96
       
   555 ================================
       
   556 Corrected defect to do with line number in error message for text being
       
   557 converted to a number.
       
   558 
       
   559 Version 3.01, MartinW, 9 Apr 96
       
   560 ===============================
       
   561 1.I added more error handling so that more proper error messages are
       
   562   given.
       
   563 2.I altered the error message format so that it is suitable for VC++.
       
   564   Brief seems to cope with this new format quite happily. VC++ didn't 
       
   565   seem to like e.g. ".\t1.rss" at the start but "C:\rcomp\src\t1.rss" 
       
   566   worked.
       
   567 3.The drive and directory for the file name specified with -i is used
       
   568   to provide the full paths for all filenames given in error messages. 
       
   569   If the -i file name is not a full path then the current directory and 
       
   570   drive are used in combination with the partial path to create a full 
       
   571   path.
       
   572 
       
   573 Version 3.00, MartinW, 19 Mar 96
       
   574 ================================
       
   575 To use this resource compiler execute "mnt getrel". The egrs.bat file
       
   576 is an example of how the resource compiler may be run. The GNU
       
   577 preprocessor is used (t:\tools\gnucpp.exe) first and the output
       
   578 passed to rc3.exe. The fc4bat.exe file is used to avoid writing the
       
   579 header output file if it has in fact not changed.
       
   580 
       
   581 Details about this version
       
   582 --------------------------
       
   583 This is a completely new version based on yacc and lex along with C++.
       
   584 
       
   585 Overview of system:
       
   586         Source file (e.g.pic.rss) 
       
   587                 -> Preprocessing
       
   588                 -> Lexer
       
   589                 -> Parser
       
   590                 -> Data structures (using C++ classes)
       
   591                 -> Data file output (e.g. pic.rsg)
       
   592                 -> Header file output (e.g. pic.h)
       
   593 
       
   594         The GNU C++ preprocessor was used. The output from this
       
   595         includes directives giving line numbering following inclusion
       
   596         of header files. The lexer uses this to store data which the 
       
   597         parser then uses to output error messages in Brief format.
       
   598     
       
   599         The lexer and parser are generated by lex and yacc
       
   600         respectively from rcomp.l and rcomp.y. These define the
       
   601         tokens and the grammar for the resource script language.
       
   602 
       
   603         Supporting C++ classes are compiled and linked along with the
       
   604         output from lex and yacc.
       
   605 
       
   606         The batch file rs.bat takes the file specified by the first
       
   607         parameter and passes it to the GNU preprocessor. The output
       
   608         is piped through to rcomp.exe. The names of the data output 
       
   609         file and the header file are specified based on the name
       
   610         given to rs.bat. The -i flag is used to give the original
       
   611         name (as passed to the preprocessor) for error reporting.
       
   612      
       
   613         A program called fc4bat.exe is used to give an errorlevel if
       
   614         the specified files do not match. This is used to avoid
       
   615         changing the date on the header file if it has not changed.
       
   616 
       
   617 Issues for porting to other platforms:
       
   618          1) atof has been used. The output of this is written to the
       
   619             rsc file. The format must be that expected by the program
       
   620             reading the rsc file rather than the format of the
       
   621             machine used to generate the file.
       
   622          2) The MKS versions of yacc and lex were used. These are PC
       
   623             versions of the UNIX tools. The non-standard features
       
   624             were avoided however only the PC versions have been used.
       
   625          3) Stream handling has been used. Apparently there may be
       
   626             differences in implementations of this extension to C++.
       
   627 
       
   628