バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はFMILibraryの「fmi2_import_get_variable_listによる変数リストの取得」について説明。
続けて以下をやっていく。
- fmi2_import_get_variable_list_sizeによる変数リスト数の取得
- fmi2_import_get_variableによる変数オブジェクトの取得
- fmi2_import_get_variable_vrによるvalueReferenceの取得
- fmi2_import_get_variable_nameによる変数名の取得
- fmi2_import_get_variable_description、fmi2_import_get_variability、fmi2_import_get_causality、fmi2_import_get_initialによる各種詳細情報の取得
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
fmi2_import_get_variable_list_sizeによる変数リスト数の取得
次は「fmi2_import_get_variable_list_sizeによる変数リスト数の取得」だが、
これはこのまんまの話だな。
変数リストの要素数が取得できる。
ホントそのまんまだねー。
一応、API仕様を書きだそう。
size_t fmi2_import_get_variable_list_size(fmi2_import_variable_list_t* vl)
vl:変数リスト
戻り値:変数リストの要素数
要素数を取るってことは、この後for文かなんかで回すことを想定しているのかな?
そうだね。
私がサンプルとして提示しようとしているソースコードとしてはそんな感じ。
実際には、情報格納用のバッファを動的に確保したいときとかいろいろありそうだけど。
なるほどー。
fmi2_import_get_variableによる変数オブジェクトの取得
次は「変数オブジェクトの取得だな」
変数オブジェクトって結局何者?
まぁ変数オブジェクトそのものが情報と言うより、
これもハンドル的な性質が強いな。
この変数オブジェクトを元に該当変数に紐づいた様々な情報が取れるってイメージ。
じゃー、とりあえず変数情報を得るために一時的に記憶すればOKか。
API仕様は以下だ。
fmi2_import_variable_t* fmi2_import_get_variable(fmi2_import_variable_list_t* vl, size_t index)
vl:変数リスト
index:変数リストから取得したい要素のインデックス
戻り値:変数オブジェクト(範囲外だとNULL)
そのまま配列的なアクセスかと思ったけど、
APIを経由するのか。
内部の構造としてはSTLのstd::vectorみたいな可変長配列として実装されているようだ。
と言っても、仕様として明確なのはAPI仕様だけなので、
FMILibraryの今後のversionUP次第では内部実装は変わってしまうことはあるだろう。
まぁAPIを経由するとは言え、使う側からすると配列アクセスとあんまり変わらないようにしてくれてるってことだね。
まとめ
まとめだよ。
- 「fmi2_import_get_variable_list_sizeによる変数リスト数の取得」の仕様確認。
- やってることはそのままでリストの要素数を取得。
- 「fmi2_import_get_variableによる変数オブジェクトの取得」の仕様確認。
- 変数オブジェクトは変数関連の情報にアクセスするハンドルのようなもの。
バックナンバーはこちら。
コメント