summaryrefslogtreecommitdiff
path: root/doc/API.ja
blob: f681fa546089190dd35552972c87592b65eb8ea3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
鬼車インターフェース Version 5.9.2   2008/02/19

#include <oniguruma.h>


# int onig_init(void)

  ライブラリの初期化

  onig_new()の中で呼び出されるので、この関数を明示的に呼び出さなくてもよい。


# int onig_error_code_to_str(UChar* err_buf, int err_code, ...)

  エラーメッセージを取得する。

  この関数を、onig_new()の結果に対して呼び出す場合には、onig_new()のpattern引数を
  メモリ解放するよりも前に呼び出さなければならない。

  正常終了戻り値: エラーメッセージ文字列のバイト長

  引数
  1 err_buf:              エラーメッセージを格納する領域
                          (必要なサイズ: ONIG_MAX_ERROR_MESSAGE_LEN)
  2 err_code:             エラーコード
  3 err_info (optional):  onig_new()のerr_info


# void onig_set_warn_func(OnigWarnFunc func)

  警告通知関数をセットする。

  警告:
    '[', '-', ']' in character class without escape.
    ']' in pattern without escape.

  引数
  1 func:    警告関数    void (*func)(char* warning_message)


# void onig_set_verb_warn_func(OnigWarnFunc func)

  詳細警告通知関数をセットする。

  詳細警告:
    redundant nested repeat operator.

  引数
  1 func:    詳細警告関数    void (*func)(char* warning_message)


# int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
            OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,
            OnigErrorInfo* err_info)

  正規表現オブジェクト(regex)を作成する。

  正常終了戻り値: ONIG_NORMAL

  引数
  1 reg:         作成された正規表現オブジェクトを返すアドレス
  2 pattern:     正規表現パターン文字列
  3 pattern_end: 正規表現パターン文字列の終端アドレス(pattern + pattern length)
  4 option:      正規表現コンパイル時オプション

      ONIG_OPTION_NONE               オプションなし
      ONIG_OPTION_SINGLELINE         '^' -> '\A', '$' -> '\Z'
      ONIG_OPTION_MULTILINE          '.'が改行にマッチする
      ONIG_OPTION_IGNORECASE         曖昧マッチ オン
      ONIG_OPTION_EXTEND             パターン拡張形式
      ONIG_OPTION_FIND_LONGEST       最長マッチ
      ONIG_OPTION_FIND_NOT_EMPTY     空マッチを無視
      ONIG_OPTION_NEGATE_SINGLELINE
            ONIG_SYNTAX_POSIX_BASIC, ONIG_SYNTAX_POSIX_EXTENDED,
            ONIG_SYNTAX_PERL, ONIG_SYNTAX_PERL_NG, ONIG_SYNTAX_JAVAで
            デフォルトで有効なONIG_OPTION_SINGLELINEをクリアする。

      ONIG_OPTION_DONT_CAPTURE_GROUP 名前付き捕獲式集合のみ捕獲
      ONIG_OPTION_CAPTURE_GROUP      名前無し捕獲式集合も捕獲

  5 enc:        文字エンコーディング

      ONIG_ENCODING_ASCII         ASCII
      ONIG_ENCODING_ISO_8859_1    ISO 8859-1
      ONIG_ENCODING_ISO_8859_2    ISO 8859-2
      ONIG_ENCODING_ISO_8859_3    ISO 8859-3
      ONIG_ENCODING_ISO_8859_4    ISO 8859-4
      ONIG_ENCODING_ISO_8859_5    ISO 8859-5
      ONIG_ENCODING_ISO_8859_6    ISO 8859-6
      ONIG_ENCODING_ISO_8859_7    ISO 8859-7
      ONIG_ENCODING_ISO_8859_8    ISO 8859-8
      ONIG_ENCODING_ISO_8859_9    ISO 8859-9
      ONIG_ENCODING_ISO_8859_10   ISO 8859-10
      ONIG_ENCODING_ISO_8859_11   ISO 8859-11
      ONIG_ENCODING_ISO_8859_13   ISO 8859-13
      ONIG_ENCODING_ISO_8859_14   ISO 8859-14
      ONIG_ENCODING_ISO_8859_15   ISO 8859-15
      ONIG_ENCODING_ISO_8859_16   ISO 8859-16
      ONIG_ENCODING_UTF8          UTF-8
      ONIG_ENCODING_UTF16_BE      UTF-16BE
      ONIG_ENCODING_UTF16_LE      UTF-16LE
      ONIG_ENCODING_UTF32_BE      UTF-32BE
      ONIG_ENCODING_UTF32_LE      UTF-32LE
      ONIG_ENCODING_EUC_JP        EUC-JP
      ONIG_ENCODING_EUC_TW        EUC-TW
      ONIG_ENCODING_EUC_KR        EUC-KR
      ONIG_ENCODING_EUC_CN        EUC-CN
      ONIG_ENCODING_SJIS          Shift_JIS
      ONIG_ENCODING_KOI8_R        KOI8-R
      ONIG_ENCODING_CP1251        CP1251
      ONIG_ENCODING_BIG5          Big5
      ONIG_ENCODING_GB18030       GB18030

      または、ユーザが定義したOnigEncodingTypeデータのアドレス

  6 syntax:     正規表現パターン文法定義

      ONIG_SYNTAX_ASIS              plain text
      ONIG_SYNTAX_POSIX_BASIC       POSIX Basic RE
      ONIG_SYNTAX_POSIX_EXTENDED    POSIX Extended RE
      ONIG_SYNTAX_EMACS             Emacs
      ONIG_SYNTAX_GREP              grep
      ONIG_SYNTAX_GNU_REGEX         GNU regex
      ONIG_SYNTAX_JAVA              Java (Sun java.util.regex)
      ONIG_SYNTAX_PERL              Perl
      ONIG_SYNTAX_PERL_NG           Perl + 名前付き捕獲式集合
      ONIG_SYNTAX_RUBY              Ruby
      ONIG_SYNTAX_DEFAULT           default (== Ruby)
                                    onig_set_default_syntax()

      または、ユーザが定義したOnigSyntaxTypeデータのアドレス

  7 err_info: エラー情報を返すためのアドレス
              onig_error_code_to_str()の三番目の引数として使用する



# int onig_new_without_alloc(regex_t* reg, const UChar* pattern,
            const UChar* pattern_end,
            OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,
            OnigErrorInfo* err_info)

  正規表現オブジェクト(regex)を作成する。
  regの領域を内部で割り当てない。

  正常終了戻り値: ONIG_NORMAL



# int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
                      OnigCompileInfo* ci, OnigErrorInfo* einfo)

  正規表現オブジェクト(regex)を作成する。
  この関数は、onig_new()のデラックス版。

  正常終了戻り値: ONIG_NORMAL

  引数
  1 reg:         作成された正規表現オブジェクトを返すアドレス
  2 pattern:     正規表現パターン文字列
  3 pattern_end: 正規表現パターン文字列の終端アドレス(pattern + pattern length)
  4 ci:          コンパイル情報

    ci->num_of_elements: ciの要素数 (現在の版では: 5)
    ci->pattern_enc:     パターン文字列の文字エンコーディング
    ci->target_enc:      対象文字列の文字エンコーディング
    ci->syntax:          正規表現パターン文法定義
    ci->option:          正規表現コンパイル時オプション
    ci->case_fold_flag:  ONIG_OPTION_IGNORECASEモードでの
                         文字曖昧マッチ指定ビットフラグ

       ONIGENC_CASE_FOLD_MIN:           最小
       ONIGENC_CASE_FOLD_DEFAULT:       最小
                                        onig_set_default_case_fold_flag()

  5 err_info:    エラー情報を返すためのアドレス
                 onig_error_code_to_str()の三番目の引数として使用する


  異なる文字エンコーディングの組み合わせは、以下の場合にのみ許される。

    pattern_enc: ASCII, ISO_8859_1
    target_enc:  UTF16_BE, UTF16_LE, UTF32_BE, UTF32_LE

    pattern_enc: UTF16_BE/LE
    target_enc:  UTF16_LE/BE

    pattern_enc: UTF32_BE/LE
    target_enc:  UTF32_LE/BE


# void onig_free(regex_t* reg)

  正規表現オブジェクトのメモリを解放する。

  引数
  1 reg: 正規表現オブジェクト


# void onig_free_body(regex_t* reg)

  正規表現オブジェクトのメモリを解放する。(reg自身の領域を除いて)

  引数
  1 reg: 正規表現オブジェクト



# int onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start,
                   const UChar* range, OnigRegion* region, OnigOptionType option)

  正規表現で文字列を検索し、検索結果とマッチ領域を返す。

  正常終了戻り値: マッチ位置 (p - str >= 0)
  検索失敗:       ONIG_MISMATCH (< 0)

  引数
  1 reg:    正規表現オブジェクト
  2 str:    検索対象文字列
  3 end:    検索対象文字列の終端アドレス
  4 start:  検索対象文字列の検索先頭位置アドレス
  5 range:  検索対象文字列の検索終了位置アドレス
    前方探索  (start <= 探索される文字列 < range)
    後方探索  (range <= 探索される文字列 <= start)
  6 region: マッチ領域情報(region)  (NULLも許される)
  7 option: 検索時オプション

    ONIG_OPTION_NOTBOL        文字列の先頭(str)を行頭と看做さない
    ONIG_OPTION_NOTEOL        文字列の終端(end)を行末と看做さない
    ONIG_OPTION_POSIX_REGION  region引数をPOSIX APIのregmatch_t[]にする


# int onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at,
		 OnigRegion* region, OnigOptionType option)

  文字列の指定位置でマッチングを行い、結果とマッチ領域を返す。

  正常終了戻り値: マッチしたバイト長 (>= 0)
  not match:      ONIG_MISMATCH      ( < 0)

  引数
  1 reg:    正規表現オブジェクト
  2 str:    検索対象文字列
  3 end:    検索対象文字列の終端アドレス
  4 at:     検索対象文字列の検索アドレス
  5 region: マッチ領域情報(region)  (NULLも許される)
  6 option: 検索時オプション

    ONIG_OPTION_NOTBOL        文字列の先頭(str)を行頭と看做さない
    ONIG_OPTION_NOTEOL        文字列の終端(end)を行末と看做さない
    ONIG_OPTION_POSIX_REGION  region引数をPOSIX APIのregmatch_t[]にする


# OnigRegion* onig_region_new(void)

  マッチ領域情報(region)を作成する。


# void onig_region_free(OnigRegion* region, int free_self)

  マッチ領域情報(region)で使用されているメモリを解放する。

  引数
  1 region:    マッチ領域情報オブジェクト
  2 free_self:  [1: region自身を含めて全て解放, 0: region自身は解放しない]


# void onig_region_copy(OnigRegion* to, OnigRegion* from)

  マッチ領域情報(region)を複製する。

  引数
  1 to:   対象領域
  2 from: 元領域


# void onig_region_clear(OnigRegion* region)

  マッチ領域情報(region)の中味をクリアする。

  引数
  1 region: 対象領域


# int onig_region_resize(OnigRegion* region, int n)

  マッチ領域情報(region)の捕獲式集合(グループ)数を変更する。

  正常終了戻り値: ONIG_NORMAL

  引数
  1 region: 対象領域
  2 n:      新しいサイズ


# int onig_name_to_group_numbers(regex_t* reg, const UChar* name, const UChar* name_end,
                                  int** num_list)

  指定した名前に対する名前付き捕獲式集合(グループ)の
  グループ番号リストを返す。
  名前付き捕獲式集合は、(?<name>....)によって定義できる。

  正常終了戻り値:  指定された名前に対するグループ数
                   (例 /(?<x>..)(?<x>..)/  ==>  2)
  名前に対するグループが存在しない: -1

  引数
  1 reg:       正規表現オブジェクト
  2 name:      捕獲式集合(グループ)名
  3 name_end:  捕獲式集合(グループ)名の終端アドレス
  4 num_list:  番号リストを返すアドレス


# int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end,
                                  OnigRegion *region)

  指定された名前の後方参照(\k<name>)に対する捕獲式集合(グループ)の番号を返す。
  名前に対して、複数のマッチ領域が有効であれば、その中の最大の番号を返す。
  名前に対する捕獲式集合が一個しかないときには、対応するマッチ領域が有効か
  どうかに関係なく、その番号を返す。(従って、regionにはNULLを渡してもよい。)

  正常終了戻り値: 番号

  引数
  1 reg:       正規表現オブジェクト
  2 name:      捕獲式集合(グループ)名
  3 name_end:  捕獲式集合(グループ)名の終端アドレス
  4 region:    search/match結果のマッチ領域


# int onig_foreach_name(regex_t* reg,
                        int (*func)(const UChar*, const UChar*, int,int*,regex_t*,void*),
                        void* arg)

  全ての名前に対してコールバック関数呼び出しを実行する。

  正常終了戻り値: 0
  エラー:         コールバック関数の戻り値

  引数
  1 reg:     正規表現オブジェクト
  2 func:    コールバック関数
             func(name, name_end, <number of groups>, <group number's list>,
                  reg, arg);

             funcが0以外の値を返すと、それ以降のコールバックは行なわずに
             終了する。

  3 arg:     funcに対する追加引数


# int onig_number_of_names(regex_t* reg)

  パターン中で定義された名前の数を返す。
  一個の名前の多重定義は一個と看做す。

  引数
  1 reg:    正規表現オブジェクト


# OnigEncoding     onig_get_encoding(regex_t* reg)
# OnigOptionType   onig_get_options(regex_t* reg)
# OnigCaseFoldType onig_get_case_fold_flag(regex_t* reg)
# OnigSyntaxType*  onig_get_syntax(regex_t* reg)

  正規表現オブジェクトに対して、対応する値を返す。

  引数
  1 reg:    正規表現オブジェクト


# int onig_number_of_captures(regex_t* reg)

  パターン中で定義された捕獲グループの数を返す。

  引数
  1 reg:    正規表現オブジェクト


# int onig_number_of_capture_histories(regex_t* reg)

  パターン中で定義された捕獲履歴(?@...)の数を返す。

  使用する文法で捕獲履歴機能が有効(ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)
  でなければ、捕獲履歴機能は使用できない。

  引数
  1 reg:    正規表現オブジェクト


# OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region)

  捕獲履歴データのルートノードを返す。

  マッチが失敗している場合には、この値は不定である。

  引数
  1 region: マッチ領域


# int onig_capture_tree_traverse(OnigRegion* region, int at,
                  int(*func)(int,int,int,int,int,void*), void* arg)

  捕獲履歴データ木を巡回してコールバックする。

  正常終了戻り値: 0
  エラー:         コールバック関数の戻り値

  引数
  1 region:  マッチ領域
  2 at:      コールバックを行なうタイミング

    ONIG_TRAVERSE_CALLBACK_AT_FIRST:
        最初にコールバックして、子ノードを巡回
    ONIG_TRAVERSE_CALLBACK_AT_LAST:
        子ノードを巡回して、コールバック
    ONIG_TRAVERSE_CALLBACK_AT_BOTH:
        最初にコールバックして、子ノードを巡回、最後にもう一度コールバック

  3 func:    コールバック関数
             funcが0以外の値を返すと、それ以降の巡回は行なわずに
             終了する。

             int func(int group, int beg, int end, int level, int at,
                      void* arg)
               group: グループ番号
               beg:   マッチ開始位置
               end    マッチ終了位置
               level: ネストレベル (0から)
               at:    コールバックが呼び出されたタイミング
                      ONIG_TRAVERSE_CALLBACK_AT_FIRST
                      ONIG_TRAVERSE_CALLBACK_AT_LAST
               arg:   追加引数

  4 arg;     funcに対する追加引数


# int onig_noname_group_capture_is_active(regex_t* reg)

  名前なし式集合の捕獲機能が有効かどうかを返す。

  有効: 1
  無効: 0

  引数
  1 reg:    正規表現オブジェクト


  オプションのONIG_OPTION_DONT_CAPTURE_GROUPがON --> 無効

  パターンが名前つき式集合を使用している
  AND 使用文法で、ONIG_SYN_CAPTURE_ONLY_NAMED_GROUPがON
  AND オプションのONIG_OPTION_CAPTURE_GROUPがOFF
  --> 無効

  上記以外の場合 --> 有効


# UChar* onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s)

  文字一個分前の文字列位置を返す。

  引数
  1 enc:   文字エンコーディング
  2 start: 文字列の先頭アドレス
  3 s:     文字列中の位置


# UChar* onigenc_get_left_adjust_char_head(OnigEncoding enc,
                                           const UChar* start, const UChar* s)

  文字の先頭バイト位置になるように左側に調整したアドレスを返す。

  引数
  1 enc:   文字エンコーディング
  2 start: 文字列の先頭アドレス
  3 s:     文字列中の位置


# UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc,
                                            const UChar* start, const UChar* s)

  文字の先頭バイト位置になるように右側に調整したアドレスを返す。

  引数
  1 enc:   文字エンコーディング
  2 start: 文字列の先頭アドレス
  3 s:     文字列中の位置


# int onigenc_strlen(OnigEncoding enc, const UChar* s, const UChar* end)
# int onigenc_strlen_null(OnigEncoding enc, const UChar* s)

  文字列の文字数を返す。


# int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s)

  文字列のバイト数を返す。


# int onig_set_default_syntax(OnigSyntaxType* syntax)

  デフォルトの正規表現パターン文法をセットする。

  引数
  1 syntax: 正規表現パターン文法


# void onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from)

  正規表現パターン文法をコピーする。

  引数
  1 to:   対象
  2 from: 元


# unsigned int onig_get_syntax_op(OnigSyntaxType* syntax)
# unsigned int onig_get_syntax_op2(OnigSyntaxType* syntax)
# unsigned int onig_get_syntax_behavior(OnigSyntaxType* syntax)
# OnigOptionType onig_get_syntax_options(OnigSyntaxType* syntax)

# void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op)
# void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2)
# void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior)
# void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options)

  正規表現パターン文法の要素を参照/取得する。

  引数
  1 syntax:                     正規表現パターン文法
  2 op, op2, behavior, options: 要素の値


# void onig_copy_encoding(OnigEncoding to, OnigOnigEncoding from)

  文字エンコーディングをコピーする。

  引数
  1 to:   対象
  2 from: 元


# int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what,
                         OnigCodePoint code)

  メタ文字を指定したコードポイント値にセットする。
  ONIG_SYN_OP_VARIABLE_META_CHARACTERSが正規表現パターン文法で有効に
  なっていない場合には、エスケープ文字を除いて、ここで指定したメタ文字は
  機能しない。(組込みの文法では有効にしていない。)

  正常終了戻り値: ONIG_NORMAL

  引数
  1 syntax: 対象文法
  2 what:   メタ文字機能の指定

          ONIG_META_CHAR_ESCAPE
          ONIG_META_CHAR_ANYCHAR
          ONIG_META_CHAR_ANYTIME
          ONIG_META_CHAR_ZERO_OR_ONE_TIME
          ONIG_META_CHAR_ONE_OR_MORE_TIME
          ONIG_META_CHAR_ANYCHAR_ANYTIME

  3 code: メタ文字のコードポイント または ONIG_INEFFECTIVE_META_CHAR.


# OnigCaseFoldType onig_get_default_case_fold_flag()

  デフォルトのcase foldフラグを取得する。


# int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag)

  デフォルトのcase foldフラグをセットする。

  引数
  1 case_fold_flag: case foldフラグ


# unsigned int onig_get_match_stack_limit_size(void)

  マッチスタックサイズの最大値を返す。
  (デフォルト: 0 == 無制限)


# int onig_set_match_stack_limit_size(unsigned int size)

  マッチスタックサイズの最大値を指定する。
  (size = 0: 無制限)

  正常終了戻り値: ONIG_NORMAL


# int onig_end(void)

  ライブラリの使用を終了する。

  正常終了戻り値: ONIG_NORMAL

  onig_init()を再度呼び出しても、以前に作成した正規表現オブジェクト
  を使用することはできない。


# const char* onig_version(void)

  バージョン文字列を返す。(例 "5.0.3")

// END