Porting EiffelBase to .NET

Introduction

To make things simple, we will reference as EiffelBase the version of EiffelBase that does not run on .NET, and we will reference as EiffelBase.NET the version of EiffelBase that targets .NET.

ANY

Porting the features of EiffelBase to EiffelBase.NET starts by making sure that ANY from EiffelBase.NET contains all the features of ANY from EiffelBase. Doing so introduces a lot of name conflicts since .NET is using names such as clone, copy, equal, is_equal, default....

However one big difference between Eiffel and Eiffel for .NET. ANY is not the ancestor to all classes. It is only the ancestor for Eiffel classes. .NET classes inherits from SYSTEM_OBJECT. And ANY inherits from SYSTEM_OBJECTS. Doing so enable a clear separation on what can be done.

Basic types

After updating ANY, all basic types have to be updated so that they inherit from the _REF counterpart. This means that _REF corresponds to the boxed version of the basic types. If the language change to introduce `reference' was done, we would not have to do so, but unfortunately the specification is not done.

Characters

A quite big issue in porting EiffelBase to .NET is the recent introduction in normal Eiffel of the new basic type WIDE_CHARACTER. The issue is that .NET only supports wide character, it does not have an abstract data type for ASCII character. Since the addition is quite recent, we decided not to include WIDE_CHARACTER and its WIDE_CHARACTER_REF counterpart in the kernel cluster of EiffelBase.NET.

BITs

Even though the class BIT_REF has been included in EiffelBase.NET, it does not have any special code handling from the compiler.

SPECIAL