Environment

Ein Environment beschreibt ein alternatives Speichermodell und ist eine Variable. Ein Environment ist eine normale Klasse, die von Environment abgeleitet ist. Innerhalb eines Environments können Allokatoren hinzugefügt werden.

Point contains a, b is int;
 
normalalloc is environment
{
  string new( size ): new byte[size];  //size ist typ und variable
};
 
fastalloc is environment
{
  pool is byte ptr;
 
  construct := pool : new byte[1000];
 
  string 
  {
    new   ( s is size ) := {...};
    delete( object is byte ptr ) := {...};
  }
 
  geo is region
  {
    Point new( size s ): {...};
  }
};
 
string str = "Hallo";            // globaler new-Operator
fastalloc.string str2 = "Welt";  // fastalloc string - das ist eine Member-Funktion, hier wird also ein this-Pointer übergeben

Ein Scope kann mit use das Default-Environment wechseln

{
  use environment fastalloc.geo, normnalalloc  // string ist in fastalloc.geo nicht drin, aber in normalalloc
 
  str is new string "Hello World";  // ruft normalalloc.string.new
 
  {
    use environment global.string;
 
    str is new "Hello World";  // ruft global.string.new
  }
}