*/\r
var callbackHash;\r
\r
-/*\r
- * \r
- * @typedef {(funciton|{ _ : function, same : function, kill : function, a : (Array|undefined) })}\r
- */\r
-var functionHash;\r
\r
X.Callback = {\r
NONE : X_Callback_NONE,\r
_obj.f = obj.f;\r
_obj.x = obj.x;\r
_obj.s = obj.s;\r
+ _obj._ = X_Callback_proxyCallback;\r
} else {\r
- ret = X_Closure_actualClosure( obj );\r
+ ret = X_Callback_actualClosure( obj );\r
+ obj._ = X_Callback_proxyCallback;\r
};\r
X_Callback_LIVE_LIST[ X_Callback_LIVE_LIST.length ] = ret;\r
return ret;\r
};\r
\r
-function X_Closure_actualClosure( obj ){\r
- return function(){\r
- if( arguments[ 0 ] === X_Closure_COMMAND_BACK ) return obj;\r
- if( arguments[ 0 ] !== X_Closure_COMMAND_DROP ) return X_Callback_proxyCallback( obj, arguments );\r
- };\r
-};\r
\r
function X_Callback_classifyCallbackArgs( arg1, arg2, arg3, alt_context ){\r
var obj;\r
return ( obj.x || obj.s ) ? obj : arg1;\r
};\r
\r
+function X_Callback_actualClosure( obj ){\r
+ return function(){\r
+ if( arguments[ 0 ] === X_Closure_COMMAND_BACK ) return obj;\r
+ if( arguments[ 0 ] !== X_Closure_COMMAND_DROP ) return obj._( obj, arguments );\r
+ };\r
+};\r
+\r
function X_Callback_proxyCallback( xfunc, _args ){\r
var args = _args || [],\r
thisObj = xfunc.x,\r
if( obj.f ) delete obj.f;\r
if( obj.x ) delete obj.x;\r
if( obj.s ) delete obj.s;\r
+ delete obj._;\r
return true;\r
};\r
return false;\r
};\r
\r
-\r
-// sys\r
-X_TEMP.X_Callback_onSystemReady = function( sys ){\r
- delete X_TEMP.X_Callback_onSystemReady;\r
- sys.monitor( X_Callback_monitor );\r
- sys.gc( X_Callback_gc );\r
-};\r
-\r
function X_Callback_monitor(){\r
return {\r
'Callback:Live' : X_Callback_LIVE_LIST.length,\r
X_Callback_POOL_LIST.length = 0; // ?\r
};\r
\r
-X_TEMP.onSystemReady.push( X_TEMP.X_Callback_onSystemReady );\r
+X_TEMP.onSystemReady.push( function( sys ){\r
+ sys.monitor( X_Callback_monitor );\r
+ sys.gc( X_Callback_gc );\r
+});\r
\r
\r
console.log( 'X.Core.Callback' );\r