2013年8月24日土曜日

【なでしこ】プラグインを作ってみる ~設計編 その6~

今回の設計はファイルです。バイナリ形式でファイルを扱いますが、
「バイナリファイル~」と書くと長いので、「バイナリ~」とします。

------ここから------

・バイナリオープン
    書式:バイナリオープン([str]ファイル名、[int]モード)
    戻値:[int]ハンドル
    説明:ファイル名で指定されたファイルを、モードで指定された方法で
       オープンする。モードには0,1,2,3の何れかを指定し、意味は
          以下のとおり。

           0 : 読込専用
           1 : 書込専用
           2 : 読み書き
           3 : 追記
           
         ファイルは常にバイナリとしてオープンされる。テキストモード
          で扱いたい場合には、なでしこの組み込み命令を使用すると良い。

         成功すると0以上のハンドルが返される。失敗した場合には-1が
          返される(ファイルがない、モードが範囲外など)

・バイナリ読込
    書式:バイナリ読込([int]ハンドル、[int]先ハンドル、[int]サイズ)
    戻値:[int]サイズ
    説明:バイナリオープンされているハンドルから、サイズ分を読み
         込んで先ハンドル(バッファ)に書き込む。読み込めるサイズは
          コピー先のバッファサイズに依存し、バッファサイズ以上の
          データは読み込まない。読み込めたサイズは戻り値として
          返される。
         
          読み込み開始位置は現在の開始位置で、読み込む毎にオフセット
          がプラスされる。現在の開始位置はバイナリ位置取得命令で
          取得出来、位置の変更はバイナリシーク命令で可能である。
         
          引数が不正な場合等、エラーの場合は-1が返される。

・バイナリ書込
    書式:バイナリ書込([int]ハンドル、[int]元ハンドル、[int]サイズ)
    戻値:[int]サイズ
    説明:作成済みのバッファ(元ハンドル)からサイズ分読み込んで、
     バイナリオープンされているハンドルに対して書き込む。
          書き込めるサイズは元ハンドルのサイズに依存し、それ以上の
          サイズを指定した場合は、書き込めるだけ書き込む。
          (データがある分だけ書き込む)。書き込めたサイズが戻り値
          として返される。
         
          書込開始位置は、書込専用、読み書き用にオープンしている場合は
          ファイルの先頭から開始し、書き込む毎にオフセットがプラスされ
          る。既存ファイルの場合は一旦ファイルが消去されるので注意する
          こと。追記モードの場合はファイルの終端から書込が開始される。
         
          引数が不正な場合等、エラーの場合は-1が返される。

・バイナリシーク
    書式:バイナリシーク([int]ハンドル、[int]オフセット)
    戻値:[int]オフセット
    説明:バイナリオープンされているハンドルの読み込み・書込開始
       位置をオフセットの値に設定する。オフセットは0以上の
          値で、ファイルサイズ以上の値を設定した場合には、ファイルの
          末尾となる。
         
          成功した場合にはオフセット値が、失敗した場合には-1が
          返される。

・バイナリ位置取得
    書式:バイナリ位置取得([int]ハンドル)
    戻値:[int]位置
    説明:バイナリオープンされているハンドルの、現在開始位置を
       返す。引数が不正だった場合には-1が返される。

------ここまで------

ANSIでいう所のfopen, fread, fwrite, fseek, ftellに相当する関数です。
バイナリじゃない形式でファイルを扱いたい場合は、なでしこの「開く」
とか使ってください。

あと、今気がつきましたが、なでしこには「バイナリ取得」とか「バイナリ設定」
と言う命令がありますね( ̄□ ̄;。混同しない様に気をつけて下さい。