diff -uNr dmd-0.119/dmd/html/d/attribute.html dmd-0.120/dmd/html/d/attribute.html --- dmd-0.119/dmd/html/d/attribute.html 2005-03-17 11:36:02.000000000 +0100 +++ dmd-0.120/dmd/html/d/attribute.html 2005-03-25 23:15:10.000000000 +0100 @@ -16,7 +16,7 @@ [Home] [Search] [D] -
Last modified Mar 9, 2005. +
Last modified Mar 25, 2005.

Attributes

@@ -199,6 +199,14 @@ members are packed together.

+ Do not align references or pointers that were allocated + using NewExpression on boundaries that are not + a multipe of 4. The garbage collector assumes that pointers + and references to gc allocated objects will be on 4 + byte boundaries. If they are not, undefined behavior will + result. +

+ AlignAttribute is ignored when applied to declarations that are not structs or struct members. @@ -369,6 +377,11 @@ is used to guarantee cleanup.

+ If there is more than one auto variable going out of scope + at the same point, then the destructors are called in the reverse + order that the variables were constructed. +

+ Auto cannot be applied to globals, statics, data members, inout or out parameters. Arrays of autos are not allowed, and auto function return values are not allowed. Assignment to an auto, diff -uNr dmd-0.119/dmd/html/d/changelog.html dmd-0.120/dmd/html/d/changelog.html --- dmd-0.119/dmd/html/d/changelog.html 2005-03-17 23:16:28.000000000 +0100 +++ dmd-0.120/dmd/html/d/changelog.html 2005-04-06 12:33:20.000000000 +0200 @@ -24,6 +24,7 @@


+

+ What's New for + D 0.120 +

+ +Apr 6, 2005 +

+ +

New/Changed Features

+ + +

Bugs Fixed

+ + +

What's New for D 0.119

-Mar 16, 2005 +Mar 18, 2005

New/Changed Features

@@ -123,18 +206,18 @@
  • Fixed parsing entities with digits.
  • Class invariant calls no longer attached to private, protected, or package member functions. -
  • Fixed D.bugs/32 -
  • Fixed D.bugs/1148 -
  • Fixed D.bugs/1815 -
  • Fixed D.bugs/1865 -
  • Fixed D.bugs/1953 -
  • Fixed D.bugs/2042 -
  • Fixed D.bugs/2140 -
  • Fixed D.bugs/2240 -
  • Fixed D.bugs/2262 -
  • Fixed D.bugs/2429 -
  • Fixed D.bugs/2546 -
  • Fixed D.bugs/2934 +
  • Fixed D.bugs/32 +
  • Fixed D.bugs/1148 +
  • Fixed D.bugs/1815 +
  • Fixed D.bugs/1865 +
  • Fixed D.bugs/1953 +
  • Fixed D.bugs/2042 +
  • Fixed D.bugs/2140 +
  • Fixed D.bugs/2240 +
  • Fixed D.bugs/2262 +
  • Fixed D.bugs/2429 +
  • Fixed D.bugs/2546 +
  • Fixed D.bugs/2934
  • Changed documentation on struct/union grammar to allow invariants, unit tests, and allocator/deallocators.
  • The file names printed out by runtime assert failures now matches diff -uNr dmd-0.119/dmd/html/d/dcompiler.html dmd-0.120/dmd/html/d/dcompiler.html --- dmd-0.119/dmd/html/d/dcompiler.html 2005-03-16 18:33:04.000000000 +0100 +++ dmd-0.120/dmd/html/d/dcompiler.html 2005-04-06 12:22:38.000000000 +0200 @@ -70,11 +70,11 @@
  • 32 bit Windows operating system
  • - + D compiler for Win32
  • - + linker and utilities for Win32 @@ -138,8 +138,6 @@
    compile in debug code identified by ident
    -g
    add symbolic debug info -
    -gt
    -
    add hooks for profiling
    -inline
    inline expand functions
    -Ipath @@ -161,6 +159,10 @@
    normally the path for .d source files is stripped off when generating an object file name. -op will leave it on. +
    -profile
    +
    profile + the runtime performance + of the generated code
    -release
    compile release version, which means not generating code for contracts and asserts @@ -361,8 +363,6 @@
    compile in debug code identified by ident
    -g
    add symbolic debug info -
    -gt
    -
    add trace profiling hooks (not supported under linux)
    -inline
    inline expand functions
    -Ipath @@ -384,6 +384,10 @@
    normally the path for .d source files is stripped off when generating an object file name. -op will leave it on. +
    -profile
    +
    profile + the runtime performance + of the generated code
    -release
    compile release version
    -unittest
    diff -uNr dmd-0.119/dmd/html/d/dlinks.html dmd-0.120/dmd/html/d/dlinks.html --- dmd-0.119/dmd/html/d/dlinks.html 2005-03-16 18:33:04.000000000 +0100 +++ dmd-0.120/dmd/html/d/dlinks.html 2005-04-03 17:38:08.000000000 +0200 @@ -1,3 +1,9 @@ + + + + + @@ -8,67 +14,64 @@ www.digitalmars.com --> - -Digital Mars - The D Programming Language - + + + Digital Mars - The D Programming Language + - -www.digitalmars.com + +www.digitalmars.com [Home] [Search] [D] -
    Last update Aug 28, 2004 -
    +
    Last update Apr 03, 2005 +

    D Links

    These are links to other D resources! If you have any D code, documents, or web pages of interest to D programmers, @@ -268,42 +294,42 @@
    -
    -
    +
    - Cut & paste the following free images on your web pages of interest to +Cut & paste the following free images on your web pages of interest to D programmers:

    - D-Man - The D Programming Language - by Christopher Sauls - by Greg Peet - by Greg Peet - by Greg Peet - by Greg Peet - by Greg Peet - by Manfred Nowak - by Manfred Nowak - by David L. 'SpottedTiger' Davis - by David L. 'SpottedTiger' Davis + D-Man + The D Programming Language + by Christopher Sauls + by Greg Peet + by Greg Peet + by Greg Peet + by Greg Peet + by Greg Peet + by Manfred Nowak + by Manfred Nowak + by David L. 'SpottedTiger' Davis + by David L. 'SpottedTiger' Davis

    Corto's D button images: - D Language + D Language

    @@ -317,9 +343,16 @@ target="_top" title="Wiki 4 D">feedback and comments regarding this page. -


    Copyright (c) 1999-2004 by Digital Mars, All Rights Reserved +
    +

    + + Valid HTML 4.01! +

    + Copyright (c) 1999-2005 by Digital Mars, All Rights Reserved + diff -uNr dmd-0.119/dmd/html/d/expression.html dmd-0.120/dmd/html/d/expression.html --- dmd-0.119/dmd/html/d/expression.html 2005-03-16 18:33:04.000000000 +0100 +++ dmd-0.120/dmd/html/d/expression.html 2005-03-19 01:27:42.000000000 +0100 @@ -1,7 +1,7 @@ + + + + + + Digital Mars - Phobos - std.openrj + + + +www.digitalmars.com + +[Home] +[Search] +[D] + +
    Last update 8th March 2005 +
    + +

    Phobos: std.openrj

    + +

    +Open-RJ is an open-source library that implements readers of the Record-Jar +structured text file format, designed and implemented by Matthew Wilson, as an +exemplar project for his column Positive Integration in +C/C++ Users Journal. +

    +It is implemented in C & C++, with a C-API. +The implementation of the basic library is platform-independent. Mappings are +provided to several languages (including C++, +D, +Ruby +and +STL), +and others (COM, Java, .NET, Perl, Python) are planned. In addition to +platform-independence, the library focuses on small runtime +costs - memory and speed - and the classic UNIX attributes of +discoverability and visibility. +

    + +

    What is the Record-Jar format?

    +

    +As described in the excellent book +"The Art Of UNIX Programming", a Record-Jar structured format file +consists of records and fields. +

    +

    +A field is a single line - optionally extended with trailing '\' - that contains +a name, separated from an optional value by ':'. +

    +

    +A record is a list of fields, whose contents are arbitrary and can vary between +records in the same database. Records are separated by a line that begins with +"%%". The record separator also acts as a comment, so +anything can come on a record separator line after the first two characters. +

    +

    +A database is a correctly parsed Record-Jar file. The Open-RJ API (and language +mappings) provide access to all the records in the database and the complete set +of fields. Hence, you may work with fields on a per-record basis, or treat the database +as a single record and with all fields in the database. +

    +

    +A very simple Record-Jar file, representing a Pets Database, is shown below: +

    + +
    +Name:       Elsa
    +Species:    Dog
    +Breed:      Mixed
    +%%
    +Name:       Fluffy Kitten
    +Species:    Cat
    +%%
    +Name:       Rebel
    +Species:    Dog
    +Breed:      German \
    +            Shepherd
    +%%
    +Name:       Pepper
    +Species:    Dog
    +Breed:      Border Collie
    +%%
    +Name:       Samson
    +Species:    Dog
    +Breed:      Ridgeback
    +%%
    +Name:       Sheltie
    +Species:    Dog
    +Breed:      Shetland \
    +            Sheepdog
    +%%
    +Name:       Sparky
    +Species:    Cat
    +%%
    +
    + +

    +And that's pretty much all there is to it. There are no restrictions on what fields may +be in a record, and no controls over whether all records have the same fields or not. +That's the job of higher layers of application functionality. We keep Record-Jar simple +so it's reliable, portable and fast, and it's those things in spades! +

    + +

    std.openrj

    +

    +The D mapping of Open-RJ is packaged with Phobos in the std.openrj +module. It consists of four classes: +

    + +and one enumeration: + + +The basic usage is as follows: +
      +
    1. + Create a database instance, on an existing Open-RJ database file, e.g. +
      +    Database db = new Database("pets.orj", ORJ_FLAG.ELIDE_BLANK_RECORDS);
      +  
      +
    2. +
    3. + Enumerate over the records in the database, by using foreach: +
      +    foreach(Record r; db)
      +    {
      +      . . . // Process the record
      +    }
      +  
      + or by indexed lookup (which returns a Record instance): +
      +    for(int i = 0; i < db.length; ++i)
      +    {
      +      Record r = db[i];
      +
      +      . . . // Process the record
      +    }
      +  
      +

      + Processing of the record may be done by either ... +

      +
    4. +
    5. + ... enumerating the fields in the record, by using foreach: +
      +    foreach(Field f; r)
      +    {
      +      char[] name  = f.name;
      +      char[] value = f.value;
      +
      +      printf("  %.*s=%.*s\n", name, value);  // e.g. "Breed=German Shepherd"
      +    }
      +  
      + or by indexed lookup (which returns a Field instance): +
      +    for(int i = 0; i < r.length; ++i)
      +    {
      +      Field f = r[i];
      +
      +      . . . // Process the field
      +    }
      +  
      +
    6. +
    7. + ... or it might be by field lookup or by name (which returns a string): +
      +    printf("  The value of the \"Species\" field is %.*s\n", r["Species"]);
      +  
      +
    8. +
    +

    + + +

    std.openrj.Database

    + The Database class has the following methods: +
    +
    +
    this(in char[] contents, in uint flags = 0)
    +
    Create a database object representing the given database contents +

    +

    contents The contents (or full path) of the database, where lines are separated by carriage-returns
    +
    flags A combination of ORJ_FLAG flags + which affect the processing of the Jar file
    +

    +

    Note: throws a DatabaseException + if the contents do not represent a + correctly formed Open-RJ database
    +

    + +

    this(in char[][] lines, in uint flags = 0)
    +
    Create a database object representing the given database contents +

    +

    lines The database contents as an array of lines
    +
    flags A combination of ORJ_FLAG flags + which affect the processing of the Jar file
    +

    +

    Note: throws a DatabaseException + if the contents do not represent a + correctly formed Open-RJ database
    +

    + +

    Record opIndex(uint index)
    +
    The record at the given index
    +

    +

    Note: the function gives undefined behaviour if the index is invalid
    +

    + + +

    Record[] getRecordsContainingField(char[] fieldName)
    +
    Returns an array of all records that contain a Field + with the given name
    +

    +

    fieldName The name of the field
    +

    + +

    Record[] getRecordsContainingField(char[] fieldName, char[] fieldValue)
    +
    Returns an array of all records that contain a Field + with the given name and value
    +

    +

    fieldName The name of the field
    +
    fieldValue The value of the field. May be null, in which case the semantics + are identical to getRecordsContainingField
    +

    + +

    +
    + and the following attributes: +
    +
    +
    char[] jarName()
    +
    The name of the database Jar file
    +

    + +

    uint flags()
    +
    The flags specified in the constructor
    +

    + +

    Record[] records()
    +
    An array of all records in the database
    +

    + +

    Field[] fields()
    +
    An array of all fields in the database
    +

    + +

    uint numFields()
    +
    The number of fields in the database
    +

    + +

    uint numRecords()
    +
    The number of records in the database
    +

    + +

    uint length()
    +
    The number of records in the database
    +

    + +

    +
    +

    + + +

    std.openrj.Record

    + The Record class has the following methods: +
    +
    +
    Field opIndex(uint index)
    +
    Returns the field at the given index
    +

    +

    Note: the function gives undefined behaviour if the index is invalid
    +

    + +

    char[] opIndex(char[] fieldName)
    +
    Returns the value of the (first) field with the given name
    +

    +

    fieldName The name of the field
    +

    +

    Note: throws an InvalidKeyException if no field is found
    +

    + +

    Field getField(char[] fieldName)
    +
    Returns the (first) field with the given name
    +

    +

    fieldName The name of the field
    +

    +

    Note: throws an InvalidKeyException if no field is found
    +

    + +

    Field findField(char[] fieldName)
    +
    Returns the (first) field with the given name
    +

    +

    fieldName The name of the field
    +

    +

    Note: return null if no field is found
    +

    + +

    bool hasField(char[] fieldName)
    +
    Returns true if the record contains one or more fields with the given name
    +

    +

    fieldName The name of the field
    +

    + +

    +
    + and the following attributes: +
    +
    +
    Field[] fields()
    +
    An array of all fields in the record
    +

    + +

    uint numFields()
    +
    The number of fields in the record
    +

    + +

    uint length()
    +
    The number of fields in the record
    +

    + +

    Database database()
    +
    The database within which the record resides
    +

    + +

    +
    +

    + + +

    std.openrj.Field

    + The Field class has the following properties: + methods: +
    +
    +
    char[] name()
    +
    The name of the field
    +

    + +

    char[] value()
    +
    The value of the field
    +

    + +

    Record record()
    +
    The record within which the field resides. May be null
    +

    + +

    +
    +

    + + +

    std.openrj.OpenRJException

    + Base exception class used by the openrj module. +

    + + +

    std.openrj.DatabaseException

    + Exception class, derived from OpenRJException, + thrown if the database Jar file cannot be opened, or its contents do not represent a + correctly formed Open-RJ database. +

    + The DatabaseException class has the following properties: + methods: +

    +
    +
    ORJRC rc()
    +
    The general error code associated with the exception
    +

    + +

    ORJ_PARSE_ERROR parseError()
    +
    The parsing error code associated with the exception
    +

    + +

    int lineNum()
    +
    The lineNum associated with the exception
    +

    + +

    +
    +

    + + +

    std.openrj.InvalidKeyException

    + Exception class, derived from OpenRJException, + thrown when named fields are not found. +

    + + +

    std.openrj.ORJ_FLAG

    + Enumeration, whose values control the loading behaviour of the + Database class. +
    +
    +
    ORDER_FIELDS - Arranges the fields in alphabetical order
    +
    ELIDE_BLANK_RECORDS - Causes blank records to be ignored
    +
    +
    +

    + + +

    std.openrj.ORJRC

    + Enumeration representing general database processing errors encountered in + the loading of the Database class. +
    +
    +
    SUCCESS - Operation was successful
    +
    CANNOT_OPEN_JAR_FILE - The given file does not exist, or cannot be accessed
    +
    NO_RECORDS - The database file contained no records
    +
    OUT_OF_MEMORY - The API suffered memory exhaustion
    +
    BAD_FILE_READ - A read operation failed
    +
    PARSE_ERROR - Parsing of the database file failed due to a syntax error
    +
    INVALID_INDEX - An invalid index was specified
    +
    UNEXPECTED - An unexpected condition was encountered
    +
    INVALID_CONTENT - The database file contained invalid content
    +
    +
    +

    + + +

    std.openrj.ORJ_PARSE_ERROR

    + Enumeration representing database parsing errors encountered in + the loading of the Database class. +
    +
    +
    SUCCESS - Parsing was successful
    +
    RECORD_SEPARATOR_IN_CONTINUATION - A record separator was encountered during a content line continuation
    +
    UNFINISHED_LINE - The last line in the database was not terminated by a line-feed
    +
    UNFINISHED_FIELD - The last field in the database file was not terminated by a record separator
    +
    UNFINISHED_RECORD - The last record in the database file was not terminated by a record separator
    +
    +
    +

    + + +


    Copyright (c) 2004 by Matthew Wilson, Synesis Software Pty Ltd, All Rights Reserved + + + + \ No newline at end of file diff -uNr dmd-0.119/dmd/html/d/std_stream.html dmd-0.120/dmd/html/d/std_stream.html --- dmd-0.119/dmd/html/d/std_stream.html 2005-03-16 18:33:04.000000000 +0100 +++ dmd-0.120/dmd/html/d/std_stream.html 2005-04-01 12:07:16.000000000 +0200 @@ -1,3 +1,4 @@ +