## Class file_status

hamigaki::filesystem::file_status —

ファイルの状態情報を保持する

## Synopsis

    class file_status {
    public:
      // construct/copy/destruct
      explicit file_status(file_type = status_unknown);

      // queries
      file_type type() const;
      bool has_attributes() const;
      file_attributes::value_type attributes() const;
      bool has_permissions() const;
      file_permissions::value_type permissions() const;
      boost::uintmax_t file_size() const;
      timestamp last_write_time() const;
      timestamp last_access_time() const;
      bool has_last_change_time() const;
      timestamp last_change_time() const;
      bool has_creation_time() const;
      timestamp creation_time() const;
      bool has_uid() const;
      boost::intmax_t uid() const;
      bool has_gid() const;
      boost::intmax_t gid() const;

      // modifiers
      void type(file_type);
      void attributes(file_attributes::value_type);
      void permissions(file_permissions::value_type);
      void file_size(boost::uintmax_t);
      void last_write_time(const timestamp&);
      void last_access_time(const timestamp&);
      void last_change_time(const timestamp&);
      void creation_time(const timestamp&);
      void uid(boost::intmax_t);
      void gid(boost::intmax_t);
    };

    // predicate functions
    bool status_known(const file_status&);
    bool exists(const file_status&);
    bool is_regular(const file_status&);
    bool is_directory(const file_status&);
    bool is_symlink(const file_status&);
    bool is_other(const file_status&);

## Description

### `file_status` construct/copy/destruct

1.     explicit file_status(file_type v = status_unknown);

   Effects: | `this->type(v)`

### `file_status` queries

1.     file_type type() const;

   Returns: | `file_status`が保持しているファイルの種類

2.     bool has_attributes() const;

   Returns: | `file_status`がファイル属性を保持していれば`true`。そうでなければ`false`。

3.     file_attributes::value_type attributes() const;

   Requires: | `has_attributes() == true`
   Returns: | `file_status`が保持しているファイル属性

4.     bool has_permissions() const;

   Returns: | `file_status`がファイル許可属性を保持していれば`true`。そうでなければ`false`。

5.     file_permissions::value_type permissions() const;

   Requires: | `has_permissions() == true`
   Returns: | `file_status`が保持しているファイル許可属性

6.     boost::uintmax_t file_size() const;

   Returns: | `file_status`が保持しているファイルサイズ

7.     timestamp last_write_time() const;

   Returns: | `file_status`が保持しているファイル最終更新時間

8.     timestamp last_access_time() const;

   Returns: | `file_status`が保持しているファイル最終アクセス時間

9.     bool has_last_change_time() const;

   Returns: | `file_status`がファイル最終状態変更時間を保持していれば`true`。そうでなければ`false`。

10.     timestamp last_change_time() const;

    Requires: | `has_last_change_time() == true`
    Returns: | `file_status`が保持しているファイル最終状態変更時間

11.     bool has_creation_time() const;

    Returns: | `file_status`がファイル作成時間を保持していれば`true`。そうでなければ`false`。

12.     timestamp creation_time() const;

    Requires: | `has_creation_time() == true`
    Returns: | `file_status`が保持しているファイル作成時間

13.     bool has_uid() const;

    Returns: | `file_status`がユーザーIDを保持していれば`true`。そうでなければ`false`。

14.     boost::intmax_t uid() const;

    Requires: | `has_uid() == true`
    Returns: | `file_status`が保持しているユーザーID

15.     bool has_gid() const;

    Returns: | `file_status`がグループIDを保持していれば`true`。そうでなければ`false`。

16.     boost::intmax_t gid() const;

    Requires: | `has_gid() == true`
    Returns: | `file_status`が保持しているグループID

### `file_status` modifiers

1.     void type(file_type v);

   Effects: | `file_status`が保持しているファイルの種類を`v`に変更する

2.     void attributes(file_attributes::value_type v);

   Effects: | `file_status`が保持しているファイル属性を`v`に変更する

3.     void permissions(file_permissions::value_type v);

   Effects: | `file_status`が保持しているファイル許可属性を`v`に変更する

4.     void file_size(boost::uintmax_t v);

   Effects: | `file_status`が保持しているファイルサイズを`v`に変更する

5.     void last_write_time(const timestamp& v);

   Effects: | `file_status`が保持しているファイル最終更新時間を`v`に変更する

6.     void last_access_time(const timestamp& v);

   Effects: | `file_status`が保持しているファイル最終アクセス時間を`v`に変更する

7.     void last_change_time(const timestamp& v);

   Effects: | `file_status`が保持しているファイル最終状態変更時間を`v`に変更する

8.     void creation_time(const timestamp& v);

   Effects: | `file_status`が保持しているファイル作成時間を`v`に変更する

9.     void uid(boost::intmax_t v);

   Effects: | `file_status`が保持しているユーザーIDを`v`に変更する

10.     void gid(boost::intmax_t v);

    Effects: | `file_status`が保持しているグループIDを`v`に変更する

### `file_status` predicate functions

1.     bool status_known(const file_status& s);

   Returns: | `s.type() != status_unknown`

2.     bool exists(const file_status& s);

   Returns: | `status_known(s) && s.type() != file_not_found`

3.     bool is_regular(const file_status& s);

   Returns: | `s.type() == regular_file`

4.     bool is_directory(const file_status& s);

   Returns: | `s.type() == directory_file`

5.     bool is_symlink(const file_status& s);

   Returns: | `s.type() == symlink_file`

6.     bool is_other(const file_status& s);

   Returns: | `exists(s) && !is_regular(s) && !is_directory(s) && !is_symlink(s)`

| 製作著作 © 2006, 2007 Takeshi Mouri