// This example illustrates global variable access from C#. module runme; import std.stdio; static import example; void main() { // Try to set the values of some global variables example.ivar = 42; example.svar = -31000; example.lvar = 65537; example.uivar = 123456; example.usvar = 61000; example.ulvar = 654321; example.scvar = -13; example.ucvar = 251; example.cvar = 'S'; example.fvar = 3.14159f; example.dvar = 2.1828; example.strvar = "Hello World"; example.iptrvar = example.new_int(37); example.ptptr = example.new_Point(37,42); example.name = "Bill"; // Now print out the values of the variables writefln( "Variables (printed from D):" ); writefln( "ivar = %s", example.ivar ); writefln( "svar = %s", example.svar ); writefln( "lvar = %s", example.lvar ); writefln( "uivar = %s", example.uivar ); writefln( "usvar = %s", example.usvar ); writefln( "ulvar = %s", example.ulvar ); writefln( "scvar = %s", example.scvar ); writefln( "ucvar = %s", example.ucvar ); writefln( "fvar = %s", example.fvar ); writefln( "dvar = %s", example.dvar ); writefln( "cvar = %s", example.cvar ); writefln( "strvar = %s", example.strvar ); writefln( "cstrvar = %s", example.cstrvar ); writefln( "iptrvar = %s", example.iptrvar ); writefln( "name = %s", example.name ); writefln( "ptptr = %s %s", example.ptptr, example.Point_print(example.ptptr) ); writefln( "pt = %s %s", example.pt, example.Point_print(example.pt) ); writefln( "status = %s", example.status ); writefln( "\nVariables (printed from the C library):" ); example.print_vars(); writefln( "\nNow I'm going to try and modify some read only variables:" ); writefln( "Checking that the read only variables are readonly..." ); writeln( " 'path'..." ); static if ( is( typeof( example.path = "a" ) ) ) writefln("Oh dear, this variable is not read only!"); else writefln("Good."); writeln( " 'status'..." ); static if ( is( typeof( example.status = 2 ) ) ) writefln("Oh dear, this variable is not read only!"); else writefln("Good."); writefln( "\nI'm going to try and update a structure variable:" ); example.pt = example.ptptr; write( "The new value is " ); stdout.flush(); example.pt_print(); writefln( "You should see the value %s", example.Point_print(example.ptptr) ); }