Difference between revisions of "Peer-nodal.as"

From Organic Design wiki
(Start reduction method using get/set methods)
(fill in get/set more)
Line 7: Line 7:
 
// idcount is a accumulating-only counter for locally-unique-id number
 
// idcount is a accumulating-only counter for locally-unique-id number
 
// nodes is the current number of instantiated node objects
 
// nodes is the current number of instantiated node objects
// queue is the root reduction queue
+
// -----queue is the root reduction queue ------ change back to linked-list
 
ROOT = { queue: [], idcount: 0, nodes: 0 };
 
ROOT = { queue: [], idcount: 0, nodes: 0 };
 
NEXT = new node();
 
NEXT = new node();
Line 31: Line 31:
 
// - but keep all hierarchy nodal
 
// - but keep all hierarchy nodal
  
node.prototype.set( value ) {
+
node.prototype.set( path, value ) {
 +
ptr = this.resolve( path );
 +
ptr.value = value;
 
};
 
};
  
node.prototype.get() {
+
node.prototype.get( path ) {
return value; // returns a node-ref or an "external" kind like method or object
+
ptr = this.resolve( path );
 +
// need to return class.value onNonExistent
 +
return ptr.value;
 
};
 
};
  
 
// Resolve creates if non existent and returns reference to result
 
// Resolve creates if non existent and returns reference to result
 +
// - this is private, used by get/set
 
node.prototype.resolve = function( path ) {
 
node.prototype.resolve = function( path ) {
 
var context = this;
 
var context = this;

Revision as of 09:13, 8 April 2006

// ISSUES // - associations (maintained class:instance relationships) // - get should use class content as default - resolve() doesn't // so either add get/set which use resolve, or remove object-freedom and have only .data

// NODAL PROPERTIES & CORE NODAL CONCEPTS // idcount is a accumulating-only counter for locally-unique-id number // nodes is the current number of instantiated node objects // -----queue is the root reduction queue ------ change back to linked-list ROOT = { queue: [], idcount: 0, nodes: 0 }; NEXT = new node(); PREV = new node(); FUNC = new node(); FOCUS = new node();

// NODE OBJECT function node() {

ROOT.nodes++; this.id = ROOT.idcount++; this.queue = []; // get rid of this, back to nodal-linked-list

};

// NODAL METHODS // - the delete-list is only needed for limited list-space env // - Actionscript failed ref-as-hashkey test, // so we use a id (locally unique identifier) as a lookup-key // - no delete currently // - just get/set properties with normal object-accessor way // - but keep all hierarchy nodal

node.prototype.set( path, value ) { ptr = this.resolve( path ); ptr.value = value; };

node.prototype.get( path ) { ptr = this.resolve( path ); // need to return class.value onNonExistent return ptr.value; };

// Resolve creates if non existent and returns reference to result // - this is private, used by get/set node.prototype.resolve = function( path ) { var context = this; while( path.length ) { var key = path.shift(); context = context[key.id] == null ? context[key.id] = new node() : context[ key.id ]; } return context; };

// Consume one quanta // - each quantum is actually two, one for local instance, one for global class // - all instance-loops work by going cd this.current then assigning this.current.next to it // when a function executes, it can update the loop at that location (equiv to array.push) // - a functions parameters (and even further methods and tools) are child associations // the structures necessary to build the fucntion are child assocs too node.prototype.reduce = function() { var ptr = this;

// Queue rotation var focus = ptr.get( [FOCUS] ); ptr.set( [FOCUS], ptr.get( [FOCUS,NEXT] ) );

// If there's a local function declaration, execute if ( func = ptr.get( [FUNC] ) ) { ref = func.call // also call class.reduce() };

// if not, send the quanta downstairs if there's a basement else if ( ) { };

};