• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            的筆記

            隨時隨地編輯

            艾奴兒

            人人都愛奴兒

            Stack

            Manipulation(Offical API reforence 3.3 Stack Manipulation)

            The API o?ers the following functions for basic stack manipulation:
                  void lua_settop (lua_State *L, int index);
                  void lua_pushvalue (lua_State *L, int index);
                  void lua_remove (lua_State *L, int index);
                  void lua_insert (lua_State *L, int index);
                  void lua_replace (lua_State *L, int index);

               As an example, if the stack starts as 10 20 30 40 50* (from bottom to top; the ‘*’ marks the top), then
                     lua_pushvalue(L, 3) --> 10 20 30 40 50 30*
                     lua_pushvalue(L, -1) --> 10 20 30 40 50 30 30*
                     lua_remove(L, -3) --> 10 20 30 40 30 30*
                     lua_remove(L, 6) --> 10 20 30 40 30*
                     lua_insert(L, 1) --> 30 10 20 30 40*
                     lua_insert(L, -1) --> 30 10 20 30 40* (no effect)
                     lua_replace(L, 2) --> 30 40 20 30*
                     lua_settop(L, -3) --> 30 40*
                     lua_settop(L, 6) --> 30 40 nil nil nil nil*
                在lua.h中有macro:
                     #define lua_pop(L,n) lua_settop(L, -(n)-1)
                則
               pop(n)==settop(-n-1)
               settop(n)==pop(-n-1) == push(n)

            :出棧幾個元素,相當于將這個數(shù)字加一,然后用和的相反數(shù)作為棧頂;從棧頂往下數(shù)了幾個數(shù)標記為棧頂,則將這個數(shù)加一,然后用這個和數(shù)出棧。好比公司要擴招了,就招n個伢,那就將n個伢入棧,工號一個個的加,加n次。或者要裁員了,就裁m個伢,則按順序?qū)⒐ぬ栕畲蟮那懊鎚個伢遣散了,老員工暫時不動,公司裁員后的最大的工號嘛就將裁員人數(shù)加一后,往下數(shù)這個數(shù),數(shù)到哪個,哪個就是工號最大的伢了。

            Querying(Offical lua api reference 3.4 Querying the Stack)

            To check the type of a stack element, the following functions are available:
                     int lua_type (lua_State *L, int index);
                     int lua_isnil (lua_State *L, int index);
                     int lua_isboolean (lua_State *L, int index);
                     int lua_isnumber (lua_State *L, int index);
                     int lua_isstring (lua_State *L, int index);
                     int lua_istable (lua_State *L, int index);
                     int lua_isfunction (lua_State *L, int index);
                     int lua_iscfunction (lua_State *L, int index);
                     int lua_isuserdata (lua_State *L, int index);
                     int lua_islightuserdata (lua_State *L, int index);

               The API also contains functions to compare two values in the stack:
                     int lua_equal (lua_State *L, int index1, int index2);
                     int lua_rawequal (lua_State *L, int index1, int index2);
                     int lua_lessthan (lua_State *L, int index1, int index2);

            :黃帝生眾人,眾人生萬物,萬物生八卦,八卦生努爾盞,lua棧就是眾生能觸摸到的祖先的氣。你可以在奴兒盞里隨心所欲的玩,逾矩的玩,窺視那些終生像:忠奸善惡,數(shù)串表函,是不是三聚氰胺防腐劑,是不是裸官醉駕二次碾壓.

             

            取棧值(offical api 3.5 Getting Values from the Stack)

            To translate a value in the stack to a speci?c C type, you can use the following conversion functions:

            int lua_toboolean (lua_State *L, int index);
            lua_Number lua_tonumber (lua_State *L, int index);
            const char *lua_tostring (lua_State *L, int index);
            size_t lua_strlen (lua_State *L, int index);
            lua_CFunction lua_tocfunction (lua_State *L, int index);
            void *lua_touserdata (lua_State *L, int index);
            lua_State *lua_tothread (lua_State *L, int index);
            void *lua_topointer (lua_State *L, int index);

            :可以將盞里的東西讀出來:數(shù)、串、真、假、函、線、針。不管盞里放的是神馬五谷雜糧,都可以讀出來啦。

            存棧(offical api reference 3.6 Pushing Values onto the Stack)

            The API has the following functions to push C values onto the stack:

            void lua_pushboolean (lua_State *L, int b);
            void lua_pushnumber (lua_State *L, lua_Number n);
            void lua_pushlstring (lua_State *L, const char *s, size_t len);
            void lua_pushstring (lua_State *L, const char *s);
            void lua_pushnil (lua_State *L);
            void lua_pushcfunction (lua_State *L, lua_CFunction f);
            void lua_pushlightuserdata (lua_State *L, void *p);

            :五谷雜糧都可以往盞里裝。最好是五年藏梅花上的雪,夏日收在盞里。

            棧指針(offical api reference 3.2 The Stack and Indices)

                  A positive index represents an absolute stack position (starting at 1); 
                  a negative index represents an o?set from the top of the stack.

                  We say that an index is valid if it lies between 1 and the stack top (that is, if 1 <= abs(index) <= top).

                  At any time, you can get the index of the top element by calling lua_gettop:
                              int lua_gettop (lua_State *L);

                  grows the stack size to top + extra elements:
                              int lua_checkstack (lua_State *L, int extra);

                  Whenever Lua calls C, it ensures that at least LUA_MINSTACK stack positions are available.LUA_MINSTACK is de?ned in lua.h 
                              as 20

                  More formally, we de?ne an acceptable index as follows:
                              (index < 0 && abs(index) <= top) || (index > 0 && index <= stackspace)
                              Note that 0 is never an acceptable index

            :
                取棧中頂元指針的值,這個值既指明了棧中頂元的指針,也同時等于棧元的總數(shù)。
                你有責(zé)任使用有效的棧針,不要隨便拿個針就到處戳。
                可以增加棧,但不能收縮棧。
                0針是不能被接受的,不要用0針到處戳。

            posted on 2011-07-02 15:20 的筆記 閱讀(225) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久亚洲av综合波多野结衣| 日本免费久久久久久久网站| 亚洲国产成人精品女人久久久| 久久精品中文字幕有码| 午夜精品久久影院蜜桃 | 国产婷婷成人久久Av免费高清 | 五月丁香综合激情六月久久| 无码AV波多野结衣久久| 一本伊大人香蕉久久网手机| 亚洲精品99久久久久中文字幕| 亚洲精品国精品久久99热一| 国产成人香蕉久久久久| 久久人人爽人人爽人人片AV高清| 97久久超碰国产精品旧版| 亚洲欧美精品一区久久中文字幕| 久久永久免费人妻精品下载| 久久久免费观成人影院| 99久久综合狠狠综合久久止| 久久受www免费人成_看片中文| 99久久久国产精品免费无卡顿| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 欧美久久亚洲精品| 99久久精品毛片免费播放| 国产精品亚洲综合久久| 91久久国产视频| .精品久久久麻豆国产精品| 久久久久亚洲AV成人网人人网站 | 中文成人久久久久影院免费观看| 久久99精品国产99久久6男男| 99久久国产综合精品女同图片| 精品久久久久久无码国产| 国产精品久久久久影院嫩草| 久久久亚洲欧洲日产国码二区| 久久久久亚洲av成人网人人软件| 少妇久久久久久被弄到高潮| 国产日韩欧美久久| 久久精品免费大片国产大片| 久久久黄片| 色天使久久综合网天天| 囯产极品美女高潮无套久久久| 中文成人无码精品久久久不卡 |