diff -uNr dmd-0.174/dmd/html/d/abi.html dmd-0.175/dmd/html/d/abi.html --- dmd-0.174/dmd/html/d/abi.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/abi.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
Last update Wed Nov 1 22:28:55 2006 +
Last update Wed Nov 15 02:42:23 2006
diff -uNr dmd-0.174/dmd/html/d/acknowledgements.html dmd-0.175/dmd/html/d/acknowledgements.html --- dmd-0.174/dmd/html/d/acknowledgements.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/acknowledgements.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
Last update Wed Nov 1 22:28:55 2006 +
Last update Wed Nov 15 02:42:23 2006
@@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/arrays.html dmd-0.175/dmd/html/d/arrays.html --- dmd-0.174/dmd/html/d/arrays.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/arrays.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:54 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/ascii-table.html dmd-0.175/dmd/html/d/ascii-table.html --- dmd-0.174/dmd/html/d/ascii-table.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/ascii-table.html 2006-11-15 02:42:26.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/attribute.html dmd-0.175/dmd/html/d/attribute.html --- dmd-0.174/dmd/html/d/attribute.html 2006-11-14 14:32:34.000000000 +0100 +++ dmd-0.175/dmd/html/d/attribute.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Tue Nov 14 14:32:33 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/builtin.html dmd-0.175/dmd/html/d/builtin.html --- dmd-0.174/dmd/html/d/builtin.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/builtin.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:23 2006
    diff -uNr dmd-0.174/dmd/html/d/changelog1.html dmd-0.175/dmd/html/d/changelog1.html --- dmd-0.174/dmd/html/d/changelog1.html 2006-11-09 21:47:48.000000000 +0100 +++ dmd-0.175/dmd/html/d/changelog1.html 2006-11-15 02:42:26.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Thu Nov 9 21:47:45 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/changelog.html dmd-0.175/dmd/html/d/changelog.html --- dmd-0.174/dmd/html/d/changelog.html 2006-11-14 15:06:26.000000000 +0100 +++ dmd-0.175/dmd/html/d/changelog.html 2006-11-25 00:31:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Tue Nov 14 15:06:24 2006 +
    Last update Sat Nov 25 00:31:52 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + @@ -190,6 +192,8 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:23 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/comparison.html dmd-0.175/dmd/html/d/comparison.html --- dmd-0.174/dmd/html/d/comparison.html 2006-11-10 00:04:00.000000000 +0100 +++ dmd-0.175/dmd/html/d/comparison.html 2006-11-15 02:42:24.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Fri Nov 10 00:03:58 2006 +
    Last update Wed Nov 15 02:42:23 2006
    diff -uNr dmd-0.174/dmd/html/d/cppcomplex.html dmd-0.175/dmd/html/d/cppcomplex.html --- dmd-0.174/dmd/html/d/cppcomplex.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/cppcomplex.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/cppdbc.html dmd-0.175/dmd/html/d/cppdbc.html --- dmd-0.174/dmd/html/d/cppdbc.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/cppdbc.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/cppstrings.html dmd-0.175/dmd/html/d/cppstrings.html --- dmd-0.174/dmd/html/d/cppstrings.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/cppstrings.html 2006-11-15 02:42:22.000000000 +0100 @@ -33,7 +33,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/cpptod.html dmd-0.175/dmd/html/d/cpptod.html --- dmd-0.174/dmd/html/d/cpptod.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/cpptod.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/ctod.html dmd-0.175/dmd/html/d/ctod.html --- dmd-0.174/dmd/html/d/ctod.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/ctod.html 2006-11-15 02:42:22.000000000 +0100 @@ -33,7 +33,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/dbc.html dmd-0.175/dmd/html/d/dbc.html --- dmd-0.174/dmd/html/d/dbc.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/dbc.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:54 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/dcompiler.html dmd-0.175/dmd/html/d/dcompiler.html --- dmd-0.174/dmd/html/d/dcompiler.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/dcompiler.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:23 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/ddoc.html dmd-0.175/dmd/html/d/ddoc.html --- dmd-0.174/dmd/html/d/ddoc.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/ddoc.html 2006-11-15 02:42:24.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:23 2006
    diff -uNr dmd-0.174/dmd/html/d/declaration.html dmd-0.175/dmd/html/d/declaration.html --- dmd-0.174/dmd/html/d/declaration.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/declaration.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    @@ -231,6 +231,7 @@ extern final override + scope static synchronized @@ -375,15 +376,6 @@ The implicitly inferred type is statically bound to the declaration at compile time, not run time. - An implicit type inference for a class reference is not - an auto declaration, even if the auto storage class is used: - -
    class C { ... }
    -
    -auto c = new C();   // c is not RAII
    -auto C d = new C(); // c is automatically destructed at the end of its scope
    -
    -

    Type Defining

    diff -uNr dmd-0.174/dmd/html/d/dlinks.html dmd-0.175/dmd/html/d/dlinks.html --- dmd-0.174/dmd/html/d/dlinks.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/dlinks.html 2006-11-15 02:42:22.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/dll.html dmd-0.175/dmd/html/d/dll.html --- dmd-0.174/dmd/html/d/dll.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/dll.html 2006-11-15 02:42:24.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:23 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/download.html dmd-0.175/dmd/html/d/download.html --- dmd-0.174/dmd/html/d/download.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/download.html 2006-11-15 02:42:26.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:57 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/dstyle.html dmd-0.175/dmd/html/d/dstyle.html --- dmd-0.174/dmd/html/d/dstyle.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/dstyle.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:23 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/entity.html dmd-0.175/dmd/html/d/entity.html --- dmd-0.174/dmd/html/d/entity.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/entity.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:23 2006
    diff -uNr dmd-0.174/dmd/html/d/enum.html dmd-0.175/dmd/html/d/enum.html --- dmd-0.174/dmd/html/d/enum.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/enum.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:54 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/errors.html dmd-0.175/dmd/html/d/errors.html --- dmd-0.174/dmd/html/d/errors.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/errors.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/exception-safe.html dmd-0.175/dmd/html/d/exception-safe.html --- dmd-0.174/dmd/html/d/exception-safe.html 2006-11-10 00:04:00.000000000 +0100 +++ dmd-0.175/dmd/html/d/exception-safe.html 2006-11-15 02:42:26.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Fri Nov 10 00:03:58 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/expression.html dmd-0.175/dmd/html/d/expression.html --- dmd-0.174/dmd/html/d/expression.html 2006-11-09 19:47:06.000000000 +0100 +++ dmd-0.175/dmd/html/d/expression.html 2006-11-21 00:04:46.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Thu Nov 9 19:47:04 2006 +
    Last update Tue Nov 21 00:04:43 2006
    @@ -138,8 +138,8 @@ tested, or ignored. Expressions can also have side effects.
    StringLiterals:
    -	StringLiteral
    -	StringLiterals StringLiteral
    +	StringLiteral
    +	StringLiterals StringLiteral
     
     ArgumentList:
     	AssignExpression
    @@ -752,37 +752,51 @@
     	function after the size argument.
     	

    +

    If a NewExpression is used as an initializer for + a function local variable with scope storage class, + and the ArgumentList to new is empty, then + the instance is allocated on the stack rather than the heap + or using the class specific allocator. +

    +

    Delete Expressions

    DeleteExpression:
     	delete UnaryExpression
     
    - If the UnaryExpression is a class object reference, and +

    If the UnaryExpression is a class object reference, and there is a destructor for that class, the destructor is called for that object instance. -

    +

    - Next, if the UnaryExpression is a class object reference, or +

    Next, if the UnaryExpression is a class object reference, or a pointer to a struct instance, and the class or struct has overloaded operator delete, then that operator delete is called for that class object instance or struct instance. -

    +

    - Otherwise, the garbage collector is called to immediately free the +

    Otherwise, the garbage collector is called to immediately free the memory allocated for the class instance or struct instance. If the garbage collector was not used to allocate the memory for the instance, undefined behavior will result. -

    +

    - If the UnaryExpression is a pointer or a dynamic array, +

    If the UnaryExpression is a pointer or a dynamic array, the garbage collector is called to immediately release the memory. If the garbage collector was not used to allocate the memory for the instance, undefined behavior will result. -

    +

    - The pointer, dynamic array, or reference is set to null +

    The pointer, dynamic array, or reference is set to null after the delete is performed. +

    + +

    If UnaryExpression is a variable allocated + on the stack, the class destructor (if any) is called for that + instance. Neither the garbage collector nor any class deallocator + is called. +

    Cast Expressions

    @@ -1424,6 +1438,9 @@ interface Type + super + TypeTuple of base classes and interfaces + enum the base type of the enum diff -uNr dmd-0.174/dmd/html/d/faq.html dmd-0.175/dmd/html/d/faq.html --- dmd-0.174/dmd/html/d/faq.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/faq.html 2006-11-20 00:21:22.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Mon Nov 20 00:21:20 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + @@ -226,7 +228,7 @@
  • When should I use a foreach loop rather than a for?
  • Why cannot D code directly call existing C++ code?
  • Why doesn't D use reference counting for garbage collection?
  • - +
  • Isn't garbage collection slow and non-deterministic?

  • Why the name D?

    @@ -866,6 +868,19 @@ handles.

    +

    Isn't garbage collection slow and non-deterministic?

    + +

    Yes, but all dynamic memory management is slow and + non-deterministic, including malloc/free. + If you talk to the people who actually do real time + software, they don't use malloc/free precisely because they are not + deterministic. They preallocate all data. + However, the use of GC instead of malloc enables advanced language + constructs (especially, more powerful array syntax), which greatly + reduce the number of memory allocations which need to be made. + This can mean that GC is actually faster than explict management. +

    + diff -uNr dmd-0.174/dmd/html/d/float.html dmd-0.175/dmd/html/d/float.html --- dmd-0.174/dmd/html/d/float.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/float.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/function.html dmd-0.175/dmd/html/d/function.html --- dmd-0.174/dmd/html/d/function.html 2006-11-07 01:22:06.000000000 +0100 +++ dmd-0.175/dmd/html/d/function.html 2006-11-21 00:36:42.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Tue Nov 7 01:22:05 2006 +
    Last update Tue Nov 21 00:36:41 2006
    @@ -524,9 +524,10 @@ _arguments gives the number of arguments and the type of each, enabling the creation of typesafe variadic functions. -
    class FOO { }
    +
    class Foo { int x = 3; }
    +class Bar { long y = 4; }
     
    -void foo(int x, ...)
    +void printargs(int x, ...)
     {
         printf("%d arguments\n", _arguments.length);
         for (int i = 0; i < _arguments.length; i++)
    @@ -534,28 +535,34 @@
     
     	if (_arguments[i] == typeid(int))
     	{
    -	    int j = *cast(int *)_argptr;
    -	    _argptr += int.sizeof;
    +	    int j = *cast(int *)_argptr;
    +	    _argptr += int.sizeof;
     	    printf("\t%d\n", j);
     	}
     	else if (_arguments[i] == typeid(long))
     	{
    -	    long j = *cast(long *)_argptr;
    -	    _argptr += long.sizeof;
    +	    long j = *cast(long *)_argptr;
    +	    _argptr += long.sizeof;
     	    printf("\t%lld\n", j);
     	}
     	else if (_arguments[i] == typeid(double))
     	{
    -	    double d = *cast(double *)_argptr;
    -	    _argptr += double.sizeof;
    +	    double d = *cast(double *)_argptr;
    +	    _argptr += double.sizeof;
     	    printf("\t%g\n", d);
     	}
    -	else if (_arguments[i] == typeid(FOO))
    +	else if (_arguments[i] == typeid(Foo))
     	{
    -	    FOO f = *cast(FOO*)_argptr;
    -	    _argptr += FOO.sizeof;
    +	    Foo f = *cast(Foo*)_argptr;
    +	    _argptr += Foo.sizeof;
     	    printf("\t%p\n", f);
     	}
    +	else if (_arguments[i] == typeid(Bar))
    +	{
    +	    Bar b = *cast(Bar*)_argptr;
    +	    _argptr += Bar.sizeof;
    +	    printf("\t%p\n", b);
    +	}
     	else
     	    assert(0);
         }
    @@ -563,25 +570,28 @@
     
     void main()
     {
    -    FOO f = new FOO();
    +    Foo f = new Foo();
    +    Bar b = new Bar();
     
         printf("%p\n", f);
    -    foo(1, 2, 3L, 4.5, f);
    +    printargs(1, 2, 3L, 4.5, f, b);
     }
     
    which prints: -
    00870FD0
    -4 arguments
    +
    00870FE0
    +5 arguments
     int
    -	2
    +        2
     long
    -	3
    +        3
     double
    -	4.5
    -FOO
    -	00870FD0
    +        4.5
    +Foo
    +        00870FE0
    +Bar
    +        00870FD0
     
    To protect against the vagaries of stack layouts on different diff -uNr dmd-0.174/dmd/html/d/future.html dmd-0.175/dmd/html/d/future.html --- dmd-0.174/dmd/html/d/future.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/future.html 2006-11-20 14:18:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Mon Nov 20 14:18:54 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + @@ -188,12 +190,14 @@

    Future Directions

    - The following new features for D are planned, but the details have - not been worked out: +

    The release of D version 1.0 is scheduled for Jan 1, 2007.

    + +

    The following new features for D are planned for post 1.0, + but the details have + not been worked out:

    1. Template inheritance.
    2. Array operations.
    3. -
    4. Array literal expressions.
    diff -uNr dmd-0.174/dmd/html/d/garbage.html dmd-0.175/dmd/html/d/garbage.html --- dmd-0.174/dmd/html/d/garbage.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/garbage.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@
    -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/glossary.html dmd-0.175/dmd/html/d/glossary.html --- dmd-0.174/dmd/html/d/glossary.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/glossary.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:23 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/html.html dmd-0.175/dmd/html/d/html.html --- dmd-0.174/dmd/html/d/html.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/html.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/htod.html dmd-0.175/dmd/html/d/htod.html --- dmd-0.174/dmd/html/d/htod.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/htod.html 2006-11-15 02:42:26.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/htomodule.html dmd-0.175/dmd/html/d/htomodule.html --- dmd-0.174/dmd/html/d/htomodule.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/htomodule.html 2006-11-15 02:42:24.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:23 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/iasm.html dmd-0.175/dmd/html/d/iasm.html --- dmd-0.174/dmd/html/d/iasm.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/iasm.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/index.html dmd-0.175/dmd/html/d/index.html --- dmd-0.174/dmd/html/d/index.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/index.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/interface.html dmd-0.175/dmd/html/d/interface.html --- dmd-0.174/dmd/html/d/interface.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/interface.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/interfaceToC.html dmd-0.175/dmd/html/d/interfaceToC.html --- dmd-0.174/dmd/html/d/interfaceToC.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/interfaceToC.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:23 2006
    diff -uNr dmd-0.174/dmd/html/d/intro.html dmd-0.175/dmd/html/d/intro.html --- dmd-0.174/dmd/html/d/intro.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/intro.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/lazy-evaluation.html dmd-0.175/dmd/html/d/lazy-evaluation.html --- dmd-0.174/dmd/html/d/lazy-evaluation.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/lazy-evaluation.html 2006-11-15 02:42:26.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:57 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/lex.html dmd-0.175/dmd/html/d/lex.html --- dmd-0.174/dmd/html/d/lex.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/lex.html 2006-11-18 14:13:40.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Fri Nov 17 23:25:52 2006
    @@ -342,7 +342,7 @@
    Token:
     	Identifier
    -	StringLiteral
    +	StringLiteral
     	CharacterLiteral
     	IntegerLiteral
     	FloatLiteral
    @@ -378,7 +378,6 @@
     	>>>
     	!
     	!=
    -	!==
     	!<>
     	!<>=
     	!<
    @@ -399,7 +398,6 @@
     	$
     	=
     	==
    -	===
     	*
     	*=
     	%
    @@ -441,7 +439,7 @@
     	Identifiers can be arbitrarily long, and are case sensitive.
     	Identifiers starting with __ (two underscores) are reserved.
     
    -

    String Literals

    +

    String Literals

    StringLiteral:
     	WysiwygString
    diff -uNr dmd-0.174/dmd/html/d/lisp-java-d.html dmd-0.175/dmd/html/d/lisp-java-d.html
    --- dmd-0.174/dmd/html/d/lisp-java-d.html	2006-11-01 22:28:58.000000000 +0100
    +++ dmd-0.175/dmd/html/d/lisp-java-d.html	2006-11-15 02:42:26.000000000 +0100
    @@ -31,7 +31,7 @@
     	
     	
     
    -	
    Last update Wed Nov 1 22:28:57 2006 +
    Last update Wed Nov 15 02:42:24 2006
    diff -uNr dmd-0.174/dmd/html/d/memory.html dmd-0.175/dmd/html/d/memory.html --- dmd-0.174/dmd/html/d/memory.html 2006-11-14 14:53:52.000000000 +0100 +++ dmd-0.175/dmd/html/d/memory.html 2006-11-20 23:53:28.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Tue Nov 14 14:53:50 2006 +
    Last update Mon Nov 20 23:53:27 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + @@ -582,54 +584,29 @@

    Allocating Class Instances On The Stack

    - Allocating class instances on the stack using an - overridden new and delete is useful for temporary - objects that are to be automatically deallocated when the function - is exited. No special handling is needed to account for - function termination via stack unwinding from an exception. - To work, they must not have destructors, since such a destructor - would never get called. -

    +

    Class instances are normally allocated on the garbage + collected heap. However, if they:

    - To have a class allocated on the stack that has a destructor, this - is the same as a declaration with the - scope attribute. - Although the current implementation does not put such objects on - the stack, future ones can. +
    • are allocated as local symbols in a function
    • +
    • are allocated using new
    • +
    • use new with no arguments
    • +
    • have the scope storage class
    • +
    -
    import std.c.stdlib;
    +	

    then they are allocated on the stack. This is more efficient + than doing an allocate/free cycle on the instance. But be + careful that any reference to the object does not survive + the return of the function.

    -class Foo -{ - new(size_t sz, void *p) - { - return p; - } +
    class C { ... }
     
    -    delete(void* p)
    -    {
    -	assert(0);
    -    }
    -}
    -
    -void test()
    -{
    -    Foo f = new(alloca(Foo.classinfo.init.length)) Foo;
    -    ...
    -}
    -
    +scope c = new C(); // c is allocated on the stack +
    -
    • There is no need to check for a failure of alloca() and - throw an exception, since by definition alloca() will generate - a stack overflow exception if it overflows. - -
    • There is no need for a call to std.gc.addRange() or - std.gc.removeRange() - since the GC automatically scans the stack anyway. +

      If the class has a destructor, then that destructor is + guaranteed to be run when the class object goes out of scope, + even if the scope is exited via an exception.

      -
    • The dummy delete() function is to ensure that no - attempts are made to delete a stack based object. -

    Allocating Uninitialized Arrays On The Stack

    diff -uNr dmd-0.174/dmd/html/d/mixin.html dmd-0.175/dmd/html/d/mixin.html --- dmd-0.174/dmd/html/d/mixin.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/mixin.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:54 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/module.html dmd-0.175/dmd/html/d/module.html --- dmd-0.174/dmd/html/d/module.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/module.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/operatoroverloading.html dmd-0.175/dmd/html/d/operatoroverloading.html --- dmd-0.174/dmd/html/d/operatoroverloading.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/operatoroverloading.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:54 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/overview.html dmd-0.175/dmd/html/d/overview.html --- dmd-0.174/dmd/html/d/overview.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/overview.html 2006-11-15 02:42:22.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/phobos/object.html dmd-0.175/dmd/html/d/phobos/object.html --- dmd-0.174/dmd/html/d/phobos/object.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/object.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:26 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/phobos.html dmd-0.175/dmd/html/d/phobos/phobos.html --- dmd-0.174/dmd/html/d/phobos/phobos.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/phobos.html 2006-11-25 00:31:30.000000000 +0100 @@ -29,7 +29,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -95,6 +95,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_base64.html dmd-0.175/dmd/html/d/phobos/std_base64.html --- dmd-0.174/dmd/html/d/phobos/std_base64.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_base64.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:26 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_bitarray.html dmd-0.175/dmd/html/d/phobos/std_bitarray.html --- dmd-0.174/dmd/html/d/phobos/std_bitarray.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_bitarray.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_boxer.html dmd-0.175/dmd/html/d/phobos/std_boxer.html --- dmd-0.174/dmd/html/d/phobos/std_boxer.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_boxer.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_fenv.html dmd-0.175/dmd/html/d/phobos/std_c_fenv.html --- dmd-0.174/dmd/html/d/phobos/std_c_fenv.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_fenv.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_math.html dmd-0.175/dmd/html/d/phobos/std_c_math.html --- dmd-0.174/dmd/html/d/phobos/std_c_math.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_math.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_compiler.html dmd-0.175/dmd/html/d/phobos/std_compiler.html --- dmd-0.174/dmd/html/d/phobos/std_compiler.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_compiler.html 2006-11-25 00:31:28.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:26 2006
    @@ -98,6 +98,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_conv.html dmd-0.175/dmd/html/d/phobos/std_conv.html --- dmd-0.174/dmd/html/d/phobos/std_conv.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_conv.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_cover.html dmd-0.175/dmd/html/d/phobos/std_cover.html --- dmd-0.174/dmd/html/d/phobos/std_cover.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_cover.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_process.html dmd-0.175/dmd/html/d/phobos/std_c_process.html --- dmd-0.174/dmd/html/d/phobos/std_c_process.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_process.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_cpuid.html dmd-0.175/dmd/html/d/phobos/std_cpuid.html --- dmd-0.174/dmd/html/d/phobos/std_cpuid.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_cpuid.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_stdarg.html dmd-0.175/dmd/html/d/phobos/std_c_stdarg.html --- dmd-0.174/dmd/html/d/phobos/std_c_stdarg.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_stdarg.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_stddef.html dmd-0.175/dmd/html/d/phobos/std_c_stddef.html --- dmd-0.174/dmd/html/d/phobos/std_c_stddef.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_stddef.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_stdio.html dmd-0.175/dmd/html/d/phobos/std_c_stdio.html --- dmd-0.174/dmd/html/d/phobos/std_c_stdio.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_stdio.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_stdlib.html dmd-0.175/dmd/html/d/phobos/std_c_stdlib.html --- dmd-0.174/dmd/html/d/phobos/std_c_stdlib.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_stdlib.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_cstream.html dmd-0.175/dmd/html/d/phobos/std_cstream.html --- dmd-0.174/dmd/html/d/phobos/std_cstream.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_cstream.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_string.html dmd-0.175/dmd/html/d/phobos/std_c_string.html --- dmd-0.174/dmd/html/d/phobos/std_c_string.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_string.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_time.html dmd-0.175/dmd/html/d/phobos/std_c_time.html --- dmd-0.174/dmd/html/d/phobos/std_c_time.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_time.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_ctype.html dmd-0.175/dmd/html/d/phobos/std_ctype.html --- dmd-0.174/dmd/html/d/phobos/std_ctype.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_ctype.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_c_wcharh.html dmd-0.175/dmd/html/d/phobos/std_c_wcharh.html --- dmd-0.174/dmd/html/d/phobos/std_c_wcharh.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_c_wcharh.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:29 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_date.html dmd-0.175/dmd/html/d/phobos/std_date.html --- dmd-0.174/dmd/html/d/phobos/std_date.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_date.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_demangle.html dmd-0.175/dmd/html/d/phobos/std_demangle.html --- dmd-0.174/dmd/html/d/phobos/std_demangle.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_demangle.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_file.html dmd-0.175/dmd/html/d/phobos/std_file.html --- dmd-0.174/dmd/html/d/phobos/std_file.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_file.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:26 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_format.html dmd-0.175/dmd/html/d/phobos/std_format.html --- dmd-0.174/dmd/html/d/phobos/std_format.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_format.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:26 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_gc.html dmd-0.175/dmd/html/d/phobos/std_gc.html --- dmd-0.174/dmd/html/d/phobos/std_gc.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_gc.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_intrinsic.html dmd-0.175/dmd/html/d/phobos/std_intrinsic.html --- dmd-0.174/dmd/html/d/phobos/std_intrinsic.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_intrinsic.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_math.html dmd-0.175/dmd/html/d/phobos/std_math.html --- dmd-0.174/dmd/html/d/phobos/std_math.html 2006-11-14 12:05:28.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_math.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:27 2006 +
    Last update Sat Nov 25 00:31:25 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_md5.html dmd-0.175/dmd/html/d/phobos/std_md5.html --- dmd-0.174/dmd/html/d/phobos/std_md5.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_md5.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_mmfile.html dmd-0.175/dmd/html/d/phobos/std_mmfile.html --- dmd-0.174/dmd/html/d/phobos/std_mmfile.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_mmfile.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_openrj.html dmd-0.175/dmd/html/d/phobos/std_openrj.html --- dmd-0.174/dmd/html/d/phobos/std_openrj.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_openrj.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_outbuffer.html dmd-0.175/dmd/html/d/phobos/std_outbuffer.html --- dmd-0.174/dmd/html/d/phobos/std_outbuffer.html 2006-11-14 12:05:28.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_outbuffer.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:27 2006 +
    Last update Sat Nov 25 00:31:26 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_outofmemory.html dmd-0.175/dmd/html/d/phobos/std_outofmemory.html --- dmd-0.174/dmd/html/d/phobos/std_outofmemory.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_outofmemory.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_path.html dmd-0.175/dmd/html/d/phobos/std_path.html --- dmd-0.174/dmd/html/d/phobos/std_path.html 2006-11-14 12:05:28.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_path.html 2006-11-25 00:31:26.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:27 2006 +
    Last update Sat Nov 25 00:31:25 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_process.html dmd-0.175/dmd/html/d/phobos/std_process.html --- dmd-0.174/dmd/html/d/phobos/std_process.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_process.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_random.html dmd-0.175/dmd/html/d/phobos/std_random.html --- dmd-0.174/dmd/html/d/phobos/std_random.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_random.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:26 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_regexp.html dmd-0.175/dmd/html/d/phobos/std_regexp.html --- dmd-0.174/dmd/html/d/phobos/std_regexp.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_regexp.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_signals.html dmd-0.175/dmd/html/d/phobos/std_signals.html --- dmd-0.174/dmd/html/d/phobos/std_signals.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_signals.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_socket.html dmd-0.175/dmd/html/d/phobos/std_socket.html --- dmd-0.174/dmd/html/d/phobos/std_socket.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_socket.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:29 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • @@ -974,50 +976,6 @@ -
    class TcpSocket: std.socket.Socket; -
    -
    TcpSocket is a shortcut class for a TCP Socket. -

    - -
    this(AddressFamily family); -
    -
    Constructs a blocking TCP Socket. -

    - -
    -
    this(); -
    -
    Constructs a blocking TCP Socket. -

    - -
    -
    this(Address connectTo); -
    -
    Constructs a blocking TCP Socket and connects to an InternetAddress. -

    - -
    -
    -
    -
    class UdpSocket: std.socket.Socket; -
    -
    UdpSocket is a shortcut class for a UDP Socket. -

    - -
    this(AddressFamily family); -
    -
    Constructs a blocking UDP Socket. -

    - -
    -
    this(); -
    -
    Constructs a blocking UDP Socket. -

    - -
    -
    -
    diff -uNr dmd-0.174/dmd/html/d/phobos/std_socketstream.html dmd-0.175/dmd/html/d/phobos/std_socketstream.html --- dmd-0.174/dmd/html/d/phobos/std_socketstream.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_socketstream.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_stdint.html dmd-0.175/dmd/html/d/phobos/std_stdint.html --- dmd-0.174/dmd/html/d/phobos/std_stdint.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_stdint.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_stdio.html dmd-0.175/dmd/html/d/phobos/std_stdio.html --- dmd-0.174/dmd/html/d/phobos/std_stdio.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_stdio.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_stream.html dmd-0.175/dmd/html/d/phobos/std_stream.html --- dmd-0.174/dmd/html/d/phobos/std_stream.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_stream.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:27 2006 +
    Last update Sat Nov 25 00:31:26 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_string.html dmd-0.175/dmd/html/d/phobos/std_string.html --- dmd-0.174/dmd/html/d/phobos/std_string.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_string.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:26 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_system.html dmd-0.175/dmd/html/d/phobos/std_system.html --- dmd-0.174/dmd/html/d/phobos/std_system.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_system.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_thread.html dmd-0.175/dmd/html/d/phobos/std_thread.html --- dmd-0.174/dmd/html/d/phobos/std_thread.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_thread.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_traits.html dmd-0.175/dmd/html/d/phobos/std_traits.html --- dmd-0.174/dmd/html/d/phobos/std_traits.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_traits.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • @@ -165,6 +167,27 @@
    +
    template BaseTypeTuple(A)
    +
    Get a TypeTuple of the base class and base interfaces of + this class or interface. +

    +Example:
    +
     import std.traits, std.typetuple, std.stdio;
    + interface I { }
    + class A { }
    + class B : A, I { }
    +
    + void main()
    + {
    +     alias BaseTypeTuple!(B) TL;
    +     writefln(typeid(TL));	// prints: (A,I)
    + }
    +
    + +

    + +
    +
    diff -uNr dmd-0.174/dmd/html/d/phobos/std_typetuple.html dmd-0.175/dmd/html/d/phobos/std_typetuple.html --- dmd-0.174/dmd/html/d/phobos/std_typetuple.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_typetuple.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_uni.html dmd-0.175/dmd/html/d/phobos/std_uni.html --- dmd-0.174/dmd/html/d/phobos/std_uni.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_uni.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_uri.html dmd-0.175/dmd/html/d/phobos/std_uri.html --- dmd-0.174/dmd/html/d/phobos/std_uri.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_uri.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_utf.html dmd-0.175/dmd/html/d/phobos/std_utf.html --- dmd-0.174/dmd/html/d/phobos/std_utf.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_utf.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_windows_charset.html dmd-0.175/dmd/html/d/phobos/std_windows_charset.html --- dmd-0.174/dmd/html/d/phobos/std_windows_charset.html 2006-11-14 12:05:32.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_windows_charset.html 2006-11-25 00:31:30.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:30 2006 +
    Last update Sat Nov 25 00:31:28 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_zip.html dmd-0.175/dmd/html/d/phobos/std_zip.html --- dmd-0.174/dmd/html/d/phobos/std_zip.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_zip.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/phobos/std_zlib.html dmd-0.175/dmd/html/d/phobos/std_zlib.html --- dmd-0.174/dmd/html/d/phobos/std_zlib.html 2006-11-14 12:05:30.000000000 +0100 +++ dmd-0.175/dmd/html/d/phobos/std_zlib.html 2006-11-25 00:31:28.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Tue Nov 14 12:05:28 2006 +
    Last update Sat Nov 25 00:31:27 2006
    @@ -94,6 +94,8 @@
  • std.string
  • std.system
  • std.thread
  • +
  • std.traits
  • +
  • std.typetuple
  • std.uni
  • std.uri
  • std.utf
  • diff -uNr dmd-0.174/dmd/html/d/portability.html dmd-0.175/dmd/html/d/portability.html --- dmd-0.174/dmd/html/d/portability.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/portability.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/pragma.html dmd-0.175/dmd/html/d/pragma.html --- dmd-0.174/dmd/html/d/pragma.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/pragma.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:54 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/pretod.html dmd-0.175/dmd/html/d/pretod.html --- dmd-0.174/dmd/html/d/pretod.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/pretod.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/property.html dmd-0.175/dmd/html/d/property.html --- dmd-0.174/dmd/html/d/property.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/property.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/rationale.html dmd-0.175/dmd/html/d/rationale.html --- dmd-0.174/dmd/html/d/rationale.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/rationale.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:23 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/regular-expression.html dmd-0.175/dmd/html/d/regular-expression.html --- dmd-0.174/dmd/html/d/regular-expression.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/regular-expression.html 2006-11-15 02:42:26.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:57 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/statement.html dmd-0.175/dmd/html/d/statement.html --- dmd-0.174/dmd/html/d/statement.html 2006-11-10 02:00:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/statement.html 2006-11-18 02:44:56.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Fri Nov 10 02:00:54 2006 +
    Last update Sat Nov 18 02:44:54 2006
    @@ -427,7 +427,7 @@ test, and increment clauses.
    ForStatement:
    -	for (Initialize Test; Increment) NoScopeNonEmptyStatement
    +	for (Initialize Test; Increment) ScopeStatement
     
     Initialize:
     	;
    @@ -442,7 +442,7 @@
     	Expression
     
    - Initializer is executed. +

    Initializer is executed. Test is evaluated and must have a type that can be converted to a boolean. If it's true the statement is executed. After the statement is executed, @@ -450,15 +450,17 @@ Then Test is evaluated again, and if true the statement is executed again. This continues until the Test evaluates to false. -

    +

    - A BreakStatement will exit the loop. +

    A BreakStatement will exit the loop. A ContinueStatement will transfer directly to the Increment. -

    +

    +

    A ForStatement creates a new scope. If Initializer declares a variable, that variable's scope - extends through the end of NoScopeNonEmptyStatement. For example: + extends through the end of the for statement. For example: +

    for (int i = 0; i < 10; i++)
     	foo(i);
    diff -uNr dmd-0.174/dmd/html/d/struct.html dmd-0.175/dmd/html/d/struct.html
    --- dmd-0.174/dmd/html/d/struct.html	2006-11-14 14:53:52.000000000 +0100
    +++ dmd-0.175/dmd/html/d/struct.html	2006-11-15 02:42:24.000000000 +0100
    @@ -32,7 +32,7 @@
     	
     	
     
    -	
    Last update Tue Nov 14 14:53:50 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/template.html dmd-0.175/dmd/html/d/template.html --- dmd-0.174/dmd/html/d/template.html 2006-11-09 15:56:24.000000000 +0100 +++ dmd-0.175/dmd/html/d/template.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Thu Nov 9 15:56:23 2006 +
    Last update Wed Nov 15 02:42:22 2006
    @@ -686,7 +686,7 @@

    A Tuple whose elements consist entirely of types is called a TypeTuple. - A Tuple whose elements consist entirely of types is + A Tuple whose elements consist entirely of expressions is called an ExpressionTuple.

    diff -uNr dmd-0.174/dmd/html/d/templates-revisited.html dmd-0.175/dmd/html/d/templates-revisited.html --- dmd-0.174/dmd/html/d/templates-revisited.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/templates-revisited.html 2006-11-15 02:42:26.000000000 +0100 @@ -33,7 +33,7 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -105,6 +105,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/tuple.html dmd-0.175/dmd/html/d/tuple.html --- dmd-0.174/dmd/html/d/tuple.html 1970-01-01 01:00:00.000000000 +0100 +++ dmd-0.175/dmd/html/d/tuple.html 2006-11-20 00:21:22.000000000 +0100 @@ -0,0 +1,581 @@ + + + + + + + + + + +D Programming Language - Tuples + + + + + +
    + www.digitalmars.com + +
    + +
    + +
    Last update Mon Nov 20 00:21:21 2006 +
    +
    + + + + + + +
    +

    Tuples

    + +

    A tuple is a sequence of elements. Those elements can + be types, expressions, or aliases. + The number and elements of a tuple are fixed at compile time; + they cannot be changed at run time. +

    + +

    Tuples have characteristics of both + structs and arrays. Like structs, the tuple + elements can be of different types. Like arrays, + the elements can be accessed via indexing. +

    + +

    So how does one construct a tuple? There isn't a specific + tuple literal syntax. But since variadic template parameters + create tuples, we can define a template to create one: +

    + +
    template Tuple(E...)
    +{
    +    alias E Tuple;
    +}
    +
    + +

    and it's used like:

    + +
    Tuple!(int, long, float)	// create a tuple of 3 types
    +Tuple!(3, 7, 'c')		// create a tuple of 3 expressions
    +Tuple!(int, 8)			// create a tuple of a type and an expression
    +
    + +

    In order to symbolically refer to a tuple, use an alias:

    + +
    alias Tuple!(float, float, 3) TP; // TP is now a tuple of two floats and 3
    +
    + +

    Tuples can be used as arguments to templates, and if so + they are 'flattened' out into a list of arguments. + This makes it straightforward to append a new element to + an existing tuple or concatenate tuples:

    + +
    alias Tuple!(TP, 8) TR;  // TR is now float,float,3,8
    +alias Tuple!(TP, TP) TS; // TS is float,float,3,float,float,3
    +
    + +

    Tuples share many characteristics with arrays. + For starters, the number of elements in a tuple can + be retrieved with the .length property:

    + +
    TP.length	// evaluates to 3
    +
    + +

    Tuples can be indexed:

    + +
    TP[1] f = TP[2];	// f is declared as a float and initialized to 3
    +
    + +

    and even sliced:

    + +
    alias TP[0..length-1] TQ; // TQ is now the same as Tuple!(float, float)
    +
    + +

    Yes, length is defined within the [ ]s. + There is one restriction: the indices for indexing and slicing + must be evaluatable at compile time.

    + +
    void foo(int i)
    +{
    +    TQ[i] x;		// error, i is not constant
    +}
    +
    + +

    These make it simple to produce the 'head' and 'tail' + of a tuple. The head is just TP[0], the tail + is TP[1 .. length]. + Given the head and tail, mix with a little conditional + compilation, and we can implement some classic recursive + algorithms with templates. + For example, this template returns a tuple consisting + of the trailing type arguments TL with the first occurrence + of the first type argument T removed: +

    +
    template Erase(T, TL...)
    +{
    +    static if (TL.length == 0)
    +	// 0 length tuple, return self
    +        alias TL Erase;
    +    else static if (is(T == TL[0]))
    +	// match with first in tuple, return tail
    +        alias TL[1 .. length] Erase;
    +    else
    +	// no match, return head concatenated with recursive tail operation
    +        alias Tuple!(TL[0], Erase!(T, TL[1 .. length])) Erase;
    +}
    +
    + +

    Type Tuples

    + +

    If a tuple's elements are solely types, + it is called a TypeTuple + (sometimes called a type list). + Since function parameter lists are a list of types, + a type tuple can be retrieved from them. + One way is using an IsExpression: +

    + +
    int foo(int x, long y);
    +
    +...
    +if (is(foo P == function))
    +    alias P TP;
    +// TP is now the same as Tuple!(int, long)
    +
    + +

    This is generalized in the template + std.traits.ParameterTypeTuple: +

    + +
    import std.traits;
    +
    +...
    +alias ParameterTypeTuple!(foo) TP;	// TP is the tuple (int, long)
    +
    + +

    TypeTuples can be used to declare a function:

    + +
    float bar(TP);	// same as float bar(int, long)
    +
    + +

    If implicit function template instantiation is being done, + the type tuple representing the parameter types can be deduced: +

    +
    int foo(int x, long y);
    +
    +void Bar(R, P...)(R function(P))
    +{
    +    writefln("return type is ", typeid(R));
    +    writefln("parameter types are ", typeid(P));
    +}
    +
    +...
    +Bar(&foo);
    +
    + +

    Prints:

    + +
    return type is int
    +parameter types are (int,long)
    +
    + +

    Type deduction can be used to create a function that + takes an arbitrary number and type of arguments:

    + +
    void Abc(P...)(P p)
    +{
    +    writefln("parameter types are ", typeid(P));
    +}
    +
    +Abc(3, 7L, 6.8);
    +
    + +

    Prints:

    + +
    parameter types are (int,long,double)
    +
    + +

    For a more comprehensive treatment of this aspect, see + Variadic Templates. +

    + + +

    Expression Tuples

    + +

    If a tuple's elements are solely expressions, + it is called an ExpressionTuple. + The Tuple template can be used to create one: +

    + +
    alias Tuple!(3, 7L, 6.8) ET;
    +
    +...
    +writefln(ET);            // prints 376.8
    +writefln(ET[1]);         // prints 7
    +writefln(ET[1..length]); // prints 76.8
    +
    + +

    It can be used to create an array literal:

    + +
    alias Tuple!(3, 7, 6) AT;
    +
    +...
    +int[] a = [AT];		// same as [3,7,6]
    +
    + +

    The data fields of a struct or class can be + turned into an expression tuple using the .tupleof + property:

    + +
    struct S { int x; long y; }
    +
    +void foo(int a, long b)
    +{
    +    writefln(a, b);
    +}
    +
    +...
    +S s;
    +s.x = 7;
    +s.y = 8;
    +foo(s.x, s.y);	// prints 78
    +foo(s.tupleof);	// prints 78
    +s.tupleof[1] = 9;
    +s.tupleof[0] = 10;
    +foo(s.tupleof); // prints 109
    +s.tupleof[2] = 11;  // error, no third field of S
    +
    + +

    A type tuple can be created from the data fields + of a struct using typeof:

    + +
    writefln(typeid(typeof(S.tupleof)));	// prints (int,long)
    +
    + +

    This is encapsulated in the template + std.traits.FieldTypeTuple. +

    + +

    Looping

    + +

    While the head-tail style of functional programming works + with tuples, it's often more convenient to use a loop. + The ForeachStatement can loop over either TypeTuples + or ExpressionTuples. +

    + +
    alias Tuple!(int, long, float) TL;
    +foreach (i, T; TL)
    +    writefln("TL[%d] = ", i, typeid(T));
    +
    +alias Tuple!(3, 7L, 6.8) ET;
    +foreach (i, E; ET)
    +    writefln("ET[%d] = ", i, E);
    +
    + +

    Prints:

    + +
    TL[0] = int
    +TL[1] = long
    +TL[2] = float
    +ET[0] = 3
    +ET[1] = 7
    +ET[2] = 6.8
    +
    + +

    Tuple Declarations

    + +

    A variable declared with a TypeTuple becomes an + ExpressionTuple:

    + +
    alias Tuple!(int, long) TL;
    +
    +void foo(TL tl)
    +{
    +    writefln(tl, tl[1]);
    +}
    +
    +foo(1, 6L);	// prints 166
    +
    + +

    Putting It All Together

    + +

    These capabilities can be put together to implement + a template that will encapsulate all the arguments to + a function, and return a delegate that will call the function + with those arguments.

    + +
    R delegate() CurryAll(Dummy=void, R, U...)(R function(U) dg, U args)
    +{
    +    struct Foo
    +    {
    +	typeof(dg) dg_m;
    +	U args_m;
    +
    +	R bar()
    +	{
    +	    return dg_m(args_m);
    +	}
    +    }
    +
    +    Foo* f = new Foo;
    +    f.dg_m = dg;
    +    foreach (i, arg; args)
    +	f.args_m[i] = arg;
    +    return &f.bar;
    +}
    +
    +R delegate() CurryAll(R, U...)(R delegate(U) dg, U args)
    +{
    +    struct Foo
    +    {
    +	typeof(dg) dg_m;
    +	U args_m;
    +
    +	R bar()
    +	{
    +	    return dg_m(args_m);
    +	}
    +    }
    +
    +    Foo* f = new Foo;
    +    f.dg_m = dg;
    +    foreach (i, arg; args)
    +	f.args_m[i] = arg;
    +    return &f.bar;
    +}
    +
    +
    +void main()
    +{
    +    static int plus(int x, int y, int z)
    +    {
    +	return x + y + z;
    +    }
    +
    +    auto plus_two = CurryAll(&plus, 2, 3, 4);
    +    printf("%d\n", plus_two());
    +    assert(plus_two() == 9);
    +
    +    int minus(int x, int y, int z)
    +    {
    +	return x + y + z;
    +    }
    +
    +    auto minus_two = CurryAll(&minus, 7, 8, 9);
    +    printf("%d\n", minus_two());
    +    assert(minus_two() == 24);
    +}
    +
    + +

    The reason for the Dummy parameter is that one + cannot overload two templates with the same parameter list. + So we make them different by giving one a dummy parameter. +

    + +

    Future Directions

    + +
    • Return tuples from functions.
    • +
    • Use operators on tuples, like =, +=, etc.
    • +
    • Have tuple properties like .init which will apply + the property to each of the tuple members.
    • +
    + + + +

    +

    + + + + +
    + + + + + + + + + + diff -uNr dmd-0.174/dmd/html/d/type.html dmd-0.175/dmd/html/d/type.html --- dmd-0.174/dmd/html/d/type.html 2006-11-01 22:28:54.000000000 +0100 +++ dmd-0.175/dmd/html/d/type.html 2006-11-15 02:42:22.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:53 2006 +
    Last update Wed Nov 15 02:42:21 2006
    diff -uNr dmd-0.174/dmd/html/d/variadic-function-templates.html dmd-0.175/dmd/html/d/variadic-function-templates.html --- dmd-0.174/dmd/html/d/variadic-function-templates.html 2006-11-07 01:22:08.000000000 +0100 +++ dmd-0.175/dmd/html/d/variadic-function-templates.html 2006-11-15 02:42:26.000000000 +0100 @@ -33,7 +33,7 @@ -
    Last update Tue Nov 7 01:22:06 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -105,6 +105,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/version.html dmd-0.175/dmd/html/d/version.html --- dmd-0.174/dmd/html/d/version.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/version.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:54 2006 +
    Last update Wed Nov 15 02:42:22 2006
    diff -uNr dmd-0.174/dmd/html/d/warnings.html dmd-0.175/dmd/html/d/warnings.html --- dmd-0.174/dmd/html/d/warnings.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/warnings.html 2006-11-15 02:42:26.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/wc.html dmd-0.175/dmd/html/d/wc.html --- dmd-0.174/dmd/html/d/wc.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/wc.html 2006-11-15 02:42:24.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:23 2006
    @@ -104,6 +104,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/windbg.html dmd-0.175/dmd/html/d/windbg.html --- dmd-0.174/dmd/html/d/windbg.html 2006-11-01 22:28:58.000000000 +0100 +++ dmd-0.175/dmd/html/d/windbg.html 2006-11-15 02:42:26.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:56 2006 +
    Last update Wed Nov 15 02:42:24 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • + diff -uNr dmd-0.174/dmd/html/d/windows.html dmd-0.175/dmd/html/d/windows.html --- dmd-0.174/dmd/html/d/windows.html 2006-11-01 22:28:56.000000000 +0100 +++ dmd-0.175/dmd/html/d/windows.html 2006-11-15 02:42:24.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 1 22:28:55 2006 +
    Last update Wed Nov 15 02:42:23 2006
    @@ -103,6 +103,8 @@
  • Variadic Templates
  • +
  • Tuples
  • +