Moving from 1.0 to D2

Trass3r mrmocool at gmx.de
Tue Mar 10 13:55:19 PDT 2009


jicman schrieb:
> Can the D1 code be easily changed to D2?  We are talking about more than 30K lines of code.
> 

The most important change is constness.
I personally use the following compatibility "layer"; though it's aim is 
to provide compatibility with both D1 and D2 compilers and not 
completely porting to D2 it might be an inspiration for you.

The hard part is to determine which one you need; mutable, const or 
immutable.

package
{
// define string types for compatibility with both D1 and D2
version (D_Version2)
{
	pragma(msg, "D2 detected. Taking care of constness.");

	// we need a mixin cause the code is syntactically illegal under D1
	mixin(`
	alias const(char) cchar; /// const char type
	alias invariant(char) ichar; /// invariant char type

	alias char[] mstring; /// mutable string type
	alias const(char)[] cstring; /// const string type
	alias invariant(char)[] istring; /// invariant string type

	alias wchar[] mwstring;
	alias const(wchar)[] cwstring;
	alias invariant(wchar)[] iwstring;

	alias dchar[] mdstring;
	alias const(dchar)[] cdstring;
	alias invariant(dchar)[] idstring;`);
}
else
{
	pragma(msg, "D1 detected. All strings are mutable.");

	alias char cchar;
	alias char ichar;

	alias char[] mstring;
	alias char[] cstring;
	alias char[] istring;

	alias wchar[] mwstring;
	alias wchar[] cwstring;
	alias wchar[] iwstring;

	alias dchar[] mdstring;
	alias dchar[] cdstring;
	alias dchar[] idstring;
}
}


More information about the Digitalmars-d-learn mailing list