About ] Mission ] Services ] Funding ] Opportunities ] Open Tools ] Crosbie's Stuff ]

Cyberspace Engineers

Engineering Cyberspace!

Creation

 

These interfaces permit the rules of a universe to be defined and modified in the Node's universe, i.e. class definitions. It also permits direct object creation.

You can hide your mistakes from yourself, but they can't be undone. Once a class has been created (and communicated to another node) it can't be destroyed.

Indeed, interestingly, there is no destruction, no means of destroying anything. Things only disappear from cache (perhaps, one day, everyone's cache). Of course, if you create 100 new objects (of a single class) per second you're going to run out of ids within the year (assuming you can find enough nodes that are interested in them all), but the assumption is that objects are pretty permanent things and you won't need that many of them, nor much of a turnover ('destroying' an object may be more like sending it to a recycling store). If 4 billion is too few, well we can move to a 64bit architecture, but I think we'll stick to 32bits for the time being. So this isn't quite the same kind of environment that people may be used to in Java or C++. Instead of coping with the lack of persistence it's now a case of coping with a lack of volatility.

IUnknown/IModifyUniverse/IUniverse

Interface for modifying the rules of the universe

NewClass(IModifyClass**)		// Create a new class in this universe
DeriveClass(IModifyClass**,IClass*)	// Create a new class derived from another (single inheritance only)
ModifyClass(IModifyClass**,IClass*)	// Adjust an existing class
NewObject(IObject**,IClass*)		// Create a new object of a particular class

IUnknown/IModifyClass/IClass

Interface for modifying a class

NewMethod(IModifyMethod**,IClass*)	// Create a new method in a particular class
OverrideMethod(IModifyMethod**,IMethod*)	// Override a method of a base class
ModifyMethod(IModifyMethod**,IMethod*)	// Adjust an existing method

IUnknown/IModifyMethod/IMethod

? // functions for adjusting various method attributes

GetFlags()	// Various control flags
SetFlags()
Get()	// Get the value representing the method (value or instruction series)
Set()