程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> luabind實現lua中的取對象大小功能

luabind實現lua中的取對象大小功能

編輯:C++入門知識

在lua中, #操作符用於獲取對象大小, 對於table來說, 獲取的是table元素個數, 對於字符串來說獲取的是字符串長度
另外一種獲取方法是table.getn(obj), 但是這個方法已經標記為廢除了, 盡量使用通用且簡潔的#操作符
 
使用lua api實現此功能就需要用到lua_objlen( ),但是這個功能未在luabind中提供.所以我們順手添加一個
首先找到luabind源碼的object.hpp中取對象類型的type函數,在其下添加以下代碼
 
  1: template<class ValueWrapper>
  2: inline int obj_size(ValueWrapper const& value)
  3: {
  4:     lua_State* interpreter = value_wrapper_traits<ValueWrapper>::interpreter(
  5:         value
  6:         );
  7:
  8:     value_wrapper_traits<ValueWrapper>::unwrap(interpreter, value);
  9:     detail::stack_pop pop(interpreter, 1);
 10:     return lua_objlen(interpreter, -1);
 11: }
 
重新編譯你的代碼, 就可以這樣使用luabind::obj_size( obj ) 獲取對象大小了

 

摘自  戰魂小築
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved