FC2ブログ

GSL 学習:“gsl_b.lua”モジュール?

2017-12-06 :  PCクリニック
8月(2017-08-16)の記事「GSL 学習:“gsl_a.lua”モジュール?」では、
  ・・・・・
  ・・・・・
  そして、取り敢えずdouble版と、long版について、
  一部、計 16 ヘッダーファイルを取り込んだ。
  「gsl_block_double.h」「gsl_block_double_long.h」「gsl_histogram.h」
  「gsl_histogram2d.h」「gsl_interp.h」「gsl_permute_double.h」
  「gsl_permute_long.h」「gsl_sort_double.h」「gsl_sort_long.h」
  「gsl_statistics_double.h」「gsl_statistics_long.h」「gsl_spline.h」
  「gsl_matrix_double.h」「gsl_matrix_long.h」「gsl_vector_double.h」
  「gsl_vector_long.h」

  これらのファイルから“構造体”と“関数”の定義を抜き出した。
  ・・・・・
  ・・・・・

そして、
“gsl_a.lua”モジュールもどきを作った。


今回、
それらに加えて、
uchar版と、ushort版にも対応すべく、
機能拡張を行った。

前回と同じ gsl-1.9.tar.gzから、
一部、計 12 ヘッダーファイルを取り込んだ。
 「gsl_block_uchar.h」「gsl_permute_vector_uchar.h」「gsl_sort_uchar.h」
 「gsl_statistics_uchar.h」「gsl_matrix_uchar.h」「gsl_vector_uchar.h」
 「gsl_block_ushort.h」「gsl_permute_vector_ushort.h」「gsl_sort_ushort.h」
 「gsl_statistics_ushort.h」「gsl_matrix_ushort.h」「gsl_vector_ushort.h」

これらのファイルから(“構造体”と)“関数”の定義を抜き出し、
「gsl_cdef_Func_uchar.lua」と「gsl_cdef_Func_uchort.lua」を作った。
(専用スクリプトを作成して実行)

この2ファイルを併合して
「gsl_cdef_Func_uchar_ushort.lua」を作り、
前回と同様に、過不足チェックを行った。

不足する“構造体”等の定義:
----- gsl_cdef_Struct_uchar_ushort.lua -----
ffi.cdef[[

typedef unsigned char uchar;
typedef unsigned short ushort;

typedef struct { size_t size1; size_t size2; size_t tda;
uchar * data;
gsl_block * block; int owner;
} gsl_matrix_uchar;

typedef struct { size_t size; size_t stride;
uchar * data;
gsl_block *block; int owner;
} gsl_vector_uchar;

typedef struct { size_t size1; size_t size2; size_t tda;
ushort * data;
gsl_block * block; int owner;
} gsl_matrix_ushort;

typedef struct { size_t size; size_t stride;
ushort * data;
gsl_block *block; int owner;
} gsl_vector_ushort;


typedef gsl_vector_uchar _gsl_vector_uchar_view;
typedef gsl_vector_uchar _gsl_vector_uchar_const_view;

typedef gsl_vector_ushort _gsl_vector_ushort_view;
typedef gsl_vector_ushort _gsl_vector_ushort_const_view;

]]
を作った。


最後に、
「gsl_cdef_Func_uchar_ushort.lua」と「gsl_cdef_Struct_uchar_ushort.lua」
の2ファイルを集めて、「gsl_b.lua」とした。

ここで、
以前の“gsl_a.lua”は 内部で呼び出すことにした。


これで、従来の

  require'gsl_a'

は継続して使え、

  require'gsl_b'

とすることも可能である。


さらに、

  require'gsl_b'

  M = ffi.new('uchar[6]', 2, 20, 5, 11, 0, 4 )
  k = gsl.gsl_stats_uchar_max_index( M, 1, 6 )

も使える。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


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


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

コメントの投稿

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

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



おきてがみ

最新記事
カレンダー
09 | 2018/10 | 11
- 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 31 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

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

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


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

Google Analytics
ブックマーク