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 ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


151231
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
05 | 2018/06 | 07
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク