OSDN Git Service

Remove SFTP support to release 1.98f.
[ffftp/ffftp.git] / jreusr.h
1 // begin of jreusr.h\r
2 // ライブラリの使用者用ヘッダファイル\r
3 \r
4 #ifndef         JREUSR\r
5 #define         JREUSR\r
6 \r
7 // ---------------------------------------------------\r
8 // Prevent multiple includes.\r
9 \r
10 // _os_os2はこれ(jreusr.h)をインクルードするユーザーが定義する\r
11 #if defined(_OS_OS2)\r
12 // in case of os/2\r
13         // __OS2_H__ is for bc 2.0 e\r
14         // __OS2_H__ is for bc 1.5 e\r
15         #if !defined(__IBMC__) || !defined(__OS2_H__)\r
16                 // 他のクラスでtype.hをインクルードさせないように先にincludeする.\r
17                 // INCL_???など必要な定数は先に定義しておく.\r
18                 #include <os2.h>\r
19         #endif  // defined(__IBMC__) || defined(__OS2_H__)\r
20 \r
21         #define JRE_BUILDTYPE_OS2PM\r
22 \r
23 #else\r
24 // in case of windows\r
25 \r
26         // bc4.5 e __WINDOWS_H,\r
27         // bc4.0 j __WINDOWS_H,\r
28         // bc3.1 j __WINDOWS_H,\r
29         // msvc4.1 j _INC_WINDOWS, _WINDOWS_\r
30         // msvc4.0 j _INC_WINDOWS,\r
31         // msvc2.0 j ???, ???\r
32         // msvc1.0 j _INC_WINDOWS,\r
33         // ddk _INC_WINDOWS\r
34         // WinCE SDK - WIN32 and PEGASUS\r
35 \r
36         #if !defined(__WINDOWS_H) && !defined(_INC_WINDOWS)\r
37                 #ifndef STRICT\r
38                         #define STRICT\r
39                 #endif  // STRICT\r
40                 // 他のクラスでtype.hをインクルードさせないように先にincludeする.\r
41                 #include <windows.h>\r
42         #endif  // !defined(__WINDOWS_H) && !defined(_INC_WINDOWS)\r
43 \r
44         #if defined(__WIN32__) || defined(WIN32)\r
45                 #define JRE_BUILDTYPE_WIN32\r
46                 #if defined(PEGASUS)\r
47                         #define JRE_SUBSET_WINCE\r
48                 #endif\r
49         #else\r
50                 #define JRE_BUILDTYPE_WIN16\r
51         #endif\r
52         #define JRE_BUILDTYPE_WINDOWS\r
53 \r
54 #endif  // os/2 or windows\r
55 \r
56 // ---------------------------------------------------\r
57 #if defined(JRE_BUILDTYPE_OS2PM)\r
58         // in case of JRE_BUILDTYPE_OS2PM\r
59         // 以下,jre/os2ローカルの定義\r
60         #if !defined(EXTAPI)\r
61                 #define EXTAPI _export EXPENTRY\r
62         #endif  // !defined(EXTAPI)\r
63         #if !defined(MEMID)\r
64                 typedef void* MEMID;\r
65         #endif  // !defined(MEMID)\r
66 \r
67         // os2にはPSZがある.\r
68         typedef PSZ PSTR, LPSTR;\r
69         typedef int (*FARPROC)(void);   // farproc\r
70         //os2にはUSHORT,ULONGがある.\r
71         typedef USHORT WORD;\r
72         typedef ULONG DWORD;\r
73         // OS/2にはSHANDLEとLHANDLEがある.\r
74         typedef LHANDLE HANDLE; // 汎用ハンドルを作っておいて……\r
75         typedef HANDLE GLOBALHANDLE;\r
76         typedef HANDLE*PHANDLE, *LPHANDLE;\r
77 \r
78 #else\r
79         // in case of JRE_BUILDTYPE_WIN32 or JRE_BUILDTYPE_WIN16 (= JRE_BUILDTYPE_WINDOWS)\r
80         // 以下,jre/winローカルの定義\r
81         #if !defined(EXTAPI)\r
82                 #if defined(_MSC_VER)\r
83                         #define EXTAPI WINAPI   // VC2では_exportが通らないので注意.\r
84                 #endif\r
85                 #if defined(__BORLANDC__)\r
86                         #if defined(_TEST_EXE)\r
87                                 #define EXTAPI WINAPI\r
88                         #else\r
89                                 #define EXTAPI _export WINAPI\r
90                         #endif\r
91                 #endif\r
92         #endif  // !defined(EXTAPI)\r
93 \r
94         #if !defined(MEMID)\r
95                 #if defined(JRE_BUILDTYPE_WIN32)\r
96                         typedef void*MEMID;     // 明示的にポインタにしました.\r
97                 #else\r
98                         typedef HGLOBAL MEMID;\r
99                 #endif  // __WIN32__\r
100         #endif  // !defined(MEMID)\r
101 \r
102 #endif\r
103 \r
104 // --------------------------------------------------- グローバル変数\r
105 \r
106 \r
107 \r
108 // ------------------------------------------------------------- 定数\r
109 // _JRE_ERR_CODEと_JRE_WARN_CODEのシンボルは山田がデバッグ時に使用しています.\r
110 \r
111 #define _JRE_ERR_CODE\r
112 // エラーコード.nErrorが1~63まで. int型\r
113 #define         CantAllocate    ( 1)    //      メモリの確保ができない.絶対的なメモリ不足.\r
114 #define         MemoryTooFew1   ( 2)    //      メモリが足りない1.(実行時に決まるもの.メモリサイズの予測に失敗した)\r
115 #define         MemoryTooFew2   ( 3)    //  メモリが足りない2.(DLL作成時に決まるもの)\r
116 #define         ReTooLong               (10)    //      正規表現が長すぎる.\r
117 #define         TooComplex              (13)    //      もっと簡単な表現にして下さい.このDLLの弱いパターンで,見つけられない.ただし滅多な事では発生しない.\r
118 #define         MismatchBracket (20)    //      括弧の対応が正しくない.\r
119 #define         InvalidChClass  (21)    //      キャラクタクラスの内容が解釈できない.殆どの場合範囲指定が正しくない.\r
120 #define         EscErr                  (24)    //      エスケープシークェンスが解釈できない.\r
121 #define         Unknown                 (31)    //  なんだか良くわからないエラー.複合的な要因で発生するエラー.殆どがメモリサイズの予測に失敗.\r
122 #define         NoReString              (32)    //  検索パターンを指定して下さい.正規表現長が0バイト.\r
123 #define         IncorrectUsing  (33)    //  パラメータがおかしい.DLLの不正な使用法.\r
124 #define         ReNotExist              (34)    //      検索する前にコンパイルして下さい.\r
125 #define         InternalErr             (35)    //  DLLのバグを検出した.これが発生したら作者に連絡して欲しい.\r
126 #define         UsrAbort                (36)    //  ユーザー(アプリケーション)による中断.\r
127 #define         OldVersion              (37)    //      古い(解釈できない)バージョンの呼び出し手順を使用した.\r
128 // CantAllocate, TooComplex, MemoryTooFew2, ReNotExist, IncorrectUsing, UsrAbortは検索時にも発生するもの\r
129 \r
130 #define _JRE_WARN_CODE\r
131 // 警告コード. レポートコード. jre2構造体のnWarningメンバ.\r
132 // これはそれぞれのビットにマッピングする可能性が高いので,\r
133 // if (CwInlinePattern | jre2.nWarning){\r
134 // }\r
135 // で評価してください.\r
136 #define         CwInlinePattern (2)     // 行内の処理につき,再呼び出しの必要はない.\r
137 \r
138 #define JGC_SHORT (1)\r
139 #define JGC_LONG (2)\r
140 \r
141 // jre.dllで使用するメッセージの最大長(保証).このサイズのバッファに収まらない文字列は渡しません(nullまで含めてこのサイズ).\r
142 #define JRE_MAXLEN (128)\r
143 \r
144 // GetJreMessageの言語番号.\r
145 #define GJM_JPN (0)\r
146 #define GJM_ENG (1)\r
147 \r
148 // ----------------------------------------------------------- 構造体\r
149 // JRE構造体. バージョンにかかわらずjre構造体のアラインメントは8bit(1byte)です。\r
150 #pragma pack(1)\r
151 // JRE構造体は極力使用しないでください.今後のバージョンで廃止します(バージョン2.xxまででサポートを止めます).\r
152 // これに代わる構造体はJRE2構造体です.\r
153 typedef struct tagJRE{\r
154         BOOL bConv;                                             // この構造体の使用中を示すフラグ.\r
155         int nStart;                                             // 検索開始位置.バイト数.先頭は0.\r
156         int nWarning;                                   // ウォーニングコード.\r
157         int nError;                                             // エラーコード.\r
158         int nLength;                                    // マッチ長.バイト数.\r
159         int nPosition;                                  // マッチ位置.先頭は0.(お恥ずかしい)\r
160         WORD wTranslate;                                // 変換テーブル番号.\r
161         LPSTR lpszTable;                                // 変換テーブル.\r
162         FARPROC lpfnUsrFunc;                    // コールバック関数へのFARポインタ.\r
163         int nCompData1;                                 // コンパイルデータ1.\r
164         MEMID hCompData2;               // コンパイルデータ2.ハンドル.\r
165         MEMID hCompData3;               // コンパイルデータ3.ハンドル.\r
166         MEMID hCompData4;               // コンパイルデータ4.ハンドル.\r
167 } JRE, *PJRE, NEAR*NPJRE, FAR*LPJRE;\r
168 #pragma pack()\r
169 \r
170 \r
171 #pragma pack(1)\r
172 // バージョン1.06以降はこの構造体を使用してください.\r
173 // ただし,バージョン1.xxでは仕様が流動的です(どないせーちゅうねん).\r
174 typedef struct tagJRE2{\r
175         DWORD dwSize;                                   // この構造体のサイズ.\r
176         BOOL bConv;                                             // この構造体の使用中を示すフラグ.\r
177         UINT nStart;                                    // 検索開始位置.バイト数.先頭は0.\r
178         UINT nWarning;                                  // ウォーニングコード. (v1.11からUINTに変更)\r
179         int nError;                                             // エラーコード.\r
180         UINT nLength;                                   // マッチ長.バイト数.\r
181         UINT nPosition;                                 // マッチ位置.先頭は0.(お恥ずかしい)\r
182         WORD wTranslate;                                // 変換テーブル番号.\r
183         LPSTR lpszTable;                                // 変換テーブル.\r
184         FARPROC lpfnUsrFunc;                    // コールバック関数へのFARポインタ(使わないように).\r
185         UINT nCompData1;                                        // コンパイルデータ1.\r
186         MEMID hCompData2;               // コンパイルデータ2.ハンドル.\r
187         MEMID hCompData3;               // コンパイルデータ3.ハンドル.\r
188         MEMID hCompData4;               // コンパイルデータ4.ハンドル.\r
189 } JRE2, *PJRE2, NEAR*NPJRE2, FAR*LPJRE2;\r
190 #pragma pack()\r
191 \r
192 // ------------------------------------------------ プロトタイプおよびマクロ\r
193 #ifdef __cplusplus      // caution! it's NOT cpulspuls!!!\r
194         extern "C"{\r
195 #endif  // __cplusplus\r
196 \r
197 // バージョンに関係ないAPI\r
198 BOOL EXTAPI IsMatch(LPSTR lpszStr, LPSTR lpszRe);\r
199 int EXTAPI GlobalReplace(LPSTR lpszRe, LPSTR lpszObj, LPSTR lpszStr, LPHANDLE lphGMemTo);\r
200 WORD EXTAPI JreGetVersion(void);\r
201 #if defined(JRE_BUILDTYPE_WIN16)\r
202         MEMID EXTAPI DecodeEscSeqAlloc2(LPSTR lpszRe);  // 16bit Windowsの遺物.\r
203 #endif  // defined(JRE_BUILDTYPE_WIN16)\r
204 UINT EXTAPI DecodeEscSeq(LPSTR lpszRe, LPSTR lpszBuff, UINT uiSize);    // new!\r
205 int EXTAPI GetJreMessage(int nMessageType, int nLanguage, LPSTR lpszBuff, int cbBuff);\r
206 // バージョン1API\r
207 BOOL EXTAPI JreOpen(LPJRE lpjreJre);\r
208 BOOL EXTAPI JreCompile(LPJRE lpjreJre, LPSTR lpszRe);\r
209 BOOL EXTAPI JreGetMatchInfo(LPJRE lpjreJre, LPSTR lpszStr);\r
210 BOOL EXTAPI JreClose(LPJRE lpjreJre);\r
211 // バージョン2API\r
212 BOOL EXTAPI Jre2Open(LPJRE2 lpjreJre);\r
213 BOOL EXTAPI Jre2Compile(LPJRE2 lpjreJre, LPSTR lpszRe);\r
214 BOOL EXTAPI Jre2GetMatchInfo(LPJRE2 lpjreJre, LPSTR lpszStr);\r
215 BOOL EXTAPI Jre2Close(LPJRE2 lpjreJre);\r
216 \r
217 \r
218 #ifdef __cplusplus\r
219         }\r
220 #endif  // __cplusplus\r
221 \r
222 // ----------------------------------------------------------- 型定義\r
223 // GetProcAddressを使用する際のポインタ変数を宣言しやすくしておく.\r
224 typedef BOOL (EXTAPI*LPISMATCH) (LPSTR, LPSTR);\r
225 typedef int (EXTAPI*LPGLOBALREPLACE) (LPSTR, LPSTR, LPSTR, LPHANDLE);\r
226 typedef WORD (EXTAPI*LPJREGETVERSION) (VOID);\r
227 #if defined(JRE_BUILDTYPE_WIN16)\r
228         typedef MEMID (EXTAPI*LPDECODEESCSEQALLOC2) (LPSTR);\r
229 #endif  // defined(JRE_BUILDTYPE_WIN16)\r
230 typedef UINT (EXTAPI*LPDECODEESCSEQ) (LPSTR lpszRe, LPSTR lpszBuff, UINT uiSize);\r
231 typedef int (EXTAPI*LPGETJREMESSAGE) (int, int, LPSTR, int);\r
232 typedef BOOL (EXTAPI*LPJRE2OPEN) (LPJRE2);\r
233 typedef BOOL (EXTAPI*LPJRE2COMPILE) (LPJRE2, LPSTR);\r
234 typedef BOOL (EXTAPI*LPJRE2GETMATCHINFO) (LPJRE2, LPSTR);\r
235 typedef BOOL (EXTAPI*LPJRE2CLOSE) (LPJRE2);\r
236 \r
237 \r
238 \r
239 \r
240 #endif  // JREUSR\r
241 // end of jreusr.h\r