OSDN Git Service

2.0.2
[mimic/MiMicSDK.git] / misc / mbedJS / mbddJS.API / mbedJS / MiMicCore.js
index dd413c1..817860c 100644 (file)
@@ -13,7 +13,7 @@ var MiMicJS={};
         * MiMicJsAPIのバージョン文字列。\r
         * @name MiMicJS#VERSION\r
         */\r
-       NS.VERSION="MiMicJsAPI/2.0.1";\r
+       NS.VERSION="MiMicJsAPI/2.0.2";\r
        /**\r
         * 配列要素、又は値がすべてInt値でない場合に例外を起こします。\r
         * @name MiMicJS.assertInt\r
@@ -76,8 +76,8 @@ var MiMicJS={};
        };\r
 \r
        /**\r
-        * @private\r
         * オブジェクトがジェネレータクラスであるかを返します。\r
+        * @private\r
         */\r
        NS.isGenerator=function isGenerator(o)\r
        {\r
@@ -85,6 +85,13 @@ var MiMicJS={};
                return o.toString().indexOf('Generator')!=-1;\r
        };\r
        /**\r
+        * オブジェクトが関数であるかを返します。\r
+        * @private\r
+        */\r
+       NS.isFunction=function isFunction(o){\r
+               return (typeof o == 'function');\r
+       }\r
+       /**\r
         * @private\r
         * 現在の時刻を返します。\r
         */\r
@@ -247,8 +254,70 @@ var MiMicJS={};
                        window[key]=v[key];\r
                }\r
        }\r
+       /**\r
+        * MiMicSDK向けの内部関数です。\r
+        * 末尾引数が関数の場合にはその関数を、異なる場合はi_cbを返却します。\r
+        * @private\r
+        * @param i_arg\r
+        * 引数配列を指定します。\r
+        * @param i_default_cb\r
+        * 引数配列に関数がなかった場合に返す値を指定します。\r
+        */\r
+       NS._getCb=function _getCb(i_arg,i_default_cb)\r
+       {\r
+               if(i_arg.length==0){\r
+                       return i_default_cb;\r
+               }\r
+               return NS.isFunction(i_arg[i_arg.length-1])?i_arg[i_arg.length-1]:i_default_cb;\r
+       }\r
+       /**\r
+        * MiMicSDK向けの関数です。\r
+        * 末尾の拡張変数を取り除いたarguments引数の数を返します。\r
+        * @private\r
+        */\r
+       NS._getBaseArgsLen=function _getBaseArgsLen(i_arg)\r
+       {\r
+               if(i_arg.length==0 || (!NS.isFunction(i_arg[i_arg.length-1]))){\r
+                       return i_arg.length;\r
+               }\r
+               return i_arg.length==1?0:i_arg.length-1;\r
+       }\r
+       \r
+       /**\r
+        * MiMicSDK向けの関数です。\r
+        * インスタンスがyieldコール可能かをチェックし、可能ならコール関数を記録します。\r
+        * 関数は、インスタンスの_gen,_lcをチェックして、yieldが不可能な場合に例外を発生します。\r
+        * _assertYield.call(this)でコールして下さい。\r
+        * @private\r
+        */\r
+       NS._assertYield=function _assertYield()\r
+       {\r
+               if(this._gen && this._lc){\r
+                       throw new NS.MiMicException(NS.Error.NG_YIELD_NOT_COMPLETED);\r
+               }\r
+       }\r
+       /**\r
+        * MiMicSDK向けの関数です。コンストラクタでイベントハンドラをセットアップする定型処理です。\r
+        * i_handlerにセットされたオブジェクトに従って_gen,_eventメンバをセットします。\r
+        * _initHandler.call(this,i_handler)でコールして下さい。\r
+        * @private\r
+        */\r
+       NS._initHandler=function _initHandler(i_handler)\r
+       {\r
+               if(NS.isGenerator(i_handler)){\r
+                       this._gen=i_handler;\r
+               }else if(NS.isFunction(i_handler)){\r
+                       return i_handler;\r
+               }else if(i_handler){\r
+                       this._event=i_handler;\r
+                       return i_handler.onNew;\r
+               }\r
+               return null;\r
+       }\r
+       \r
+       \r
 }());\r
-\r
+       \r
 (function(){\r
        var NS=MiMicJS;\r
        \r
@@ -542,7 +611,7 @@ var MiMicJS={};
                                                        rx+='})';\r
                                                        rxst=0;\r
                                                        {\r
-                                                               log(rx);//Debug\r
+//                                                             log(rx);//Debug\r
                                                                //JSONがたぶん確定\r
                                                                var j=eval(rx);\r
                                                                for(var i2=q.length-1;i2>=0;i2--){\r
@@ -611,7 +680,7 @@ var MiMicJS={};
                sendMethod:function callJsonRpc(i_method,i_params,i_callback)\r
                {\r
                        var v="{\"jsonrpc\":\"2.0\",\"method\":\""+i_method+"\",\"params\":["+i_params+"],\"id\":"+this._method_id+"}";\r
-                       log(v);//Debug\r
+//                     log(v);//Debug\r
                        this._ws.send(v);\r
                        this._q.push([this._method_id,i_callback]);//キューに記録\r
                        this._method_id=(this._method_id+1)&0x0fffffff;//IDインクリメント\r