GSL Shell 学習:LFS 自作始め
2016-02-05 : 
PCクリニック
前(2016-02-04)の記事:「GSL Shell 学習:Linear Least Squares fit」
に続く学習。
今月初め(2016-02-01)の記事:
「Lua 学習:The GSL Shell Project」
で書いた如く、
“GSL Shell”は、
“LuaJIT”の拡張版で“GSL”の機能も含んでいる。
だがしかし、“GSL Shell”には、
“LuaJIT : Just-In-Time Compiler (JIT) for the Lua …”
で書いた“ULua”には含まれていた:“LFS ( LuaFileSystem )”が
含まれていない!
なので、
「Lua 学習:FFI Library」で書いた、
「C Library Function」を使って
自作することにした。
だが、
“stat”関数が無い???
「ファイルサイズ取得」とかで検索しても、
皆さん(?)
C言語にはファイルサイズを知るための関数はありません。
ファイルサイズを知るには、
ファイルを開いてからファイルポインタを移動して求めます。
などと書いている。
しつこく 検索して 見つけた!
「Microsoft」の「MSDN」の
「_stat、_wstat 関数」
ファイルのステータス情報を取得します。
で、“FFI”でコーディング:
local ffi = require'ffi'これで、
ffi.cdef[[
int _stat ( const char* fname, void* buf );
]]
fnm = ffi.new( 'uint8_t[?]', #Fname )
stat = ffi.new( 'uint8_t[?]', 255 )
a = ffi.new( 'int32_t[1]' )
Fname = 'test.dat'
fnm = Fname -- これ必要
_ = ffi.C._stat( fnm, stat )
ffi.copy( a, stat+20, 4 ) -- 構造体の中を直接指定
SZ=a[0]
print( SZ ) -- ファイルサイズ
「Lua 学習:LFS ( LuaFileSystem )」
の前半はOK
後半は、全く同じコード。
この調子で行けば、“LFS”相当品が作れる?
本日はここまで。
Lua ( GSL Shell ) 学習は続く。
見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒


151231
- 関連記事
-
- GSL Shell 学習:fun 関数 (2016/02/09)
- GSL Shell 学習:StringIO (2016/02/08)
- GSL Shell 学習:GSL FFI interface (2016/02/07)
- GSL Shell 学習:IM はどうか? (2016/02/06)
- GSL Shell 学習:LFS 自作始め (2016/02/05)
- GSL Shell 学習:Linear Least Squares fit (2016/02/04)
- GSL Shell 学習:Random Numbers ( 乱数 ) (2016/02/03)
- GSL Shell 学習:matrix.solve( A, b ) (2016/02/02)
- Lua 学習:The GSL Shell Project (2016/02/01)
スポンサーサイト