OSDN Git Service

Version 0.6.107, cleanup X.NodeCSS, fix X.Node.Event for touch, add unescape for...
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 10_XCallback.js
index a57ce6c..4dad3ff 100644 (file)
@@ -32,54 +32,20 @@ var listener;
  */\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
-       \r
        NONE             : X_Callback_NONE,\r
        UN_LISTEN        : X_Callback_UN_LISTEN,\r
        STOP_PROPAGATION : X_Callback_STOP_PROPAGATION,\r
        STOP_NOW         : X_Callback_STOP_NOW,\r
        PREVENT_DEFAULT  : X_Callback_PREVENT_DEFAULT,\r
-       MONOPOLY         : X_Callback_MONOPOLY,\r
-       \r
-       create : X_Callback_create,\r
-       \r
-       sys_monitor : function(){\r
-               return {\r
-                       'Live callback' : X_Callback_LIVE_LIST.length,\r
-                       'Pool callback' : X_Callback_POOL_LIST.length\r
-               };\r
-       },\r
-       \r
-       sys_gc : function(){\r
-               var list = X_Callback_POOL_LIST,\r
-                       f;\r
-               while( 0 < list.length ){\r
-                       f = list.shift();\r
-                       X_Callback_correct( f );\r
-                       delete f[ 'kill' ];\r
-                       delete f[ 'same' ];\r
-               };\r
-       }\r
+       MONOPOLY         : X_Callback_MONOPOLY\r
 };\r
 \r
-X_TEMP.onSystemReady.push( X_Callback_handleSystemEvent );\r
-\r
 // ------------------------------------------------------------------------- //\r
 // --- implements ---------------------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
 \r
-function X_Callback_handleSystemEvent( e ){\r
-       switch( e ){\r
-               case '':\r
-       };\r
-};\r
-\r
 function X_Callback_create( thisObject, opt_callback, opt_args /* [ listener || ( context + function ) || function ][ args... ] */ ){\r
        var obj = X_Callback_classifyCallbackArgs( thisObject, opt_callback, opt_args ),\r
                l, ret, _obj;\r
@@ -91,21 +57,15 @@ function X_Callback_create( thisObject, opt_callback, opt_args /* [ listener ||
                _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.kill = X_Callback_kill;\r
-               ret.same = X_Callback_same;\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
+       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
@@ -148,6 +108,13 @@ function X_Callback_classifyCallbackArgs( arg1, arg2, arg3, alt_context ){
        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
@@ -200,20 +167,6 @@ function X_Callback_proxyCallback( xfunc, _args ){
        return X_Callback_NONE;\r
 };\r
 \r
-function X_Callback_same( arg1, arg2, arg3 ){\r
-       var hash;\r
-       \r
-       if( arg1 && arg1[ 'kill' ] === X_Callback_kill ) return this === arg1;\r
-       \r
-       hash = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 );\r
-       \r
-       return hash && this.k === hash.k && this.x === hash.x && this.f === hash.f && this.s === hash.s;\r
-};\r
-\r
-function X_Callback_kill(){\r
-       X_Callback_correct( this );\r
-};\r
-\r
 function X_Callback_correct( f ){\r
        var i = X_Callback_LIVE_LIST.indexOf( f ),\r
                obj;\r
@@ -225,12 +178,26 @@ function X_Callback_correct( f ){
                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
+function X_Callback_monitor(){\r
+       return {\r
+               'Callback:Live' : X_Callback_LIVE_LIST.length,\r
+               'Callback:Pool' : X_Callback_POOL_LIST.length\r
+       };\r
+};\r
+function X_Callback_gc(){\r
+       X_Callback_POOL_LIST.length = 0; // ?\r
+};\r
 \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