FAQ 2007/07/23 1. æé·ããã onig_new()ã®ä¸ã§ãONIG_OPTION_FIND_LONGESTãªãã·ã§ã³ ã使ç¨ããã°æé·ãããã«ãªãã 2. ã¹ã¬ããã»ã¼ã ã¹ã¬ããã»ã¼ãã«ããã«ã¯ã以ä¸ã®(A)ã¨(B)ã®ã©ã¡ãããè¡ãªãã° ããã (A) Oniguruma Layer oniguruma/regint.hã®ä¸ã®ä»¥ä¸ã®ãã¯ããå®ç¾©ããã USE_MULTI_THREAD_SYSTEM THREAD_ATOMIC_START THREAD_ATOMIC_END THREAD_PASS ä½ããã®åæå/çµäºå¦çãå¿ è¦ã§ããã°ã以ä¸ã®ãã¯ãã«å®ç¾©ããã THREAD_SYSTEM_INIT THREAD_SYSTEM_END (B) Application Layer åæã«è¤æ°ã®ã¹ã¬ããããæ£è¦è¡¨ç¾ãªãã¸ã§ã¯ããä½æããã ã¾ãã¯è§£æ¾ããããã¨ãè¡ãªã£ã¦ã¯ãªããªãã ãããã®ãªãã¸ã§ã¯ããå ¨ãå¥ã®ãã®ã§ãã£ã¦ãã ããå°ã詳ãã説æã¯ããã®ããã¥ã¡ã³ãã®ä¸ã® "ã¹ã¬ããã»ã¼ãã«é¢ããè£è¶³"ã«æ¸ãã¦ãããã 3. CR + LF DOSã®æ¹è¡(CR(0x0c) + LF(0x0a)ã®é£ç¶) regenc.hã®ä¸ã®ã以ä¸ã®é¨åãæå¹ã«ããã /* #define USE_CRNL_AS_LINE_TERMINATOR */ 4. ã¡ã¼ãªã³ã°ãªã¹ã 鬼è»ã«é¢ããã¡ã¼ãªã³ã°ãªã¹ãã¯åå¨ããªãã //END ã¹ã¬ããã»ã¼ãã«é¢ããè£è¶³ ã¹ã¬ããã»ã¼ãã«ããã«ã¯ãåå¥ã®ã¢ããªã±ã¼ã·ã§ã³ã®ä¸ã§è¡ããã Onigurumaã©ã¤ãã©ãªã®ä¸ã§è¡ãããã©ã¡ãããé¸ã¶ãã¨ãã§ãã¾ãã (Onigurumaã使ç¨ããå´ã§å¯¾å¦ããããOnigurumaã«å¯¾å¦ãããã ã©ã¡ããçæ¹ã§è¡ãå¿ è¦ãããã¨ãããã¨ã§ãã) ãããã®æ¹æ³ã«ã¤ãã¦ã以ä¸(A)ã¨(B)ã§èª¬æãã¾ãã ãã«ãã¹ã¬ããAPIã¯ãããããã®ãã©ãããã©ã¼ã ã«ãã£ã¦ã ç°ãªãã¾ãã®ã§ã以ä¸ã®èª¬æã®ä¸ã§å ·ä½çã«ä½ãå¼ã¶ã®ãã æ¸ããã¨ã¯ç¡çã§ããå®éã«ä½¿ç¨ããããã«ãã¹ã¬ããAPIã§ã 対å¿ããæ©è½ã®ãã®ãæå®ãã¦ãã ããã (A) Onigurumaã®ä¸ã§å¯¾å¿ããå ´å oniguruma/regint.hã®ä¸ã§ä»¥ä¸ã®ãã¯ããå®ç¾©ãã¦åã³ã³ãã¤ã«ãã¦ãã ããã USE_MULTI_THREAD_SYSTEM åã«æå¹ã«ããã°ããã§ãã THREAD_ATOMIC_START THREAD_ATOMIC_END THREAD_ATOMIC_STARTããTHREAD_ATOMIC_ENDã§å²ã¾ãã ããã°ã©ã ã®ã³ã¼ãé¨åãããã¹ã¬ãããå®è¡ä¸ã«ãä»ã® ã¹ã¬ããã«å®è¡æ¨©ã移åããªããã¨ãä¿éãããã®ã«å®ç¾© ãã¦ãã ããã (ååã®éããå²ã¾ããã³ã¼ãé¨åãã¹ã¬ããã¢ãããã¯ã« ããã¨ããæå³) THREAD_PASS ãããå®è¡ããã¹ã¬ãããããä»ã®ã¹ã¬ããã«å®è¡æ¨©ãå§è² ãããã®ã«å®ç¾©ããã¦ãã ããã(åã¹ã±ã¸ã¥ã¼ã«ãå¼ã³åºã ã¨ããæå³) 対å¿ããæ©è½ãå ¨ããªããã°ã空å®ç¾©ã«ãã¦ãã ããã (åèä¾) Rubyã®å ´åãä¾ã«ããã¨ã Rubyã¯èªåèªèº«ã§ç¬èªã®ã¹ã¬ããæ©è½ãå®è£ ãã¦ãã¾ãã ãã®æ©è½ã使ç¨ããã¨ã以ä¸ã®ããã«å®ç¾©ããã°ãããã¨ã« ãªãã¾ãã #define USE_MULTI_THREAD_SYSTEM #define THREAD_SYSTEM_INIT #define THREAD_SYSTEM_END #define THREAD_ATOMIC_START DEFER_INTS #define THREAD_ATOMIC_END ENABLE_INTS #define THREAD_PASS rb_thread_schedule() Rubyã®å ´åãã¿ã¤ãå²ãè¾¼ã¿ã使ç¨ãã¦ãã¹ã¬ããã®åãæ¿ãã è¡ã£ã¦ãã¾ããDEFER_INTSã¯å²ãè¾¼ã¿ãã³ãã©ã®å®è¡ãä¸æçã« æ¢ããããã®ãã¯ãã§ããENABLE_INTSãã¯ãã§å²ãè¾¼ã¿ãã³ãã© ã®å®è¡ã許å¯ãã¾ãã ããã«ãã£ã¦ãTHREAD_ATOMIC_STARTããTHREAD_ATOMIC_END ã§å²ã¾ããé¨åã®å®è¡ä¸ã«ãä»ã®ã¹ã¬ããã«å®è¡æ¨©ã移åãã¾ããã (B) ã¢ããªã±ã¼ã·ã§ã³ã®ä¸ã§å¯¾å¿ããå ´å 以ä¸ãä¿éããããã«ãã¹ã¬ããã®å®è¡ãå¶å¾¡ãã¦ãã ããã åæã«è¤æ°ã®ã¹ã¬ããããæ£è¦è¡¨ç¾ãªãã¸ã§ã¯ããä½æãããã¾ãã¯è§£æ¾ããããã¨ã è¡ãªã£ã¦ã¯ãªããªãããããã®ãªãã¸ã§ã¯ããå ¨ãå¥ã®ãã®ã§ãã£ã¦ãã onig_new(), onig_new_deluxe(), onig_free()ã®ã©ããã®å¼ã³åºããã è¤æ°ã®ã¹ã¬ãããåæã«å®è¡ãããã¨ãé¿ãã¦ãã ãããåæã§ãªããã°å¥ã«ãã¾ãã¾ããã ããã¯ä½æ å¿ è¦ãªã®ãã¨ããã¨ãæ£è¦è¡¨ç¾ãªãã¸ã§ã¯ããä½æãã éç¨ã§ãå é¨ã§å ±éã«åç §ãããã¼ãã«ãããã¾ãã ãã®ãã¼ãã«ã«å¯¾ãã¦ã®ãã¼ã¿ç»é²å¦çãè¤æ°ã®ã¹ã¬ããã§è¡çªã㦠ç°å¸¸ãªç¶æ ã«ãªããªãããã«å¿ è¦ã§ãã // END