OSDN Git Service

Version 0.6.135, fix for closure compiler.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 11_XClass.js
index 52207a5..6ead421 100644 (file)
@@ -5,7 +5,7 @@
 var\r
        /**\r
         * 全てのクラスのスーパークラスのようなもの。(ライブラリ内にカプセル化されているため、ユーザが触ることはありません)<br>\r
-        * X.Class.create() で定義されたクラスのインスタンスが共通で備えるメソッド を確認してください。\r
+        * X_Class.create() で定義されたクラスのインスタンスが共通で備えるメソッド を確認してください。\r
         * @class __ClassBase__\r
         * @private\r
         * @abstract\r
@@ -77,7 +77,7 @@ X_Class_CommonMethods =
                        };\r
                        \r
                        this[ 'dispatch' ]( X_EVENT_KILL_INSTANCE );\r
-                       this._listeners && X_EventDispatcher_systemUnlisten( this );\r
+                       this[ '_listeners' ] && X_EventDispatcher_systemUnlisten( this );\r
                };\r
                \r
                for( p in instance ){\r
@@ -223,6 +223,20 @@ X_Class_CommonMethods =
 // --- interface ----------------------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
 \r
+/*\r
+ * @enum {number}\r
+ * @const\r
+ */\r
+var X_Class = {\r
+       NONE         :  0,\r
+       POOL_OBJECT  :  1,\r
+       ABSTRACT     :  2,\r
+       FINAL        :  4,\r
+       SUPER_ACCESS :  8,\r
+       PRIVATE_DATA : 16,\r
+       SINGLETON    : 32\r
+};\r
+\r
 /**\r
  * <p>Class を定義し システムの管理下に置く。\r
  * <p>prototype 継承のブラウザ毎の差異も吸収し、 以下から最適な方法をしてくれる。\r
@@ -234,7 +248,7 @@ X_Class_CommonMethods =
  * </ol>\r
  * \r
  * <ol>\r
- * <li>X.Class.create( opt_settings, opt_name, opt_privateClass, opt_props ) でクラスを登録.\r
+ * <li>X_Class.create( opt_settings, opt_name, opt_privateClass, opt_props ) でクラスを登録.\r
  * <li>コンストラクタ となるメソッドは、opt_props 内の Constructor : function( arg ){ ... }, に書く.\r
  * <li>通常通り new で インスタンス生成\r
  * <li>kill() でオブジェクトをクリーンして削除、pool が有効の場合は pool される.\r
@@ -249,44 +263,44 @@ X[ 'Class' ] = {
      * 設定なし。\r
      * @const\r
      */        \r
-       'NONE'         : 0,\r
+       'NONE'         : X_Class.NONE,\r
        \r
     /**\r
      * インスタンスは破棄時(this.kill())に回収され、次回の new MyClass() 時に再利用されます。\r
      * @const\r
      */\r
-       'POOL_OBJECT'  :  1,\r
+       'POOL_OBJECT'  :  X_Class.POOL_OBJECT,\r
        \r
        /**\r
         * 定義するクラスは抽象クラスになります。new AbstractClass() とするとエラーになります。\r
         * @const\r
         */\r
-       'ABSTRACT'     :  2,\r
+       'ABSTRACT'     :  X_Class.ABSTRACT,\r
 \r
        /**\r
         * クラスの継承を禁止する。\r
         * @const\r
         */\r
-       'FINAL'        :  4,\r
+       'FINAL'        :  X_Class.FINAL,\r
 \r
        /**\r
         * 使用を中止。petanR ライブラリ使用プロジェクトから SUPER_ACCESS を消したらここも削除。\r
         * @const\r
         */\r
-       'SUPER_ACCESS' :  8,\r
+       'SUPER_ACCESS' :  X_Class.SUPER_ACCESS,\r
 \r
        /**\r
         * 内部コード、主に X.UI フレームワークに対して、フレーム外に露出するインスタンスとペアで動作する、シャドウなインスタンスの使用を宣言する。\r
         * Javascript はインスタンス毎のカプセル化がとてもコスト高。微妙なコスト増で隠蔽されたインスタンスを使う。\r
         * @const\r
         */\r
-       'PRIVATE_DATA' : 16,\r
+       'PRIVATE_DATA' : X_Class.PRIVATE_DATA,\r
 \r
        /**\r
         * 未実装。でも目印になるので付けておきましょう。\r
         * @const\r
         */\r
-       'SINGLETON'    : 32,\r
+       'SINGLETON'    : X_Class.SINGLETON,\r
 \r
        'create'       : X_Class_create,\r
        \r
@@ -305,10 +319,10 @@ X[ 'Class' ] = {
 // ------------------------------------------------------------------------- //\r
        /**\r
         * クラスを定義する。<br>\r
-        * X.Class.create() によるクラス定義は必ずしもコンストラクタを必要としません。クラス定義時にコンストラクタが未設定の場合、スーパークラスがあればそのコンストラクタを使用します。\r
-        * @alias X.Class.create\r
+        * X_Class.create() によるクラス定義は必ずしもコンストラクタを必要としません。クラス定義時にコンストラクタが未設定の場合、スーパークラスがあればそのコンストラクタを使用します。\r
+        * @alias X_Class.create\r
         * @param {string} [displayName] クラスの名前\r
-        * @param {number} [classSetting=0] X.Class.POOL_OBJECT | X.Class.FINAL など\r
+        * @param {number} [classSetting=0] X_Class.POOL_OBJECT | X_Class.FINAL など\r
         * @param {__ClassBase__=} [privateClass] このクラスとペアで動作するシャドウクラス\r
         * @param {object} [props={}] このクラスのメンバと関数。コンストラクタは Constructor と書くこと\r
         * @return {__ClassBase__}\r
@@ -330,10 +344,10 @@ X[ 'Class' ] = {
                // クラス設定\r
                classDef.setting = classSetting = args[ 0 ];\r
                if( X_Type_isNumber( classSetting ) ){\r
-                       opt_pool     = !!( classSetting & X.Class.POOL_OBJECT  );\r
-                       opt_abstract = !!( classSetting & X.Class.ABSTRACT     );\r
-                       opt_final    = !!( classSetting & X.Class.FINAL        );\r
-                       opt_private  = !!( classSetting & X.Class.PRIVATE_DATA );\r
+                       opt_pool     = !!( classSetting & X_Class.POOL_OBJECT  );\r
+                       opt_abstract = !!( classSetting & X_Class.ABSTRACT     );\r
+                       opt_final    = !!( classSetting & X_Class.FINAL        );\r
+                       opt_private  = !!( classSetting & X_Class.PRIVATE_DATA );\r
                        if( opt_final && opt_abstract ){\r
                                X.Logger.critical( 'final & Abstract!' );\r
                                return;\r
@@ -347,7 +361,7 @@ X[ 'Class' ] = {
                if( X_Class_PRIVATE_CLASS_LIST.indexOf( args[ 0 ] ) !== -1 ){\r
                        privateDef = X_Class_getClassDef( args[ 0 ] );\r
                        if( privateDef.isPrivate !== true ){\r
-                               X.Logger.critical( 'PrivateClass not found! please, X.Class.create( X.Class.PRIVATE, {...} ).' );\r
+                               X.Logger.critical( 'PrivateClass not found! please, X_Class.create( X_Class.PRIVATE, {...} ).' );\r
                                return;\r
                        } else\r
                        if( privateDef.Abstract === true ){\r
@@ -530,11 +544,11 @@ function X_Class_subClassOf( klass ){
 };\r
                        \r
 /**\r
- * サブクラスを作ります。与える引数は X.Class.create と同じです。http://d.hatena.ne.jp/m-hiyama/20051018/1129605002\r
+ * サブクラスを作ります。与える引数は X_Class.create と同じです。http://d.hatena.ne.jp/m-hiyama/20051018/1129605002\r
  * @alias __ClassBase__.inherits\r
- * @example var SubClass = SuperClass.inherits( 'Sub', X.Class.FINAL, { ... } );\r
+ * @example var SubClass = SuperClass.inherits( 'Sub', X_Class.FINAL, { ... } );\r
  * @param {string} [displayName] クラスの名前\r
- * @param {number} [classSetting=0] X.Class.POOL_OBJECT | X.Class.FINAL など\r
+ * @param {number} [classSetting=0] X_Class.POOL_OBJECT | X_Class.FINAL など\r
  * @param {__ClassBase__=} [privateClass] このクラスとペアで動作するシャドウクラス\r
  * @param {object} [props={}] このクラスのメンバと関数。コンストラクタは Constructor と書くこと\r
  * @return {__ClassBase__}\r
@@ -564,9 +578,9 @@ function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props
                args.shift();\r
        } else {\r
                // クラス設定がない場合、親からコピーして、Abstract flag は落とす??\r
-               classSetting = superDef.setting;// &= ~X.Class.ABSTRACT;\r
+               classSetting = superDef.setting;// &= ~X_Class.ABSTRACT;\r
        };\r
-       if( superDef.isPrivate ) classSetting = classSetting | X.Class.PRIVATE_DATA;\r
+       if( superDef.isPrivate ) classSetting = classSetting | X_Class.PRIVATE_DATA;\r
 \r
        params.push( classSetting );\r
 \r
@@ -590,7 +604,7 @@ function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props
        } else {\r
                X_Class_traits = new Super( X_Closure_COMMAND_DROP );\r
        };\r
-       klass  = X.Class.create.apply( X.Class, params );\r
+       klass  = X_Class_create.apply( X.Class, params );\r
        X_Class_traits = null;\r
        \r
        def    = X_Class_getClassDef( klass );\r