File: d.d

package info (click to toggle)
editra 0.5.30-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 9,904 kB
  • ctags: 7,945
  • sloc: python: 48,713; sql: 258; ansic: 241; sh: 187; php: 45; lisp: 38; tcl: 24; perl: 23; pascal: 21; haskell: 20; xml: 18; java: 18; cs: 18; erlang: 17; makefile: 17; cpp: 16; ruby: 16; asm: 15; csh: 9; ml: 9; ada: 9
file content (59 lines) | stat: -rw-r--r-- 1,858 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Syntax Highlighting test file for D programming language
// A single line comment
/* A multi-line comment about this file.
 * Adopted from http://en.wikipedia.org/wiki/D_%28programming_language%29
 */
 
import std.stdio;
int main(char[][] args)                 
{
    writefln("Hello World");
 
    // Strings are denoted as a dynamic array of chars 'char[]'
    // auto type inference and built-in foreach
    foreach(argc, argv; args)
    {
        auto cl = new CmdLin(argc, argv);    // OOP is supported
        writefln(cl.argnum, cl.suffix, " arg: %s", cl.argv);  // user-defined class properties.
 
        delete cl;   // Garbage Collection or explicit memory management - your choice
    }
 
    // Nested structs, classes and functions
    struct specs
    {
        // all vars automatically initialized to 0 at runtime
        int count, allocated;
        // however you can choose to avoid array initialization
        int[10000] bigarray = void;
    }
 
    specs argspecs(char[][] args)
    // Optional (built-in) function contracts.
    in
    {
        assert(args.length > 0);  // assert built in
    }
    out(result)
    {
        assert(result.count == CmdLin.total);
        assert(result.allocated > 0);
    }
    body
    {
        specs* s = new specs;
        // no need for '->'
        s.count = args.length;  // The 'length' property is number of elements.
        s.allocated = typeof(args).sizeof; // built-in properties for native types
        foreach(arg; args)
            s.allocated += arg.length * typeof(arg[0]).sizeof;
        return *s;
    }
 
    // built-in string and common string operations, eg. '~' is concatenate.
    char[] argcmsg  = "argc = %d";
    char[] allocmsg = "allocated = %d";
    writefln(argcmsg ~ ", " ~ allocmsg,
            argspecs(args).count,argspecs(args).allocated);
    return 0;
}