/* =============================================================================
 *  scpp_errno_win.hpp
 *  Copyright (c)  2003 - 2011  Nomura Kei
 *  LICENSE :
 *  LGPL (GNU Lesser General General Public License - Version 3,29 June 2007)
 *  http://www.gnu.org/copyleft/lesser.html
 * =============================================================================
 *
 * Windows の エラーを扱います.
 */
#ifndef SCPP_ERRNO_WIN_HPP
#define SCPP_ERRNO_WIN_HPP

#include <cerrno>

#include <scpp_os.hpp>

#if (SCPP_IS_WINDOWS)

#define SCPP_E2BIG            TYPE_E_OUTOFBOUNDS          /// 引き数リストが長過ぎる
#define SCPP_EACCES           WSAEACCES                   /// 許可がない
#define SCPP_EADDRINUSE       WSAEADDRINUSE               /// アドレスがすでに使用されている
#define SCPP_EADDRNOTAVAIL    WSAEADDRNOTAVAIL            /// アドレスが使用できない
#define SCPP_EAFNOSUPPORT     WSAEAFNOSUPPORT             /// アドレス・ファミリーがサポートされていない
#define SCPP_EAGAIN           WSATRY_AGAIN                /// リソースが一時的に利用不可
#define SCPP_EALREADY         WSAEALREADY                 /// 接続が既に処理中である
#define SCPP_EBADF            WSAEBADF                    /// ファイルディスクリプタが不正である
#define SCPP_EBADMSG          ERROR_INVALID_MESSAGE       /// メッセージが不正である
#define SCPP_EBUSY            ERROR_BUSY                  /// リソースが使用中である
#define SCPP_ECANCELED        WSAECANCELLED               /// 操作がキャンセルされた
#define SCPP_ECONNABORTED     WSAECONNABORTED             /// 接続が中止された
#define SCPP_ECONNREFUSED     WSAECONNREFUSED             /// 接続が拒否された
#define SCPP_ECONNRESET       WSAECONNRESET               /// 接続がリセットされた
#define SCPP_EDEADLK          ERROR_POSSIBLE_DEADLOCK     /// リソースのデッドロックを回避した
#define SCPP_EDESTADDRREQ     WSAEDESTADDRREQ             /// 宛先アドレスが必要である
#define SCPP_EDOM             ERROR_BAD_ARGUMENTS         /// 数学関数で引き数が領域外である
#define SCPP_EDQUOT           WSAEDQUOT                   /// ディスク・クォータ (quota) を超過した
#define SCPP_EEXIST           ERROR_FILE_EXISTS           /// ファイルが存在する
#define SCPP_EFAULT           WSAEFAULT                   /// アドレスが不正である
#define SCPP_EFBIG            ERROR_CANNOT_MAKE           /// ファイルが大き過ぎる
#define SCPP_EHOSTDOWN        WSAEHOSTDOWN                /// ホストがダウンしている
#define SCPP_EHOSTUNREACH     WSAEHOSTUNREACH             /// ホストに到達不能である
#define SCPP_EIDRM            ERROR_INVALID_HANDLE        /// 識別子が削除された
#define SCPP_EILSEQ           ERROR_INVALID_DATA          /// 不正なバイト列
#define SCPP_EINPROGRESS      WSAEINPROGRESS              /// 操作が実行中である
#define SCPP_EINTR            WSAEINTR                    /// 関数呼び出しが割り込まれた
#define SCPP_EINVAL           WSAEINVAL                   /// 引数が無効である
#define SCPP_EIO              ERROR_IO_DEVICE             /// 入出力エラー
#define SCPP_EISCONN          WSAEISCONN                  /// ソケットが接続されている
#define SCPP_ELOOP            WSAELOOP                    /// シンボリック・リンクの回数が多過ぎる
#define SCPP_EMFILE           WSAEMFILE                   /// オープンされたファイルが多すぎます
#define SCPP_EMLINK           ERROR_TOO_MANY_LINKS        /// リンクが多すぎます
#define SCPP_EMSGSIZE         WSAEMSGSIZE                 /// メッセージが長過ぎる
#define SCPP_ENAMETOOLONG     WSAENAMETOOLONG             /// ファイル名が長過ぎる
#define SCPP_ENETDOWN         WSAENETDOWN                 /// ネットワークが不通である
#define SCPP_ENETRESET        WSAENETRESET                /// 接続がネットワーク側から中止された
#define SCPP_ENETUNREACH      WSAENETUNREACH              /// ネットワークが到達不能である
#define SCPP_ENFILE           ERROR_EA_TABLE_FULL         /// ファイルテーブルがオーバフローしました
#define SCPP_ENOBUFS          WSAENOBUFS                  /// 使用可能なバッファ空間がない
#define SCPP_ENODATA          WSANO_DATA                  /// ストリームの読み出しキューの先頭に読み出し可能なメッセージがない
#define SCPP_ENODEV           ERROR_DEV_NOT_EXIST         /// デバイスが存在しません
#define SCPP_ENOENT           ERROR_FILE_NOT_FOUND        /// ファイルまたはディレクトリが存在しません
#define SCPP_ENOEXEC          ERROR_BAD_FORMAT            /// exec フォーマットエラー
#define SCPP_ENOMEM           ERROR_OUTOFMEMORY           /// 十分な空きメモリ領域が無い
#define SCPP_ENOPROTOOPT      WSAENOPROTOOPT              /// 指定されたプロトコルが利用できない
#define SCPP_ENOSPC           ERROR_HANDLE_DISK_FULL      /// デバイス上のスペースが足りません
#define SCPP_ENOSYS           TYPE_E_DLLFUNCTIONNOTFOUND  /// 関数が実装されていない
#define SCPP_ENOTCONN         WSAENOTCONN                 /// ソケットが接続されていない
#define SCPP_ENOTEMPTY        WSAENOTEMPTY                /// ディレクトリが空ではない
#define SCPP_ENOTSOCK         WSAENOTSOCK                 /// ソケットではない
#define SCPP_ENOTSUP          ERROR_NOT_SUPPORTED         /// 操作がサポートされていない
#define SCPP_ENOTTY           RROR_INVALID_CATEGORY       /// デバイスへのioctl が正しくありません
#define SCPP_ENXIO            ERROR_BAD_UNIT              /// デバイスまたはアドレスが存在しません
#define SCPP_EOPNOTSUPP       WSAEOPNOTSUPP               /// ソケットでサポートしていない操作である
#define SCPP_EPERM            WSAEACCES                   /// スーパーユーザではありません
#define SCPP_EPFNOSUPPORT     WSAEPFNOSUPPORT             /// サポートされていないプロトコルファミリーである
#define SCPP_EPIPE            ERROR_BROKEN_PIPE           /// パイプが中断されました
#define SCPP_EPROTO           ERROR_DS_PROTOCOL_ERROR     /// プロトコル・エラー
#define SCPP_EPROTONOSUPPORT  WSAEPROTONOSUPPORT          /// プロトコルがサポートされていない
#define SCPP_EPROTOTYPE       WSAEPROTOTYPE               /// ソケットに指定できないプロトコル・タイプである
#define SCPP_ERANGE           ERROR_DS_OBJECT_RESULTS_TOO_LARGE   /// 数学関数結果が表示不可能です
#define SCPP_EREMOTE          WSAEREMOTE                  /// オブジェクトがリモートにある
#define SCPP_EROFS            ERROR_FILE_READ_ONLY        /// 読み取り専用のファイルシステムです
#define SCPP_ESHUTDOWN        WSAESHUTDOWN                /// 通信相手がシャットダウンされて送信できない
#define SCPP_ESOCKTNOSUPPORT  WSAESOCKTNOSUPPORT          /// サポートされていないソケット種別である
#define SCPP_ESPIPE           ERROR_BAD_PIPE              /// シークが正しくありません
#define SCPP_ESTALE           WSAESTALE                   /// ファイルハンドルが古い状態になっている
#define SCPP_ETIME            WSAETIMEDOUT                /// 時間が経過した
#define SCPP_ETIMEDOUT        WSAETIMEDOUT                /// 操作がタイムアウトした
#define SCPP_ETXTBSY          ERROR_BUSY                  /// テキストファイルは使われています。(旧仕様)
#define SCPP_EXDEV            ERROR_NOT_SAME_DEVICE       /// デバイスにまたがるリンクになります

#endif	// SCPP_IS_WINDOWS


#endif	// SCPP_ERRNO_WIN_HPP

