Cyberspace EngineersEngineering 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/IUniverseInterface 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/IClassInterface 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() |