このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

クラス宣言の実例

差し障りの無い実例を挙げる。今までは、ソース内にメモ書きだったものが、文書に入る。ソースのフォーマティングのための見出しも文書の構造として反映される。

//! ファイルシステムのノード(ディレクトリまたはファイル)の情報を表すクラス
/*!

次の3つのメンバーは、
Windows API で使われる struct _WIN32_FIND_DATA と名前も意味も同じである。

- #dwFileAttributes ファイル属性
- #ftCreateTime ファイルの作成日時
- #cFileName ファイル名(バッファ長: MAX_PATH)

次の2つは、利便性を考えて struct _WIN32_FIND_DATA から変更・追加した。

- #ullFileSize ファイルサイズ
- #cFilePath ボリュームルートからのパス

*/
class FileInfoC {

public:
    //! @name  struct _WIN32_FIND_DATA と同名のメンバー
    //!@{
    DWORD  dwFileAttributes;         //!< ファイル属性
    //! ファイルの作成日時
    /*!
      FILETIME構造体の定義は:

      ```
      typedef struct _FILETIME {
        DWORD dwLowDateTime;   // low 32 bits
        DWORD dwHighDateTime;  // high 32 bits
      } FILETIME, *PFILETIME, *LPFILETIME;
      ```
      SYSTEMTIMEとの相互変換は:

      ```
      BOOL SystemTimeToFileTime(
        _In_  const SYSTEMTIME *lpSystemTime,
        _Out_       LPFILETIME lpFileTime
      );

      BOOL FileTimeToSystemTime(
        _In_  const FILETIME     *lpFileTime,
        _Out_       LPSYSTEMTIME lpSystemTime
      );
      ```
      参考:

      ```
      void GetSystemTime(
        _Out_ LPSYSTEMTIME lpSystemTime
      );
      ```
    */
    FILETIME  ftCreateTime;          // ファイルの作成日時
    char   cFileName[MAX_PATH];      //!< ファイル名
    //!@}
    
    //! @name 変更・追加したメンバー
    //!@{
    ULONGLONG ullFileSize;            //!< フィアルのサイズ
    char   cFilePath[MAXFULLPATHLEN]; //!< ルートからのファイルフルパス

    //!@}

    // ....
};