# FSFile

## 定義

  `#include <nitro/fs.h>`
  `

      /* file and directory structure */
      typedef  struct  FSFile
      {
      // private:
          struct FSFile              *next;
          void                       *userdata;
          struct FSArchive           *arc;
          u32                         stat;
          void                       *argument;
          FSResult                    error;
          OSThreadQueue               queue[1];
          union
          {
              u8                      reserved1[16];
              FSROMFATProperty        prop;
          };
          union
          {
              u8                      reserved2[24];
              FSROMFATCommandInfo     arg;
          };
      } FSFile;

  `

## 説明

ファイルやディレクトリのアクセス関数で使用する構造体です。
メンバは全て内部処理でのみ使用され、直接これらを操作することは禁止されます。

## 注意

- この構造体の内部表現は将来の拡張で変更される可能性があります。 現在の実装におけるサイズやメンバに依存したプログラミングは避けてください。
- この構造体はリスト要素やシステムリソースへの双方向ポインタを内部に保持しているため、 構造体ごと単純に値コピーしても内容を移動・複製することはできません。 そのようなオブジェクトの動作は保証されません。

      // 例: このように複製されたfile2の動作は無保証です。
      FSFile file1, file2;
      FS_InitFile(&file1);
      FS_OpenFileEx(&file1, "rom/file1.bin", FS_FILEMODE_R);
      file2 = file1;

## 参照

`FS_OpenFileEx FS_OpenFileFast FS_CloseFile FS_GetFileLength FS_ReadFile FS_SeekFile FS_SeekFileToBegin FS_SeekFileToEnd FS_FindDir FS_ReadDir FS_TellDir FS_SeekDir FS_RewindDir`

## 履歴

2009/07/14 構造体の値コピーが無保証である旨を追記
2009/01/14 構造体定義をヘッダファイルと同一に訂正
2008/10/02 参照リストを一部更新
2004/11/02 構造体定義をヘッダファイルと同一に訂正
2004/05/20 FSFile の変更に伴う記述修正
2004/05/14 FSFile の変更に伴う記述修正
2004/04/13 FSFile の変更に伴う記述修正
2004/04/08 FSDirとFSFileの統合による記述修正
2004/04/01 初版