1Callouts API Version 6.8.2 2018/06/08 2 3#include <oniguruma.h> 4 5(1) 呼び出し関数 6(2) 内容の呼び出し関数の設定/取得 7(3) 名前の呼び出し関数の設定 8(4) ユーザデータ 9(5) OnigCalloutArgsからの値の取得 10(6) 名札 11(7) 呼び出しデータ (呼び出し関数内から使用される) 12(8) 呼び出しデータ (アプリケーションから使用される) 13(9) その他の関数 14 15 16(1) 呼び出し関数 17 18 型: OnigCalloutFunc 19 20 typedef int (*OnigCalloutFunc)(OnigCalloutArgs* args, void* user_data); 21 22 若し呼び出し関数として0(NULL)がセットされると、呼ばれることはない 23 24 25 * 呼び出し関数の戻り値 (int) 26 27 ONIG_CALLOUT_FAIL (== 1): 失敗 28 ONIG_CALLOUT_SUCCESS (== 0): 成功 29 -1未満: エラーコード (検索/照合の終了) 30 31 ONIG_CALLOUT_FAIL/SUCCESSは、後退中の呼び出しでは無視される。 32 後退は失敗の回復過程なので。 33 34 * 呼び出し関数の例 35 36 extern int always_success(OnigCalloutArgs* args, void* user_data) 37 { 38 return ONIG_CALLOUT_SUCCESS; 39 } 40 41 42 43(2) 内容の呼び出し関数の設定/取得 44 45# OnigCalloutFunc onig_get_progress_callout(void) 46 47 内容の呼び出し関数(前進中)を返す 48 49 50# int onig_set_progress_callout(OnigCalloutFunc f) 51 52 内容の呼び出し関数(前進中)をセットする。 53 この値はonig_initialize_match_param()の中でデフォルトの呼び出し関数として 54 セットされる。 55 56 正常終了: ONIG_NORMAL 57 58 59# OnigCalloutFunc onig_get_retraction_callout(void) 60 61 内容の呼び出し関数(後退中)を返す 62 63 64# int onig_set_retraction_callout(OnigCalloutFunc f) 65 66 内容の呼び出し関数(後退中)をセットする。 67 この値はonig_initialize_match_param()の中でデフォルトの呼び出し関数として 68 セットされる。 69 70 正常終了: ONIG_NORMAL 71 72 73# int onig_set_progress_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) 74 75 内容の呼び出し関数(前進中)をセットする。 76 77 引数 78 1 mp: match-paramアドレス 79 2 f: 関数 80 81 正常終了: ONIG_NORMAL 82 83 84# int onig_set_retraction_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f) 85 86 内容の呼び出し関数(後退中)をセットする。 87 88 引数 89 1 mp: match-paramアドレス 90 2 f: 関数 91 92 正常終了: ONIG_NORMAL 93 94 95 96(3) 名前の呼び出し関数の設定 97 98# int onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType type, OnigUChar* name, OnigUChar* name_end, int callout_in, OnigCalloutFunc callout, OnigCalloutFunc end_callout, int arg_num, unsigned int arg_types[], int opt_arg_num, OnigValue opt_defaults[]) 99 100 名前の呼び出し関数をセットする。 101 名前に許される文字: _ A-Z a-z 0-9 (* 最初の文字: _ A-Z a-z) 102 103 (enc, name)のペアが、呼び出し関数を見つけるためのキーとして使用される。 104 アプリケーションで使用される各エンコーディングに対してこの関数を呼ぶ必要がある。 105 しかし若しencエンコーディングがASCII互換であり、(enc, name)に対するエントリが 106 見つからない場合には、(ASCII, name)エントリが参照される。 107 従って、若しASCII互換エンコーディングのみ使用している場合には、この関数を(ASCII, name) 108 について一回呼べば十分である。 109 110 引数 111 1 enc: 文字エンコーディング 112 2 type: 呼び出し型 (現在は ONIG_CALLOUT_TYPE_SINGLE のみサポート) 113 3 name: 名前のアドレス (encでエンコーディングされている文字列) 114 4 name_end: 名前の終端アドレス 115 5 callout_in: 方向フラグ (ONIG_CALLOUT_IN_PROGRESS/RETRACTION/BOTH) 116 6 callout: 呼び出し関数 117 7 end_callout: *まだ使用していない (0をセット) 118 8 arg_num: 引数の数 (* 最大値 ONIG_CALLOUT_MAX_ARGS_NUM == 4) 119 9 arg_types: 引数の型の配列 120 10 opt_arg_num: オプション引数の数 121 11 opt_defaults: オプション引数のデフォルト値 122 123 正常終了: ONIG_NORMAL 124 error: 125 ONIGERR_INVALID_CALLOUT_NAME 126 ONIGERR_INVALID_ARGUMENT 127 ONIGERR_INVALID_CALLOUT_ARG 128 129 130 131(4) ユーザデータ 132 133# int onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data) 134 135 呼び出し関数の引数として渡されるユーザデータをセットする。 136 137 正常終了: ONIG_NORMAL 138 139 140 141(5) OnigCalloutArgsからの値の取得 142 143# int onig_get_callout_num_by_callout_args(OnigCalloutArgs* args) 144 145 この呼び出しの呼び出し番号を返す。 146 "呼び出し番号"とは、正規表現パターンの中の呼び出しに対する識別子である。 147 148 149# OnigCalloutIn onig_get_callout_in_by_callout_args(OnigCalloutArgs* args) 150 151 この呼び出しが起きた時の方向(前進中/後退中)を返す。 152 (ONIG_CALLOUT_IN_PROGRESS か ONIG_CALLOUT_IN_RETRACTION) 153 154 155# int onig_get_name_id_by_callout_args(OnigCalloutArgs* args) 156 157 この呼び出しの名前(name)の識別子を返す。 158 若しこの呼び出しが内容の呼び出しのときには、ONIG_NON_NAME_IDが返される。 159 160 161# const OnigUChar* onig_get_contents_by_callout_args(OnigCalloutArgs* args) 162 163 この呼び出しの内容文字列(NULL終端あり)を返す。 164 若しこの呼び出しが名前の呼び出しのときには、NULLを返す。 165 166 167# const OnigUChar* onig_get_contents_end_by_callout_args(OnigCalloutArgs* args) 168 169 この呼び出しの内容(contents)の終端を返す。 170 若しこの呼び出しが名前の呼び出しのときには、NULLを返す。 171 172 173# int onig_get_args_num_by_callout_args(OnigCalloutArgs* args) 174 175 この呼び出しの引数の数を返す。 176 正規表現パターンの中で渡されなかったオプション引数も含む。 177 若しこの呼び出しが内容の呼び出しのときには、ONIGERR_INVALID_ARGUMENTが返される。 178 179 180# int onig_get_passed_args_num_by_callout_args(OnigCalloutArgs* args) 181 182 この呼び出しの本当に渡された引数の数を返す。 183 若しこの呼び出しが内容の呼び出しのときには、ONIGERR_INVALID_ARGUMENTが返される。 184 185 186# int onig_get_arg_by_callout_args(OnigCalloutArgs* args, int index, OnigType* type, OnigValue* val) 187 188 この呼び出しの一個の引数の値と型を返す。 189 若しこの呼び出しが内容の呼び出しのときには、ONIGERR_INVALID_ARGUMENTが返される。 190 191 正常終了: ONIG_NORMAL 192 193 194# const OnigUChar* onig_get_string_by_callout_args(OnigCalloutArgs* args) 195 196 対象文字列のアドレスを返す。 197 onig_search()の二番目の引数(str)である。 198 199 200# const OnigUChar* onig_get_string_end_by_callout_args(OnigCalloutArgs* args) 201 202 対象文字列の終端アドレスを返す。 203 onig_search()の三番目の引数(end)である。 204 205 206# const OnigUChar* onig_get_start_by_callout_args(OnigCalloutArgs* args) 207 208 対象文字列の現在の照合処理開始アドレスを返す。 209 210 211# const OnigUChar* onig_get_right_range_by_callout_args(OnigCalloutArgs* args) 212 213 対象文字列の現在の照合範囲アドレスを返す。 214 215 216# const OnigUChar* onig_get_current_by_callout_args(OnigCalloutArgs* args) 217 218 対象文字列の現在の照合位置アドレスを返す。 219 220 221# OnigRegex onig_get_regex_by_callout_args(OnigCalloutArgs* args) 222 223 この呼び出しの正規表現オブジェクトのアドレスを返す。 224 225 226# unsigned long onig_get_retry_counter_by_callout_args(OnigCalloutArgs* args) 227 228 retry-limit-in-matchのためのリトライカウンタの現在値を返す。 229 230 231 232(6) 名札 233 234 "Tag" (名札)とは、正規表現パターンの中で呼び出しに割り当てられた名前である。 235 tag文字列に使用できる文字: _ A-Z a-z 0-9 (* 先頭の文字: _ A-Z a-z) 236 237 238# int onig_callout_tag_is_exist_at_callout_num(OnigRegex reg, int callout_num) 239 240 その呼び出しにtagが割り当てられていれば1を返す、そうでなければ0を返す。 241 242 243# const OnigUChar* onig_get_callout_tag_start(OnigRegex reg, int callout_num) 244 245 その呼び出しに対するtag文字列(NULL終端あり)の先頭アドレスを返す。 246 247 248# const OnigUChar* onig_get_callout_tag_end(OnigRegex reg, int callout_num) 249 250 その呼び出しに対するtag文字列の終端アドレスを返す。 251 252 253# int onig_get_callout_num_by_tag(OnigRegex reg, const OnigUChar* tag, const OnigUChar* tag_end) 254 255 そのtagに対する呼び出し番号を返す。 256 257 258 259(7) 呼び出しデータ (呼び出し関数内から使用される) 260 261 "呼び出しデータ" (callout data)とは、 262 それぞれの呼び出しに対してそれぞれの検索処理の中で割り当てられた、 263 ONIG_CALLOUT_DATA_SLOT_NUM(== 5)個の値の領域である。 264 一個の呼び出しに対する各値の領域は、"スロット"(slot)番号(0 - 4)によって示される。 265 呼び出しデータは呼び出し関数の実装者によって任意の目的に使用される。 266 267 268# int onig_get_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType* type, OnigValue* val) 269 270 callout_num/slotによって示された呼び出しスロットに対するデータの値/型を返す。 271 272 正常終了: ONIG_NORMAL 273 1: 値が未セット (typeは ONIG_TYPE_VOID) 274 < 0: エラーコード 275 276 277# int onig_get_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val) 278 279 自分自身の呼び出しのslotによって示されたスロットに対するデータの値/型を返す。 280 281 正常終了: ONIG_NORMAL 282 1: 値が未セット (typeは ONIG_TYPE_VOID) 283 < 0: エラーコード 284 285 286# int onig_set_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType type, OnigValue* val) 287 288 callout_num/slotによって示された呼び出しスロットに対する値/型をセットする。。 289 290 正常終了: ONIG_NORMAL 291 < 0: エラーコード 292 293 294# int onig_set_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType type, OnigValue* val) 295 296 自分自身の呼び出しのslotによって示されたスロットに対する値/型をセットする。。 297 298 正常終了: ONIG_NORMAL 299 < 0: エラーコード 300 301 302# int onig_get_callout_data_by_callout_args_self_dont_clear_old(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val) 303 304 この関数は、onig_get_callout_data_by_callout_args_self()とほぼ同じである。 305 しかしこの関数は、現在の照合処理以前の失敗した照合処理の中でセットされた値を 306 クリアしない。 307 他のonig_get_callout_data_xxxx()関数は、以前の失敗した照合処理の中でセットされた値を 308 クリアする。 309 310 例えば、組み込み呼び出し(*TOTAL_COUNT)は、検索処理の中の全ての照合処理の積算カウントを 311 得るためにこの関数を使用して実装されている。 312 組み込む呼び出し(*COUNT)は、この関数を使用しないので、最後の成功した照合処理だけの 313 カウントを返す。 314 315 316 317(8) 呼び出しデータ (アプリケーションから使用される) 318 319# int onig_get_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val) 320 321 callout_num/slotによって示された呼び出しスロットに対するデータの値/型を返す。 322 323 正常終了: ONIG_NORMAL 324 1: 値が未セット (typeは ONIG_TYPE_VOID) 325 < 0: エラーコード 326 327 328# int onig_get_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val) 329 330 tag/slotによって示された呼び出しスロットに対するデータの値/型を返す。 331 332 正常終了: ONIG_NORMAL 333 1: 値が未セット (typeは ONIG_TYPE_VOID) 334 < 0: エラーコード 335 336 337# int onig_set_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType type, OnigValue* val) 338 339 callout_num/slotによって示された呼び出しスロットに対する値/型をセットする。。 340 341 正常終了: ONIG_NORMAL 342 < 0: エラーコード 343 344 345# int onig_set_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType type, OnigValue* val) 346 347 tag/slotによって示された呼び出しスロットに対する値/型をセットする。。 348 349 正常終了: ONIG_NORMAL 350 < 0: エラーコード 351 352 353# int onig_get_callout_data_dont_clear_old(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val) 354 355 この関数を使用する必要はないと思われる。 356 廃止予定。 357 358 359 360(9) その他の関数 361 362# OnigUChar* onig_get_callout_name_by_name_id(int name_id) 363 364 名前の識別子に対する名前を返す。 365 不正な識別子が渡された場合には0を返す。 366 367 368# int onig_get_capture_range_in_callout(OnigCalloutArgs* args, int mem_num, int* begin, int* end) 369 370 現在の捕獲範囲を返す。 371 位置は、対象文字列に対するバイト単位で表される。 372 未捕獲のmem_numに対しては、ONIG_REGION_NOTPOSがセットされる。 373 374 375# int onig_get_used_stack_size_in_callout(OnigCalloutArgs* args, int* used_num, int* used_bytes) 376 377 現在使用されている照合処理用スタックサイズを返す。 378 379 used_num: 要素数 380 used_bytes: バイト数 381 382//END 383