Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 88

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 216

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 217

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 218

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 219

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 220
PK!—B 0M0M fixnums.gonu„[µü¤GOOF----LE-8-2.0M]<4h] gguile¤ ¤ gdefine-module*¤ ¤ ¤ grnrs¤ g arithmetic¤ gfixnums¤ ¤ gfilenameS¤ frnrs/arithmetic/fixnums.scm¤ gpureS¤ gversionS¤  ¤ gset-current-module¤ ¤ ¤ gresolve-r6rs-interface¤ ¤ ¤ gonly¤ gash¤ gcons*¤ gdefine-inlinable¤ ginexact->exact¤ glogand¤ glogbit?¤ glogcount¤ glogior¤ glognot¤ glogxor¤ gmost-positive-fixnum¤ !gmost-negative-fixnum¤ "gobject-address¤ # !"¤ $gcall-with-deferred-observers¤ %$¤ &$¤ 'gmodule-use-interfaces!¤ ('¤ )'¤ *gcurrent-module¤ +*¤ ,*¤ -gice-9¤ .goptargs¤ /-.¤ 0gbase¤ 10¤ 2gcontrol¤ 32¤ 4gbitwise¤ 54¤ 6g conditions¤ 76¤ 8g exceptions¤ 98¤ :glists¤ ;:¤ <¤ ?gfxreverse-bit-field¤ @gfxrotate-bit-field¤ Agfxarithmetic-shift-right¤ Bgfxarithmetic-shift-left¤ Cgfxarithmetic-shift¤ Dgfxcopy-bit-field¤ Eg fxbit-field¤ Fg fxcopy-bit¤ Gg fxbit-set?¤ Hgfxfirst-bit-set¤ Igfxlength¤ Jg fxbit-count¤ Kgfxif¤ Lgfxxor¤ Mgfxior¤ Ngfxand¤ Ogfxnot¤ Pg fx*/carry¤ Qg fx-/carry¤ Rg fx+/carry¤ Sgfxmod0¤ Tgfxdiv0¤ Ugfxdiv0-and-mod0¤ Vgfxmod¤ Wgfxdiv¤ Xg fxdiv-and-mod¤ Ygfx-¤ Zgfx*¤ [gfx+¤ \gfxmin¤ ]gfxmax¤ ^gfxeven?¤ _gfxodd?¤ `g fxnegative?¤ ag fxpositive?¤ bgfxzero?¤ cgfx<=?¤ dgfx>=?¤ egfx?¤ ggfx=?¤ hggreatest-fixnum¤ ig least-fixnum¤ jg fixnum-width¤ kgfixnum?¤ l?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk-¤ mgmodule-re-export!¤ nm¤ om¤ pgmodule-replace!¤ qp¤ rp¤ sg% inline-fixnum?-procedure¤ tgmake-syntax-transformer¤ ut¤ vt¤ wginline-fixnum?¤ xgmacro¤ yg $sc-dispatch¤ zy¤ {y¤ |g_¤ }gany¤ ~|}¤ g syntax-object¤ €gsyntax-parameterize¤ gm-2e3f1f84bf0f11-1c¤ ‚gtop¤ ƒ‚¤ „gribcage¤ …gt-2e3f1f84bf0f11-1b¤ †…¤ ‡ƒ¤ ˆfl-2e3f1f84bf0f11-21¤ ‰ˆ¤ Š„†‡‰¤ ‹„¤ Œgx¤ Œ¤ Žfl-2e3f1f84bf0f11-1e¤ ޤ „‡¤ ‘gshift¤ ’g proc-name¤ “gargs¤ ”’“¤ •‚¤ –••¤ —fl-bde397a-1eaf¤ ˜fl-bde397a-1eb0¤ ™—˜¤ š„”–™¤ ›gname¤ œgformals¤ gbody¤ ž›œ¤ Ÿ•••¤  fl-bde397a-1ea6¤ ¡fl-bde397a-1ea7¤ ¢fl-bde397a-1ea8¤ £ ¡¢¤ ¤„žŸ£¤ ¥gmake-procedure-name¤ ¦gprefix¤ §¥¦¤ ¨••¤ ©fl-bde397a-1e9a¤ ªfl-bde397a-1e98¤ «©ª¤ ¬„§¨«¤ ­•¤ ®fl-bde397a-1e97¤ ¯®¤ °„­¯¤ ±ƒŠ‹‘‹‹‹‹š¤¬° ¤ ²ghygiene¤ ³²¤ ´€±³¤ µ•Š‹¤ ¶gprivate¤ ·¶¤ ¸wµ·¤ ¹gidentifier-syntax¤ º¹±³¤ »sµ·¤ ¼º»¤ ½¸¼¤ ¾½¤ ¿glambda¤ À¿±³¤ Ágobj¤ ÂÁµ·¤ ä Ägnot¤ Åĵ·¤ Æg=¤ ÇÆµ·¤ È µ·¤ ɵ·¤ Ê µ·¤ Ë"µ·¤ Ìˤ ÍÉÊ̤ ÎÇÈͤ ÏÅΤ ÐÀÃϤ Ñ´¾Ð¤ Ògeach-any¤ Ó|ÒŒ¤ Ôgsyntax-violation¤ ÕÔ¤ ÖÔ¤ ×fWrong number of arguments¤ Øf-source expression failed to match any pattern¤ Ùg identifier?¤ ÚÙ¤ ÛÙ¤ Ü•‹¤ ÝsÜ·¤ Þg assert-fixnum¤ ß}ÒŒ¤ àgor¤ ágdummy¤ âgarg¤ ãá⤠ägm-2e3f1f84bf0f11-27¤ å䂤 æå•¤ çfl-2e3f1f84bf0f11-2c¤ èfl-2e3f1f84bf0f11-2d¤ éçè¤ ê„ãæé¤ ëå¤ ìfl-2e3f1f84bf0f11-29¤ íì¤ î„ëí¤ ï•ê‹î¤ ðàï·¤ ñgand¤ òñï·¤ ógmap¤ ôó¤ õó¤ öwï·¤ ÷graise¤ ø÷ï·¤ ùgmake-assertion-violation¤ úùï·¤ ûú¤ üøû¤ ýü¤ þgfor-all¤ ÿgassert-fixnums¤ g define-fxop*¤ }}}¤ gdefine¤ gop¤ ᛤ gm-2e3f1f84bf0f11-31¤ ‚¤ ••¤ fl-2e3f1f84bf0f11-36¤  fl-2e3f1f84bf0f11-37¤  fl-2e3f1f84bf0f11-38¤    ¤  „ ¤  ¤ fl-2e3f1f84bf0f11-33¤ ¤ „ ¤ • ‹¤ ·¤ g case-lambda¤ ·¤ Œ·¤ gy¤ ·¤ ¤ Þ·¤ ¤ “·¤ ÿ·¤ ¤ gapply¤ ·¤  ¤ !g>¤ "g<¤ #g>=¤ $g<=¤ %gzero?¤ &g positive?¤ 'g negative?¤ (godd?¤ )geven?¤ *gmax¤ +gmin¤ ,g)make-implementation-restriction-violation¤ -gdiv¤ .gmod¤ /g div-and-mod¤ 0gdiv0¤ 1gmod0¤ 2g div0-and-mod0¤ 3gexpt¤ 4g bitwise-if¤ 5gbitwise-length¤ 6gbitwise-first-bit-set¤ 7gbitwise-copy-bit¤ 8gbitwise-bit-field¤ 9gbitwise-copy-bit-field¤ :gbitwise-rotate-bit-field¤ ;gbitwise-reverse-bit-field¤C5h 3þ]4     54>"G4#54&),hM]45L6Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ   CO>"G4/54&),hM]45L6Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ   CO>"G4154&),hM]45L6Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ   CO>"G4354&),hM]45L6Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ   CO>"G4554&),hM]45L6Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ   CO>"G4754&),hM]45L6Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ   CO>"G4954&),hM]45L6Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ   CO>"G4;54&),hM]45L6Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ   CO>"G4&>,lhM]456Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ  C>"G4&o,hM]456Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ  C>"G4&r,hM]456Egfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ  C>"G"" i”$—"— š"ÿÿÞ "ÿÿÔh]LC   COjR hj]Cbgfilenamefrnrs/arithmetic/fixnums.scmŒ h ŒŒ   gnameggreatest-fixnumŒChR!hg]C_gfilenamefrnrs/arithmetic/fixnums.scmŒ i ŒŒ   gnameg least-fixnumŒCiR"ht] 45 ‘€Clgobj  gfilenamefrnrs/arithmetic/fixnums.scmŒ k ŒŒ   gnamegfixnum?ŒCkR"h‡] 45 ‘€Cgobj  gfilenamefrnrs/arithmetic/fixnums.scmŒ n ŒŒ   gnameg% inline-fixnum?-procedureŒCsR4vwx{~Ñh;]C3gt-2e3f1f84bf0f11-1b    CÓÖw×h_]L6Wga  gfilenamefrnrs/arithmetic/fixnums.scmŒ  n ŒŒ  C|ÖØÛhO]L6Ggfilenamefrnrs/arithmetic/fixnums.scmŒ  n ŒŒ   CÝh]C   C hx]45$@45$ O@45" 6$4 O?$ @"ÿÿ×"ÿÿÓˆgx  qgtmp qgtmp  " qgtmp  > qgfilenamefrnrs/arithmetic/fixnums.scmŒ n ŒŒ  q C5wR4vÞx{ßðòõöh=]C5gtmp-2e3f1f84bf0f11-30    Cýh>]45ŒŒŒC6gdummy  garg     CÖØh(x] 45$@6pgx  "gtmp "  " g macro-typeg syntax-rulesŒgpatternsgargg...C5ÞRþs÷ùh Š] 45$C456‚gargs  gt gfilenamefrnrs/arithmetic/fixnums.scmŒ w ŒŒ   gnamegassert-fixnumsŒCÿR4vx{  h0O]ŒŒŒCGgdummy  *gname  *gop   *  * CÖØh(x] 45$@6pgx  "gtmp "  " g macro-typeg syntax-rulesŒgpatternsgnamegopC5RÆigR!ifR"ieR#idR$icR%ibR&iaR'i`R(i_R)i^R"÷ù*ÿhxª)Q3 45 ‘$" 45 ‘€$"445>"G6-134>"G@¢gx Wgy Wgt  + Ogargs ` xgfilenamefrnrs/arithmetic/fixnums.scmŒ • ŒŒ W  ` x gnamegfxmaxŒC]R"÷ù+ÿhxª)Q3 45 ‘$" 45 ‘€$"445>"G6-134>"G@¢gx Wgy Wgt  + Ogargs ` xgfilenamefrnrs/arithmetic/fixnums.scmŒ – ŒŒ W  ` x gnamegfxminŒC\R"÷ù,hˆ´] 45 ‘$" 45 ‘€$"445>"G– 45 ‘€$"445>"GC¬gfx1  ƒgfx2  ƒgt  $ Hgr  M ƒgt  \ €gfilenamefrnrs/arithmetic/fixnums.scmŒ ˜ ŒŒ  ƒ gnamegfx+ŒC[R"÷ù,hˆ´] 45 ‘$" 45 ‘€$"445>"Gš 45 ‘€$"445>"GC¬gfx1  ƒgfx2  ƒgt  $ Hgr  M ƒgt  \ €gfilenamefrnrs/arithmetic/fixnums.scmŒ Ÿ ŒŒ  ƒ gnamegfx*ŒCZR"÷ùhøç-.,3# 45 ‘€$"445>"G$l 45 ‘€$"445>"G˜ 45 ‘€$"445>"GC ˜ 45 ‘€$"445>"GCßgfx1 ògfx2 ògt  " Fgt  Y }gr  ‚ ¸gt  ‘ µgr  ¼ ògt  Ë ïgfilenamefrnrs/arithmetic/fixnums.scmŒ ¦ ŒŒ ò gnamegfx-ŒCYR"÷ù-hP“] 45 ‘$" 45 ‘€$"445>"G6‹gfx1  Pgfx2  Pgt  $ Hgfilenamefrnrs/arithmetic/fixnums.scmŒ ² ŒŒ  P gnamegfxdivŒCWR"÷ù.hP“] 45 ‘$" 45 ‘€$"445>"G6‹gfx1  Pgfx2  Pgt  $ Hgfilenamefrnrs/arithmetic/fixnums.scmŒ ¶ ŒŒ  P gnamegfxmodŒCVR"÷ù/hP›] 45 ‘$" 45 ‘€$"445>"G6“gfx1  Pgfx2  Pgt  $ Hgfilenamefrnrs/arithmetic/fixnums.scmŒ º ŒŒ  P gnameg fxdiv-and-modŒCXR"÷ù0hP”] 45 ‘$" 45 ‘€$"445>"G6Œgfx1  Pgfx2  Pgt  $ Hgfilenamefrnrs/arithmetic/fixnums.scmŒ ¾ ŒŒ  P gnamegfxdiv0ŒCTR"÷ù1hP”] 45 ‘$" 45 ‘€$"445>"G6Œgfx1  Pgfx2  Pgt  $ Hgfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ  P gnamegfxmod0ŒCSR"÷ù2hP] 45 ‘$" 45 ‘€$"445>"G6•gfx1  Pgfx2  Pgt  $ Hgfilenamefrnrs/arithmetic/fixnums.scmŒ Æ ŒŒ  P gnamegfxdiv0-and-mod0ŒCUR"÷ù13j0h˜ß] 45 ‘$"" 45 ‘$" 45 ‘€$"445>"G––44 455544 4555D×gfx1  —gfx2  —gfx3   —gt  9 ]gs  e —gs0  z —gs1  —gfilenamefrnrs/arithmetic/fixnums.scmŒ Ê ŒŒ  — gnameg fx+/carryŒCRR"÷ù13j0h˜ß] 45 ‘$"" 45 ‘$" 45 ‘€$"445>"G˜˜44 455544 4555D×gfx1  —gfx2  —gfx3   —gt  9 ]gd  e —gd0  z —gd1  —gfilenamefrnrs/arithmetic/fixnums.scmŒ Ñ ŒŒ  — gnameg fx-/carryŒCQR"÷ù13j0h˜ß] 45 ‘$"" 45 ‘$" 45 ‘€$"445>"Gš–44 455544 4555D×gfx1  —gfx2  —gfx3   —gt  9 ]gs  e —gs0  z —gs1  —gfilenamefrnrs/arithmetic/fixnums.scmŒ Ø ŒŒ  — gnameg fx*/carryŒCPR"÷ùh@€] 45 ‘€$"445>"G6xgfx  9gt  3gfilenamefrnrs/arithmetic/fixnums.scmŒ ß ŒŒ  9 gnamegfxnotŒCOR"÷ùÿhxª)O3 45 ‘$" 45 ‘€$"445>"G C-134>"G@¢gx Ugy Ugt  + Ogargs ^ vgfilenamefrnrs/arithmetic/fixnums.scmŒ à ŒŒ U  ^ v gnamegfxandŒCNR"÷ùÿhxª)O3 45 ‘$" 45 ‘€$"445>"G¡C-134>"G@¢gx Ugy Ugt  + Ogargs ^ vgfilenamefrnrs/arithmetic/fixnums.scmŒ á ŒŒ U  ^ v gnamegfxiorŒCMR"÷ùÿhxª)O3 45 ‘$" 45 ‘€$"445>"G¢C-134>"G@¢gx Ugy Ugt  + Ogargs ^ vgfilenamefrnrs/arithmetic/fixnums.scmŒ â ŒŒ U  ^ v gnamegfxxorŒCLR"÷ù4hh£] 45 ‘$"" 45 ‘$" 45 ‘€$"445>"G6›gfx1  ggfx2  ggfx3   ggt  9 ]gfilenamefrnrs/arithmetic/fixnums.scmŒ ä ŒŒ  g gnamegfxifŒCKR"÷ùhP†] 45 ‘€$"445>"G ’$ 4566~gfx  Lgt  3gfilenamefrnrs/arithmetic/fixnums.scmŒ è ŒŒ  L gnameg fxbit-countŒCJR"÷ù5h@ƒ] 45 ‘€$"445>"G6{gfx  9gt  3gfilenamefrnrs/arithmetic/fixnums.scmŒ î ŒŒ  9 gnamegfxlengthŒCIR"÷ù6h@Š] 45 ‘€$"445>"G6‚gfx  9gt  3gfilenamefrnrs/arithmetic/fixnums.scmŒ ï ŒŒ  9 gnamegfxfirst-bit-setŒCHR"÷ùhP˜] 45 ‘$" 45 ‘€$"445>"G6gfx1  Pgfx2  Pgt  $ Hgfilenamefrnrs/arithmetic/fixnums.scmŒ 𠌌  P gnameg fxbit-set?ŒCGR"÷ù7hh©] 45 ‘$"" 45 ‘$" 45 ‘€$"445>"G6¡gfx1  ggfx2  ggfx3   ggt  9 ]gfilenamefrnrs/arithmetic/fixnums.scmŒ ò ŒŒ  g gnameg fxcopy-bitŒCFR"÷ù8hhª] 45 ‘$"" 45 ‘$" 45 ‘€$"445>"G6¢gfx1  ggfx2  ggfx3   ggt  9 ]gfilenamefrnrs/arithmetic/fixnums.scmŒ ö ŒŒ  g gnameg fxbit-fieldŒCER"÷ù9h€À] 45 ‘$"7 45 ‘$"" 45 ‘$" 45 ‘€$"445>"G6¸gfx1  ~gfx2  ~gfx3   ~gfx4   ~gt  N rgfilenamefrnrs/arithmetic/fixnums.scmŒ ú ŒŒ  ~ gnamegfxcopy-bit-fieldŒCDR"÷ùhP ] 45 ‘$" 45 ‘€$"445>"GŸC˜gfx1  Ngfx2  Ngt  $ Hgfilenamefrnrs/arithmetic/fixnums.scmŒ þ ŒŒ  N gnamegfxarithmetic-shiftŒCCRCiBR"÷ùhP¦] 45 ‘$" 45 ‘€$"445>"G ˜ŸCžgfx1  Pgfx2  Pgt  $ Hgfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ  P gnamegfxarithmetic-shift-rightŒCAR"÷ù:h€Â] 45 ‘$"7 45 ‘$"" 45 ‘$" 45 ‘€$"445>"G6ºgfx1  ~gfx2  ~gfx3   ~gfx4   ~gt  N rgfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ  ~ gnamegfxrotate-bit-fieldŒC@R"÷ù;hh²] 45 ‘$"" 45 ‘$" 45 ‘€$"445>"G6ªgfx1  ggfx2  ggfx3   ggt  9 ]gfilenamefrnrs/arithmetic/fixnums.scmŒ  ŒŒ  g gnamegfxreverse-bit-fieldŒC?RCögm  +giface 2 ºgiface Á Jgiface Q Úgiface á jgiface q úgiface  Šgiface ‘ giface ! ªgi . Pgn . Pgw Z ‘ gfilenamefrnrs/arithmetic/fixnums.scmŒ   ŒŒ ” a ŒŒ  h ŒŒ ¢ i ŒŒ ? k ŒŒ ê n ŒŒ í w ŒŒ ] ‰ ŒŒ e Š ŒŒ m ‹ ŒŒ u Œ ŒŒ } ŒŒ … ŒŒ  ŒŒ • ‘ ŒŒ  ’ ŒŒ ¥ “ ŒŒ å • ŒŒ % – ŒŒ  ˜ ŒŒ × Ÿ ŒŒ Ò ¦ ŒŒ Î ² ŒŒ Î ¶ ŒŒ Ö º ŒŒ × ¾ ŒŒ × Â ŒŒ à Æ ŒŒ z Ê ŒŒ  Ñ ŒŒ !ª Ø ŒŒ "ƒ ß ŒŒ #Å à ŒŒ % á ŒŒ &E â ŒŒ 'n ä ŒŒ (a è ŒŒ )> î ŒŒ *% ï ŒŒ ++ 𠌌 ,\ ò ŒŒ - ö ŒŒ .ë ú ŒŒ /ó þ ŒŒ /ú ÿ ŒŒ 1  ŒŒ 2e  ŒŒ 3  ŒŒ1  3Ÿ C6PK!R¾`è1;1; flonums.gonu„[µü¤GOOF----LE-8-2.0;]·4h˜ ] gguile¤ ¤ gdefine-module*¤ ¤ ¤ grnrs¤ g arithmetic¤ gflonums¤ ¤ gfilenameS¤ frnrs/arithmetic/flonums.scm¤ gpureS¤ gversionS¤  ¤ gset-current-module¤ ¤ ¤ gresolve-r6rs-interface¤ ¤ ¤ gice-9¤ goptargs¤ ¤ gcall-with-deferred-observers¤ ¤ ¤ gmodule-use-interfaces!¤ ¤ ¤ gcurrent-module¤ ¤ ¤ !gonly¤ "ginf?¤ #!"¤ $gfixnums¤ %$¤ &gbase¤ '&¤ (gcontrol¤ )(¤ *g conditions¤ +*¤ ,g exceptions¤ -,¤ .glists¤ /.¤ 0gr5rs¤ 10¤ 2gmodule-export!¤ 32¤ 42¤ 5gfixnum->flonum¤ 6gno-nans-violation?¤ 7gmake-no-nans-violation¤ 8g&no-nans¤ 9gno-infinities-violation?¤ :gmake-no-infinities-violation¤ ;g&no-infinities¤ gflatan¤ ?gflasin¤ @gflacos¤ Agfltan¤ Bgflcos¤ Cgflsin¤ Dgfllog¤ Egflexp¤ Fgflround¤ Gg fltruncate¤ Hg flceiling¤ Igflfloor¤ Jg fldenominator¤ Kg flnumerator¤ Lgflmod0¤ Mgfldiv0¤ Ngfldiv0-and-mod0¤ Ogflmod¤ Pgfldiv¤ Qg fldiv-and-mod¤ Rgflabs¤ Sgfl/¤ Tgfl-¤ Ugfl*¤ Vgfl+¤ Wgflmin¤ Xgflmax¤ Ygflnan?¤ Zg flinfinite?¤ [g flfinite?¤ \gfleven?¤ ]gflodd?¤ ^g flnegative?¤ _g flpositive?¤ `gflzero?¤ ag flinteger?¤ bgfl>=?¤ cgfl>?¤ dgfl<=?¤ egflflonum¤ hgflonum?¤ i56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh4¤ jgmodule-re-export!¤ kj¤ lj¤ mgmodule-replace!¤ nm¤ om¤ pgreal?¤ qginexact?¤ rgfor-all¤ sgraise¤ tgmake-assertion-violation¤ ug assert-flonum¤ vginteger?¤ wgassert-iflonum¤ xg imag-part¤ yg real-part¤ ze+nan.0¤ {g ensure-flonum¤ |gexact->inexact¤ }gapply¤ ~g=¤ g<¤ €g<=¤ g>¤ ‚g>=¤ ƒgodd?¤ „geven?¤ …gnan?¤ †gmax¤ ‡gmin¤ ˆe0.0¤ ‰g+¤ Še1.0¤ ‹g*¤ Œg-¤ g/¤ Žgabs¤ g div-and-mod¤ gdiv¤ ‘gmod¤ ’g div0-and-mod0¤ “gdiv0¤ ”gmod0¤ •g numerator¤ –g denominator¤ —gfloor¤ ˜gceiling¤ ™gtruncate¤ šground¤ ›gexp¤ œglog¤ gsin¤ žgcos¤ Ÿgtan¤  gasin¤ ¡gacos¤ ¢gatan¤ £gsqrt¤ ¤gexpt¤ ¥*¤ ¦gmake-record-type-descriptor¤ §¥¦¤ ¨¥¦¤ ©g&implementation-restriction¤ ªg list->vector¤ «¥ª¤ ¬¥ª¤ ­grecord-constructor¤ ®¥­¤ ¯¥­¤ °g"make-record-constructor-descriptor¤ ±¥°¤ ²¥°¤ ³gcondition-predicate¤ ´¥³¤ µ¥³¤ ¶gfixnum?¤C5h¨+÷]4     54>"G454 hM]45L6Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ   CO>"G4#54 hM]45L6Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ   CO>"G4%54 hM]45L6Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ   CO>"G4'54 hM]45L6Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ   CO>"G4)54 hM]45L6Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ   CO>"G4+54 hM]45L6Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ   CO>"G4-54 hM]45L6Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ   CO>"G4/54 hM]45L6Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ   CO>"G4154 hM]45L6Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ   CO>"G44 ihM]456Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ  C>"G4l hM]456Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ  C>"G4o hM]456Egfilenamefrnrs/arithmetic/flonums.scmŒ  ŒŒ  C>"Gpqht]45$6Clgobj  gfilenamefrnrs/arithmetic/flonums.scmŒ E ŒŒ   gnamegflonum?ŒChRrhsth(‹-1345$C456ƒgargs &gt  &gfilenamefrnrs/arithmetic/flonums.scmŒ F ŒŒ & gnameg assert-flonumŒCuRrhvh)]45$6C!gi     Csth(Œ-1345$C456„gargs &gt  &gfilenamefrnrs/arithmetic/flonums.scmŒ H ŒŒ & gnamegassert-iflonumŒCwRpxyzh(€]45$C45 ‘$6Cxgz  &gfilenamefrnrs/arithmetic/flonums.scmŒ L ŒŒ % O ŒŒ  & gnameg ensure-flonumŒC{Rpst|h8…] 45$"445>"G6}gx  3gt -gfilenamefrnrs/arithmetic/flonums.scmŒ Q ŒŒ  3 gnameg real->flonumŒCgR}u~h(t-134>"G@lgargs #gfilenamefrnrs/arithmetic/flonums.scmŒ U ŒŒ # gnamegfl=?ŒCfR}uh(t-134>"G@lgargs #gfilenamefrnrs/arithmetic/flonums.scmŒ V ŒŒ # gnamegfl"G@mgargs #gfilenamefrnrs/arithmetic/flonums.scmŒ W ŒŒ # gnamegfl<=?ŒCdR}uh(t-134>"G@lgargs #gfilenamefrnrs/arithmetic/flonums.scmŒ X ŒŒ # gnamegfl>?ŒCcR}u‚h(u-134>"G@mgargs #gfilenamefrnrs/arithmetic/flonums.scmŒ Y ŒŒ # gnamegfl>=?ŒCbRuvh v]4>"G6ngfl  gfilenamefrnrs/arithmetic/flonums.scmŒ [ ŒŒ   gnameg flinteger?ŒCaRuh s]4>"G ‘Ckgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ \ ŒŒ   gnamegflzero?ŒC`Ruh w]4>"G ”Cogfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ] ŒŒ   gnameg flpositive?ŒC_Ruh w]4>"G ’Cogfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ^ ŒŒ   gnameg flnegative?ŒC^Rwƒh s]4>"G6kgifl  gfilenamefrnrs/arithmetic/flonums.scmŒ _ ŒŒ   gnamegflodd?ŒC]Rw„h t]4>"G6lgifl  gfilenamefrnrs/arithmetic/flonums.scmŒ ` ŒŒ   gnamegfleven?ŒC\Ru"…h8ƒ] 4>"G45$"45€C{gfl  5gt  3gfilenamefrnrs/arithmetic/flonums.scmŒ a ŒŒ  5 gnameg flfinite?ŒC[Ru"h w]4>"G6ogfl  gfilenamefrnrs/arithmetic/flonums.scmŒ b ŒŒ   gnameg flinfinite?ŒCZRu…h r]4>"G6jgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ c ŒŒ   gnamegflnan?ŒCYR}u†h0™-13Œ4>"G@‘gfl1 *gargs *gflargs   *gfilenamefrnrs/arithmetic/flonums.scmŒ e ŒŒ * gnamegflmaxŒCXR}u‡h0™-13Œ4>"G@‘gfl1 *gargs *gflargs   *gfilenamefrnrs/arithmetic/flonums.scmŒ j ŒŒ * gnamegflminŒCWR}uˆ‰h0{-134>"G(C@sgargs ,gfilenamefrnrs/arithmetic/flonums.scmŒ o ŒŒ % q ŒŒ , gnamegfl+ŒCVR}uŠ‹h0{-134>"G(C@sgargs ,gfilenamefrnrs/arithmetic/flonums.scmŒ s ŒŒ % u ŒŒ , gnamegfl*ŒCUR}uŒh0—-13Œ4>"G@gfl1 *gargs *gflargs   *gfilenamefrnrs/arithmetic/flonums.scmŒ w ŒŒ * gnamegfl-ŒCTR}uh0—-13Œ4>"G@gfl1 *gargs *gflargs   *gfilenamefrnrs/arithmetic/flonums.scmŒ | ŒŒ * gnamegfl/ŒCSRuŽh r]4>"G6jgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ŒŒ   gnamegflabsŒCRRwh Œ]4>"G6„gfl1  gfl2  gfilenamefrnrs/arithmetic/flonums.scmŒ ƒ ŒŒ   gnameg fldiv-and-modŒCQRwh „]4>"G6|gfl1  gfl2  gfilenamefrnrs/arithmetic/flonums.scmŒ ‡ ŒŒ   gnamegfldivŒCPRw‘h „]4>"G6|gfl1  gfl2  gfilenamefrnrs/arithmetic/flonums.scmŒ ‹ ŒŒ   gnamegflmodŒCORw’h Ž]4>"G6†gfl1  gfl2  gfilenamefrnrs/arithmetic/flonums.scmŒ ŒŒ   gnamegfldiv0-and-mod0ŒCNRw“h …]4>"G6}gfl1  gfl2  gfilenamefrnrs/arithmetic/flonums.scmŒ “ ŒŒ   gnamegfldiv0ŒCMRw”h …]4>"G6}gfl1  gfl2  gfilenamefrnrs/arithmetic/flonums.scmŒ — ŒŒ   gnamegflmod0ŒCLRu•h x]4>"G6pgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ › ŒŒ   gnameg flnumeratorŒCKRu–h z]4>"G6rgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ œ ŒŒ   gnameg fldenominatorŒCJRu—h t]4>"G6lgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ž ŒŒ   gnamegflfloorŒCIRu˜h v]4>"G6ngfl  gfilenamefrnrs/arithmetic/flonums.scmŒ Ÿ ŒŒ   gnameg flceilingŒCHRu™h w]4>"G6ogfl  gfilenamefrnrs/arithmetic/flonums.scmŒ   ŒŒ   gnameg fltruncateŒCGRušh t]4>"G6lgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ¡ ŒŒ   gnamegflroundŒCFRu›h r]4>"G6jgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ £ ŒŒ   gnamegflexpŒCERu{œˆhX­)#34>"G4–56]4>"G4–54–5›6¥gfl )gfl + Xgfl2 + Xgfilenamefrnrs/arithmetic/flonums.scmŒ $ ª !ŒŒ H ­ $ŒŒ R ® %ŒŒ )  + X gnamegfllogŒCDRuh r]4>"G6jgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ° ŒŒ   gnamegflsinŒCCRužh r]4>"G6jgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ± ŒŒ   gnamegflcosŒCBRuŸh r]4>"G6jgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ² ŒŒ   gnamegfltanŒCARu{ h s]4>"G456kgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ³ ŒŒ   gnamegflasinŒC?Ru{¡h s]4>"G456kgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ ´ ŒŒ   gnamegflacosŒC@Ru¢h@e)34>"G6]4>"G6]gfl !gfl # ?gfl2 # ? !  # ? gnamegflatanŒC>Ru{£h s]4>"G456kgfl  gfilenamefrnrs/arithmetic/flonums.scmŒ º ŒŒ   gnamegflsqrtŒC=Ru{¤h(…]4>"G456}gfl1  #gfl2  #gfilenamefrnrs/arithmetic/flonums.scmŒ » ŒŒ  # gnamegflexptŒC"G6gfx  3gt -gfilenamefrnrs/arithmetic/flonums.scmŒ Ç ŒŒ  3 gnamegfixnum->flonumŒC5RCïgm  +giface 2 ºgiface Á Jgiface Q Úgiface á jgiface q úgiface  Šgiface ‘ giface ! ªgiface ± : gfilenamefrnrs/arithmetic/flonums.scmŒ   ŒŒ _ E ŒŒ . F ŒŒ W H ŒŒ  L ŒŒ ð Q ŒŒ § U ŒŒ _ V ŒŒ  W ŒŒ Ï X ŒŒ ˆ Y ŒŒ 9 [ ŒŒ Þ \ ŒŒ Š ] ŒŒ : ^ ŒŒ æ _ ŒŒ  ` ŒŒ f a ŒŒ  b ŒŒ ½ c ŒŒ œ e ŒŒ | j ŒŒ F o ŒŒ  s ŒŒ ò w ŒŒ Ò | ŒŒ } ŒŒ ? ƒ ŒŒ ÷ ‡ ŒŒ ¯ ‹ ŒŒ q ŒŒ 0 “ ŒŒ ð — ŒŒ £ › ŒŒ U œ ŒŒ ÿ ž ŒŒ !© Ÿ ŒŒ "Z   ŒŒ # ¡ ŒŒ #­ £ ŒŒ $Ð ¤ ŒŒ %} ° ŒŒ &% ± ŒŒ &Í ² ŒŒ 'v ³ ŒŒ (& ´ ŒŒ (à µ ŒŒ )Ž º ŒŒ *X » ŒŒ *Y ½ ŒŒ *  ŒŒ +¤ Ç ŒŒ5  +¦ C6PK!–4ιÿÿ bitwise.gonu„[µü¤GOOF----LE-8-2.0ç]c4hÈ] gguile¤ ¤ gdefine-module*¤ ¤ ¤ grnrs¤ g arithmetic¤ gbitwise¤ ¤ gfilenameS¤ frnrs/arithmetic/bitwise.scm¤ gpureS¤ gversionS¤  ¤ gset-current-module¤ ¤ ¤ gresolve-r6rs-interface¤ ¤ ¤ gbase¤ ¤ gcall-with-deferred-observers¤ ¤ ¤ gmodule-use-interfaces!¤ ¤ ¤ gcurrent-module¤ ¤ ¤ gcontrol¤ ! ¤ "grename¤ #gonly¤ $gsrfi¤ %gsrfi-60¤ &$%¤ 'g bitwise-if¤ (ginteger-length¤ )g first-set-bit¤ *gcopy-bit¤ +g bit-field¤ ,gcopy-bit-field¤ -grotate-bit-field¤ .greverse-bit-field¤ /#&'()*+,-. ¤ 0gbitwise-length¤ 1(0¤ 2gbitwise-first-bit-set¤ 3)2¤ 4gbitwise-bit-field¤ 5+4¤ 6gbitwise-reverse-bit-field¤ 7.6¤ 8"/1357¤ 9glognot¤ :glogand¤ ;glogior¤ glogbit?¤ ?gmodulo¤ @gash¤ A#9:;<=>?@ ¤ Bg bitwise-not¤ C9B¤ Dg bitwise-and¤ E:D¤ Fg bitwise-ior¤ G;F¤ Hg bitwise-xor¤ I<H¤ Jgbitwise-arithmetic-shift¤ K@J¤ L"ACEGIK¤ Mgmodule-export!¤ NM¤ OM¤ Pgbitwise-rotate-bit-field¤ Qgbitwise-arithmetic-shift-right¤ Rgbitwise-arithmetic-shift-left¤ Sgbitwise-copy-bit-field¤ Tgbitwise-copy-bit¤ Ugbitwise-bit-set?¤ Vgbitwise-bit-count¤ WPQRSTUV¤ Xgmodule-re-export!¤ YX¤ ZX¤ [6J420'HFDB ¤ \gmodule-replace!¤ ]\¤ ^\¤ _9¤ `9¤ a@¤ b@¤C5h¨í]4     54>"G454hM]45L6Egfilenamefrnrs/arithmetic/bitwise.scmŒ  ŒŒ   CO>"G4!54hM]45L6Egfilenamefrnrs/arithmetic/bitwise.scmŒ  ŒŒ   CO>"G4854hM]45L6Egfilenamefrnrs/arithmetic/bitwise.scmŒ  ŒŒ   CO>"G4L54hM]45L6Egfilenamefrnrs/arithmetic/bitwise.scmŒ  ŒŒ   CO>"G4OWhM]456Egfilenamefrnrs/arithmetic/bitwise.scmŒ  ŒŒ  C>"G4Z[hM]456Egfilenamefrnrs/arithmetic/bitwise.scmŒ  ŒŒ  C>"G4^hM]456Egfilenamefrnrs/arithmetic/bitwise.scmŒ  ŒŒ  C>"G`=h }] ’$ 4566ugei  gfilenamefrnrs/arithmetic/bitwise.scmŒ E ŒŒ   gnamegbitwise-bit-countŒCVR>hŽ]6†gei1  gei2  gfilenamefrnrs/arithmetic/bitwise.scmŒ J ŒŒ  gnamegbitwise-bit-set?ŒCUR*>hŸ]4 56—gei1  gei2  gei3   gfilenamefrnrs/arithmetic/bitwise.scmŒ L ŒŒ   gnamegbitwise-copy-bitŒCTR,h¶]6®gei1  gei2  gei3   gei4   gfilenamefrnrs/arithmetic/bitwise.scmŒ S ŒŒ   gnamegbitwise-copy-bit-fieldŒCSR-h¸]6°gei1  gei2  gei3   gei4   gfilenamefrnrs/arithmetic/bitwise.scmŒ V ŒŒ   gnamegbitwise-rotate-bit-fieldŒCPRbRRhœ] ˜ŸC”gei1  gei2  gfilenamefrnrs/arithmetic/bitwise.scmŒ Z ŒŒ  gnamegbitwise-arithmetic-shift-rightŒCQRCågm  +giface 2 ºgiface Á Jgiface Q Úgiface á jgfilenamefrnrs/arithmetic/bitwise.scmŒ   ŒŒ   E ŒŒ Q J ŒŒ " L ŒŒ  S ŒŒ Û V ŒŒ à Y ŒŒ Ÿ Z ŒŒ  ¡ C6PK!NPï4T T size_t.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_SIZE_T_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_SIZE_T_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `size_t` and Ruby's. */ #include "ruby/internal/config.h" #include "ruby/internal/arithmetic/int.h" #include "ruby/internal/arithmetic/long.h" #include "ruby/internal/arithmetic/long_long.h" #include "ruby/backward/2/long_long.h" #if defined(__DOXYGEN__) # /** Converts a C's `size_t` into an instance of ::rb_cInteger. */ # define RB_SIZE2NUM RB_ULONG2NUM # /** Converts a C's `ssize_t` into an instance of ::rb_cInteger. */ # define RB_SSIZE2NUM RB_LONG2NUM #elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG # define RB_SIZE2NUM RB_ULL2NUM # define RB_SSIZE2NUM RB_LL2NUM #elif SIZEOF_SIZE_T == SIZEOF_LONG # define RB_SIZE2NUM RB_ULONG2NUM # define RB_SSIZE2NUM RB_LONG2NUM #else # define RB_SIZE2NUM RB_UINT2NUM # define RB_SSIZE2NUM RB_INT2NUM #endif #if defined(__DOXYGEN__) # /** Converts an instance of ::rb_cInteger into C's `size_t`. */ # define RB_NUM2SIZE RB_NUM2ULONG # /** Converts an instance of ::rb_cInteger into C's `ssize_t`. */ # define RB_NUM2SSIZE RB_NUM2LONG #elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG # define RB_NUM2SIZE RB_NUM2ULL # define RB_NUM2SSIZE RB_NUM2LL #elif SIZEOF_SIZE_T == SIZEOF_LONG # define RB_NUM2SIZE RB_NUM2ULONG # define RB_NUM2SSIZE RB_NUM2LONG #else # define RB_NUM2SIZE RB_NUM2UINT # define RB_NUM2SSIZE RB_NUM2INT #endif #define NUM2SIZET RB_NUM2SIZE /**< @old{RB_NUM2SIZE} */ #define SIZET2NUM RB_SIZE2NUM /**< @old{RB_SIZE2NUM} */ #define NUM2SSIZET RB_NUM2SSIZE /**< @old{RB_NUM2SSIZE} */ #define SSIZET2NUM RB_SSIZE2NUM /**< @old{RB_SSIZE2NUM} */ #endif /* RBIMPL_ARITHMETIC_SIZE_T_H */ PK!ÊÄ Ä off_t.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_OFF_T_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_OFF_T_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `off_t` and Ruby's. */ #include "ruby/internal/config.h" #include "ruby/internal/arithmetic/int.h" #include "ruby/internal/arithmetic/long.h" #include "ruby/internal/arithmetic/long_long.h" #include "ruby/backward/2/long_long.h" /** Converts a C's `off_t` into an instance of ::rb_cInteger. */ #ifdef OFFT2NUM # /* take that. */ #elif SIZEOF_OFF_T == SIZEOF_LONG_LONG # define OFFT2NUM RB_LL2NUM #elif SIZEOF_OFF_T == SIZEOF_LONG # define OFFT2NUM RB_LONG2NUM #else # define OFFT2NUM RB_INT2NUM #endif /** Converts an instance of ::rb_cNumeric into C's `off_t`. */ #ifdef NUM2OFFT # /* take that. */ #elif SIZEOF_OFF_T == SIZEOF_LONG_LONG # define NUM2OFFT RB_NUM2LL #elif SIZEOF_OFF_T == SIZEOF_LONG # define NUM2OFFT RB_NUM2LONG #else # define NUM2OFFT RB_NUM2INT #endif /** A rb_sprintf() format prefix to be used for an `off_t` parameter. */ #ifdef PRI_OFFT_PREFIX # /* take that. */ #elif SIZEOF_OFF_T == SIZEOF_LONG_LONG # define PRI_OFFT_PREFIX PRI_LL_PREFIX #elif SIZEOF_OFF_T == SIZEOF_LONG # define PRI_OFFT_PREFIX PRI_LONG_PREFIX #else # define PRI_OFFT_PREFIX PRI_INT_PREFIX #endif #endif /* RBIMPL_ARITHMETIC_OFF_T_H */ PK!÷¥bq³ ³ st_data_t.hnu„[µü¤#ifndef RBIMPL_ARITHMERIC_ST_DATA_T_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMERIC_ST_DATA_T_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `st_data_t` and Ruby's. */ #include "ruby/internal/arithmetic/fixnum.h" #include "ruby/internal/arithmetic/long.h" #include "ruby/internal/attr/artificial.h" #include "ruby/internal/attr/const.h" #include "ruby/internal/attr/constexpr.h" #include "ruby/internal/cast.h" #include "ruby/internal/value.h" #include "ruby/assert.h" #include "ruby/st.h" #define ST2FIX RB_ST2FIX /**< @old{RB_ST2FIX} */ /** @cond INTERNAL_MACRO */ #define RB_ST2FIX RB_ST2FIX /** @endcond */ RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) RBIMPL_ATTR_ARTIFICIAL() /** * Converts a C's `st_data_t` into an instance of ::rb_cInteger. * * @param[in] i The data in question. * @return A converted result * @warning THIS CONVERSION LOSES DATA! Be warned. * @see https://bugs.ruby-lang.org/issues/13877 * @see https://bugs.ruby-lang.org/issues/14218 * * @internal * * This is needed because of hash functions. Hash functions return * `st_data_t`, which could theoretically be bigger than Fixnums. However * allocating Bignums for them every time we calculate hash values is just too * heavy. To avoid penalty we need to ignore some upper bit(s) and stick to * Fixnums. This function is used for that purpose. */ static inline VALUE RB_ST2FIX(st_data_t i) { SIGNED_VALUE x = i; if (x >= 0) { x &= RUBY_FIXNUM_MAX; } else { x |= RUBY_FIXNUM_MIN; } RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(x)); unsigned long y = RBIMPL_CAST((unsigned long)x); return RB_LONG2FIX(y); } #endif /* RBIMPL_ARITHMETIC_ST_DATA_T_H */ PK!¢ ø»,»,long.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_LONG_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_LONG_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `long` and Ruby's. * * ### Q&A ### * * - Q: Why are INT2FIX etc. here, not in `int.h`? * * - A: Because they are in fact handling `long`. It seems someone did not * understand the difference of `int` and `long` when they designed those * macros. */ #include "ruby/internal/config.h" #include "ruby/internal/arithmetic/fixnum.h" /* FIXABLE */ #include "ruby/internal/arithmetic/intptr_t.h" /* rb_int2big etc.*/ #include "ruby/internal/assume.h" #include "ruby/internal/attr/artificial.h" #include "ruby/internal/attr/cold.h" #include "ruby/internal/attr/const.h" #include "ruby/internal/attr/constexpr.h" #include "ruby/internal/attr/noreturn.h" #include "ruby/internal/cast.h" #include "ruby/internal/dllexport.h" #include "ruby/internal/special_consts.h" /* FIXNUM_FLAG */ #include "ruby/internal/value.h" #include "ruby/assert.h" #define FIX2LONG RB_FIX2LONG /**< @old{RB_FIX2LONG} */ #define FIX2ULONG RB_FIX2ULONG /**< @old{RB_FIX2ULONG} */ #define INT2FIX RB_INT2FIX /**< @old{RB_INT2FIX} */ #define LONG2FIX RB_INT2FIX /**< @old{RB_INT2FIX} */ #define LONG2NUM RB_LONG2NUM /**< @old{RB_LONG2NUM} */ #define NUM2LONG RB_NUM2LONG /**< @old{RB_NUM2LONG} */ #define NUM2ULONG RB_NUM2ULONG /**< @old{RB_NUM2ULONG} */ #define RB_FIX2LONG rb_fix2long /**< @alias{rb_fix2long} */ #define RB_FIX2ULONG rb_fix2ulong /**< @alias{rb_fix2ulong} */ #define RB_LONG2FIX RB_INT2FIX /**< @alias{RB_INT2FIX} */ #define RB_LONG2NUM rb_long2num_inline /**< @alias{rb_long2num_inline} */ #define RB_NUM2LONG rb_num2long_inline /**< @alias{rb_num2long_inline} */ #define RB_NUM2ULONG rb_num2ulong_inline /**< @alias{rb_num2ulong_inline} */ #define RB_ULONG2NUM rb_ulong2num_inline /**< @alias{rb_ulong2num_inline} */ #define ULONG2NUM RB_ULONG2NUM /**< @old{RB_ULONG2NUM} */ #define rb_fix_new RB_INT2FIX /**< @alias{RB_INT2FIX} */ #define rb_long2int rb_long2int_inline /**< @alias{rb_long2int_inline} */ /** @cond INTERNAL_MACRO */ #define RB_INT2FIX RB_INT2FIX /** @endcond */ RBIMPL_SYMBOL_EXPORT_BEGIN() RBIMPL_ATTR_NORETURN() RBIMPL_ATTR_COLD() /** * This is an utility function to raise an ::rb_eRangeError. * * @param[in] num A signed value about to overflow. * @exception rb_eRangeError `num` is out of range of `int`. */ void rb_out_of_int(SIGNED_VALUE num); /** * Converts an instance of ::rb_cNumeric into C's `long`. * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `long`. * @return The passed value converted into C's `long`. */ long rb_num2long(VALUE num); /** * Converts an instance of ::rb_cNumeric into C's `unsigned long`. * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `unsigned long`. * @return The passed value converted into C's `unsigned long`. */ unsigned long rb_num2ulong(VALUE num); RBIMPL_SYMBOL_EXPORT_END() RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) RBIMPL_ATTR_ARTIFICIAL() /** * Converts a C's `long` into an instance of ::rb_cInteger. * * @param[in] i Arbitrary `long` value. * @return An instance of ::rb_cInteger. */ static inline VALUE RB_INT2FIX(long i) { RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(i)); /* :NOTE: VALUE can be wider than long. As j being unsigned, 2j+1 is fully * defined. Also it can be compiled into a single LEA instruction. */ const unsigned long j = i; const unsigned long k = (j << 1) + RUBY_FIXNUM_FLAG; const long l = k; const SIGNED_VALUE m = l; /* Sign extend */ const VALUE n = m; RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(n)); return n; } /** * Checks if `int` can hold the given integer. * * @param[in] n Arbitrary `long` value. * @exception rb_eRangeError `n` is out of range of `int`. * @return Identical value of type `int` */ static inline int rb_long2int_inline(long n) { int i = RBIMPL_CAST((int)n); if /* constexpr */ (sizeof(long) <= sizeof(int)) { RBIMPL_ASSUME(i == n); } if (i != n) rb_out_of_int(n); return i; } RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) /** * @private * * This is an implementation detail of rb_fix2long(). People don't use it * directly. * * @param[in] x A Fixnum. * @return Identical value of type `long` * @pre Must not pass anything other than a Fixnum. */ static inline long rbimpl_fix2long_by_idiv(VALUE x) { RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); /* :NOTE: VALUE can be wider than long. (x-1)/2 never overflows because * RB_FIXNUM_P(x) holds. Also it has no portability issue like y>>1 * below. */ const SIGNED_VALUE y = x - RUBY_FIXNUM_FLAG; const SIGNED_VALUE z = y / 2; const long w = RBIMPL_CAST((long)z); RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(w)); return w; } RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) /** * @private * * This is an implementation detail of rb_fix2long(). People don't use it * directly. * * @param[in] x A Fixnum. * @return Identical value of type `long` * @pre Must not pass anything other than a Fixnum. */ static inline long rbimpl_fix2long_by_shift(VALUE x) { RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); /* :NOTE: VALUE can be wider than long. If right shift is arithmetic, this * is noticeably faster than above. */ const SIGNED_VALUE y = x; const SIGNED_VALUE z = y >> 1; const long w = RBIMPL_CAST((long)z); RBIMPL_ASSERT_OR_ASSUME(RB_FIXABLE(w)); return w; } RBIMPL_ATTR_CONST() RBIMPL_ATTR_CONSTEXPR(CXX11) /** * @private * * This is an implementation detail of rb_fix2long(). People don't use it * directly. * * @retval true This C compiler's right shift operator is arithmetic. * @retval false This C compiler's right shift operator is logical. */ static inline bool rbimpl_right_shift_is_arithmetic_p(void) { return (-1 >> 1) == -1; } RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) /** * Converts a Fixnum into C's `long`. * * @param[in] x Some Fixnum. * @pre Must not pass anything other than a Fixnum. * @return The passed value converted into C's `long`. */ static inline long rb_fix2long(VALUE x) { if /* constexpr */ (rbimpl_right_shift_is_arithmetic_p()) { return rbimpl_fix2long_by_shift(x); } else { return rbimpl_fix2long_by_idiv(x); } } RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) /** * Converts a Fixnum into C's `unsigned long`. * * @param[in] x Some Fixnum. * @pre Must not pass anything other than a Fixnum. * @return The passed value converted into C's `unsigned long`. * @note Negative fixnums will be converted into large unsigned longs. */ static inline unsigned long rb_fix2ulong(VALUE x) { RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); return rb_fix2long(x); } /** * Converts an instance of ::rb_cNumeric into C's `long`. * * @param[in] x Something numeric. * @exception rb_eTypeError `x` is not a numeric. * @exception rb_eRangeError `x` is out of range of `long`. * @return The passed value converted into C's `long`. */ static inline long rb_num2long_inline(VALUE x) { if (RB_FIXNUM_P(x)) return RB_FIX2LONG(x); else return rb_num2long(x); } /** * Converts an instance of ::rb_cNumeric into C's `unsigned long`. * * @param[in] x Something numeric. * @exception rb_eTypeError `x` is not a numeric. * @exception rb_eRangeError `x` is out of range of `unsigned long`. * @return The passed value converted into C's `unsigned long`. * * @internal * * This (negative fixnum would become a large unsigned long while negative * bignum is an exception) has been THE behaviour of NUM2ULONG since the * beginning. It is strange, but we can no longer change how it works at this * moment. We have to get by with it. * * @see https://bugs.ruby-lang.org/issues/9089 */ static inline unsigned long rb_num2ulong_inline(VALUE x) { if (RB_FIXNUM_P(x)) return RB_FIX2ULONG(x); else return rb_num2ulong(x); } /** * Converts a C's `long` into an instance of ::rb_cInteger. * * @param[in] v Arbitrary `long` value. * @return An instance of ::rb_cInteger. */ static inline VALUE rb_long2num_inline(long v) { if (RB_FIXABLE(v)) return RB_LONG2FIX(v); else return rb_int2big(v); } /** * Converts a C's `unsigned long` into an instance of ::rb_cInteger. * * @param[in] v Arbitrary `unsigned long` value. * @return An instance of ::rb_cInteger. */ static inline VALUE rb_ulong2num_inline(unsigned long v) { if (RB_POSFIXABLE(v)) return RB_LONG2FIX(v); else return rb_uint2big(v); } /** * @cond INTERNAL_MACRO * * Following overload is necessary because sometimes INT2FIX is used as a enum * value (e.g. `enum { FOO = INT2FIX(0) };`). THIS IS NG in theory because a * VALUE does not fit into an enum (which must be a signed int). But we cannot * break existing codes. */ #if RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 # /* C++ can write constexpr as enum values. */ #elif ! defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P) # undef INT2FIX # define INT2FIX(i) (RBIMPL_CAST((VALUE)(i)) << 1 | RUBY_FIXNUM_FLAG) #else # undef INT2FIX # define INT2FIX(i) \ __builtin_choose_expr( \ __builtin_constant_p(i), \ RBIMPL_CAST((VALUE)(i)) << 1 | RUBY_FIXNUM_FLAG, \ RB_INT2FIX(i)) #endif /** @endcond */ #endif /* RBIMPL_ARITHMETIC_LONG_H */ PK!¸{rffmode_t.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_MODE_T_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_MODE_T_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `mode_t` and Ruby's. */ #include "ruby/internal/config.h" #include "ruby/internal/arithmetic/int.h" /** Converts a C's `mode_t` into an instance of ::rb_cInteger. */ #ifndef NUM2MODET # define NUM2MODET RB_NUM2INT #endif /** Converts an instance of ::rb_cNumeric into C's `mode_t`. */ #ifndef MODET2NUM # define MODET2NUM RB_INT2NUM #endif /** A rb_sprintf() format prefix to be used for a `mode_t` parameter. */ #ifndef PRI_MODET_PREFIX # define PRI_MODET_PREFIX PRI_INT_PREFIX #endif #endif /* RBIMPL_ARITHMETIC_MODE_T_H */ PK!ÒƒÓW+ + char.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_CHAR_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_CHAR_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `char` and Ruby's. */ #include "ruby/internal/arithmetic/int.h" /* NUM2INT is here, but */ #include "ruby/internal/arithmetic/long.h" /* INT2FIX is here.*/ #include "ruby/internal/attr/artificial.h" #include "ruby/internal/attr/const.h" #include "ruby/internal/attr/constexpr.h" #include "ruby/internal/cast.h" #include "ruby/internal/core/rstring.h" #include "ruby/internal/value_type.h" #define RB_NUM2CHR rb_num2char_inline /**< @alias{rb_num2char_inline} */ #define NUM2CHR RB_NUM2CHR /**< @old{RB_NUM2CHR} */ #define CHR2FIX RB_CHR2FIX /**< @old{RB_CHR2FIX} */ /** @cond INTERNAL_MACRO */ #define RB_CHR2FIX RB_CHR2FIX /** @endcond */ RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14) RBIMPL_ATTR_ARTIFICIAL() /** * Converts a C's `unsigned char` into an instance of ::rb_cInteger. * * @param[in] c Arbitrary `unsigned char` value. * @return An instance of ::rb_cInteger. * * @internal * * Nobody explicitly states this but in Ruby, a char means an unsigned integer * value of range 0..255. This is a general principle. AFAIK there is no * single line of code where char is signed. */ static inline VALUE RB_CHR2FIX(unsigned char c) { return RB_INT2FIX(c); } /** * Converts an instance of ::rb_cNumeric into C's `char`. At the same time it * accepts a String of more than one character, and returns its first byte. In * the early days there was a Ruby level "character" literal `?c`, which * roughly worked this way. * * @param[in] x Either a string or a numeric. * @exception rb_eTypeError `x` is not a numeric. * @exception rb_eRangeError `x` is out of range of `unsigned int`. * @return The passed value converted into C's `char`. */ static inline char rb_num2char_inline(VALUE x) { if (RB_TYPE_P(x, RUBY_T_STRING) && (RSTRING_LEN(x)>=1)) return RSTRING_PTR(x)[0]; else return RBIMPL_CAST((char)RB_NUM2INT(x)); } #endif /* RBIMPL_ARITHMETIC_CHAR_H */ PK!)°ðî  intptr_t.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_INTPTR_T_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_INTPTR_T_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `intptr_t` and Ruby's. */ #include "ruby/internal/config.h" #ifdef HAVE_STDINT_H # include #endif #include "ruby/internal/value.h" #include "ruby/internal/dllexport.h" #define rb_int_new rb_int2inum /**< @alias{rb_int2inum} */ #define rb_uint_new rb_uint2inum /**< @alias{rb_uint2inum} */ RBIMPL_SYMBOL_EXPORT_BEGIN() /** * Converts a C's `intptr_t` into an instance of ::rb_cInteger. * * @param[in] i Arbitrary `intptr_t` value. * @return An instance of ::rb_cInteger. * @note This function always allocates Bignums, even if the given number * is small enough to fit into a Fixnum. */ VALUE rb_int2big(intptr_t i); /** * Converts a C's `intptr_t` into an instance of ::rb_cInteger. * * @param[in] i Arbitrary `intptr_t` value. * @return An instance of ::rb_cInteger. */ VALUE rb_int2inum(intptr_t i); /** * Converts a C's `intptr_t` into an instance of ::rb_cInteger. * * @param[in] i Arbitrary `intptr_t` value. * @return An instance of ::rb_cInteger. * @note This function always allocates Bignums, even if the given number * is small enough to fit into a Fixnum. */ VALUE rb_uint2big(uintptr_t i); /** * Converts a C's `uintptr_t` into an instance of ::rb_cInteger. * * @param[in] i Arbitrary `uintptr_t` value. * @return An instance of ::rb_cInteger. */ VALUE rb_uint2inum(uintptr_t i); RBIMPL_SYMBOL_EXPORT_END() #endif /* RBIMPL_ARITHMETIC_INTPTR_T_H */ PK!=nVt{ { fixnum.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_FIXNUM_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_FIXNUM_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Handling of integers formerly known as Fixnums. */ #include "ruby/backward/2/limits.h" #define FIXABLE RB_FIXABLE /**< @old{RB_FIXABLE} */ #define FIXNUM_MAX RUBY_FIXNUM_MAX /**< @old{RUBY_FIXNUM_MAX} */ #define FIXNUM_MIN RUBY_FIXNUM_MIN /**< @old{RUBY_FIXNUM_MIN} */ #define NEGFIXABLE RB_NEGFIXABLE /**< @old{RB_NEGFIXABLE} */ #define POSFIXABLE RB_POSFIXABLE /**< @old{RB_POSFIXABLE} */ /** * Checks if the passed value is in range of fixnum, assuming it is a positive * number. Can sometimes be useful for C's unsigned integer types. * * @internal * * FIXABLE can be applied to anything, from double to intmax_t. The problem is * double. On a 64bit system RUBY_FIXNUM_MAX is 4,611,686,018,427,387,903, * which is not representable by a double. The nearest value that a double can * represent is 4,611,686,018,427,387,904, which is not fixable. The * seemingly-strange "< FIXNUM_MAX + 1" expression below is due to this. */ #define RB_POSFIXABLE(_) ((_) < RUBY_FIXNUM_MAX + 1) /** * Checks if the passed value is in range of fixnum, assuming it is a negative * number. This is an implementation of #RB_FIXABLE. Rarely used stand alone. */ #define RB_NEGFIXABLE(_) ((_) >= RUBY_FIXNUM_MIN) /** Checks if the passed value is in range of fixnum */ #define RB_FIXABLE(_) (RB_POSFIXABLE(_) && RB_NEGFIXABLE(_)) /** Maximum possible value that a fixnum can represent. */ #define RUBY_FIXNUM_MAX (LONG_MAX / 2) /** Minimum possible value that a fixnum can represent. */ #define RUBY_FIXNUM_MIN (LONG_MIN / 2) #endif /* RBIMPL_ARITHMETIC_FIXNUM_H */ PK!çÈ(—^^uid_t.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_UID_T_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_UID_T_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `uid_t` and Ruby's. */ #include "ruby/internal/config.h" #include "ruby/internal/arithmetic/long.h" /** Converts a C's `uid_t` into an instance of ::rb_cInteger. */ #ifndef UIDT2NUM # define UIDT2NUM RB_LONG2NUM #endif /** Converts an instance of ::rb_cNumeric into C's `uid_t`. */ #ifndef NUM2UIDT # define NUM2UIDT RB_NUM2LONG #endif /** A rb_sprintf() format prefix to be used for a `uid_t` parameter. */ #ifndef PRI_UIDT_PREFIX # define PRI_UIDT_PREFIX PRI_LONG_PREFIX #endif #endif /* RBIMPL_ARITHMETIC_UID_T_H */ PK!n-o ^^gid_t.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_GID_T_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_GID_T_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `gid_t` and Ruby's. */ #include "ruby/internal/config.h" #include "ruby/internal/arithmetic/long.h" /** Converts a C's `gid_t` into an instance of ::rb_cInteger. */ #ifndef GIDT2NUM # define GIDT2NUM RB_LONG2NUM #endif /** Converts an instance of ::rb_cNumeric into C's `gid_t`. */ #ifndef NUM2GIDT # define NUM2GIDT RB_NUM2LONG #endif /** A rb_sprintf() format prefix to be used for a `gid_t` parameter. */ #ifndef PRI_GIDT_PREFIX # define PRI_GIDT_PREFIX PRI_LONG_PREFIX #endif #endif /* RBIMPL_ARITHMETIC_GID_T_H */ PK!æmÂ33 long_long.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_LONG_LONG_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_LONG_LONG_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `long long` and Ruby's. */ #include "ruby/internal/value.h" #include "ruby/internal/dllexport.h" #include "ruby/internal/special_consts.h" #include "ruby/backward/2/long_long.h" #define RB_LL2NUM rb_ll2num_inline /**< @alias{rb_ll2num_inline} */ #define RB_ULL2NUM rb_ull2num_inline /**< @alias{rb_ull2num_inline} */ #define LL2NUM RB_LL2NUM /**< @old{RB_LL2NUM} */ #define ULL2NUM RB_ULL2NUM /**< @old{RB_ULL2NUM} */ #define RB_NUM2LL rb_num2ll_inline /**< @alias{rb_num2ll_inline} */ #define RB_NUM2ULL rb_num2ull_inline /**< @alias{rb_num2ull_inline} */ #define NUM2LL RB_NUM2LL /**< @old{RB_NUM2LL} */ #define NUM2ULL RB_NUM2ULL /**< @old{RB_NUM2ULL} */ RBIMPL_SYMBOL_EXPORT_BEGIN() /** * Converts a C's `long long` into an instance of ::rb_cInteger. * * @param[in] num Arbitrary `long long` value. * @return An instance of ::rb_cInteger. */ VALUE rb_ll2inum(LONG_LONG num); /** * Converts a C's `unsigned long long` into an instance of ::rb_cInteger. * * @param[in] num Arbitrary `unsigned long long` value. * @return An instance of ::rb_cInteger. */ VALUE rb_ull2inum(unsigned LONG_LONG num); /** * Converts an instance of ::rb_cNumeric into C's `long long`. * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `long long`. * @return The passed value converted into C's `long long`. */ LONG_LONG rb_num2ll(VALUE num); /** * Converts an instance of ::rb_cNumeric into C's `unsigned long long`. * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `unsigned long long`. * @return The passed value converted into C's `unsigned long long`. */ unsigned LONG_LONG rb_num2ull(VALUE num); RBIMPL_SYMBOL_EXPORT_END() /** * Converts a C's `long long` into an instance of ::rb_cInteger. * * @param[in] n Arbitrary `long long` value. * @return An instance of ::rb_cInteger */ static inline VALUE rb_ll2num_inline(LONG_LONG n) { if (FIXABLE(n)) return LONG2FIX((long)n); return rb_ll2inum(n); } /** * Converts a C's `unsigned long long` into an instance of ::rb_cInteger. * * @param[in] n Arbitrary `unsigned long long` value. * @return An instance of ::rb_cInteger */ static inline VALUE rb_ull2num_inline(unsigned LONG_LONG n) { if (POSFIXABLE(n)) return LONG2FIX((long)n); return rb_ull2inum(n); } /** * Converts an instance of ::rb_cNumeric into C's `long long`. * * @param[in] x Something numeric. * @exception rb_eTypeError `x` is not a numeric. * @exception rb_eRangeError `x` is out of range of `long long`. * @return The passed value converted into C's `long long`. */ static inline LONG_LONG rb_num2ll_inline(VALUE x) { if (RB_FIXNUM_P(x)) return RB_FIX2LONG(x); else return rb_num2ll(x); } /** * Converts an instance of ::rb_cNumeric into C's `unsigned long long`. * * @param[in] x Something numeric. * @exception rb_eTypeError `x` is not a numeric. * @exception rb_eRangeError `x` is out of range of `unsigned long long`. * @return The passed value converted into C's `unsigned long long`. */ static inline unsigned LONG_LONG rb_num2ull_inline(VALUE x) { if (RB_FIXNUM_P(x)) return RB_FIX2LONG(x); else return rb_num2ull(x); } #endif /* RBIMPL_ARITHMETIC_LONG_LONG_H */ PK!.µ‰SSshort.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_SHORT_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_SHORT_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `short` and Ruby's. * * Shyouhei wonders: why there is no SHORT2NUM, given there are both * #USHORT2NUM and #CHR2FIX? */ #include "ruby/internal/value.h" #include "ruby/internal/dllexport.h" #include "ruby/internal/special_consts.h" #define RB_NUM2SHORT rb_num2short_inline /**< @alias{rb_num2short_inline} */ #define RB_NUM2USHORT rb_num2ushort /**< @alias{rb_num2ushort} */ #define NUM2SHORT RB_NUM2SHORT /**< @old{RB_NUM2SHORT} */ #define NUM2USHORT RB_NUM2USHORT /**< @old{RB_NUM2USHORT} */ #define USHORT2NUM RB_INT2FIX /**< @old{RB_INT2FIX} */ #define RB_FIX2SHORT rb_fix2short /**< @alias{rb_fix2ushort} */ #define FIX2SHORT RB_FIX2SHORT /**< @old{RB_FIX2SHORT} */ RBIMPL_SYMBOL_EXPORT_BEGIN() /** * Converts an instance of ::rb_cNumeric into C's `short`. * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `short`. * @return The passed value converted into C's `short`. */ short rb_num2short(VALUE num); /** * Converts an instance of ::rb_cNumeric into C's `unsigned short`. * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `unsigned short`. * @return The passed value converted into C's `unsigned short`. */ unsigned short rb_num2ushort(VALUE num); /** * Identical to rb_num2short(). * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `short`. * @return The passed value converted into C's `short`. * * @internal * * This function seems to be a complete waste of disk space. @shyouhei has no * idea why this is a different thing from rb_num2short(). */ short rb_fix2short(VALUE num); /** * Identical to rb_num2ushort(). * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `unsigned short`. * @return The passed value converted into C's `unsigned short`. * * @internal * * This function seems to be a complete waste of disk space. @shyouhei has no * idea why this is a different thing from rb_num2ushort(). */ unsigned short rb_fix2ushort(VALUE num); RBIMPL_SYMBOL_EXPORT_END() /** * Identical to rb_num2short(). * * @param[in] x Something numeric. * @exception rb_eTypeError `x` is not a numeric. * @exception rb_eRangeError `x` is out of range of `short`. * @return The passed value converted into C's `short`. * * @internal * * This function seems to be a complete waste of time. @shyouhei has no idea * why this is a different thing from rb_num2short(). */ static inline short rb_num2short_inline(VALUE x) { if (RB_FIXNUM_P(x)) return rb_fix2short(x); else return rb_num2short(x); } #endif /* RBIMPL_ARITHMETIC_SHORT_H */ PK!‡Dývö ö double.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_DOUBLE_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_DOUBLE_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `double` and Ruby's. */ #include "ruby/internal/attr/pure.h" #include "ruby/internal/dllexport.h" #include "ruby/internal/value.h" #define NUM2DBL rb_num2dbl /**< @old{rb_num2dbl} */ #define RFLOAT_VALUE rb_float_value /**< @old{rb_float_value} */ #define DBL2NUM rb_float_new /**< @old{rb_float_new} */ RBIMPL_SYMBOL_EXPORT_BEGIN() /** * Converts an instance of ::rb_cNumeric into C's `double`. * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @return The passed value converted into C's `double`. */ double rb_num2dbl(VALUE num); RBIMPL_ATTR_PURE() /** * Extracts its double value from an instance of ::rb_cFloat. * * @param[in] num An instance of ::rb_cFloat. * @pre Must not pass anything other than a Fixnum. * @return The passed value converted into C's `double`. */ double rb_float_value(VALUE num); /** * Converts a C's `double` into an instance of ::rb_cFloat. * * @param[in] d Arbitrary `double` value. * @return An instance of ::rb_cFloat. */ VALUE rb_float_new(double d); /** * Identical to rb_float_new(), except it does not generate Flonums. * * @param[in] d Arbitrary `double` value. * @return An instance of ::rb_cFloat. * * @internal * * @shyouhei has no idea why it is here. */ VALUE rb_float_new_in_heap(double d); RBIMPL_SYMBOL_EXPORT_END() #endif /* RBIMPL_ARITHMETIC_DOUBLE_H */ PK!("ÚŸ^^pid_t.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_PID_T_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_PID_T_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `pid_t` and Ruby's. */ #include "ruby/internal/config.h" #include "ruby/internal/arithmetic/long.h" /** Converts a C's `pid_t` into an instance of ::rb_cInteger. */ #ifndef PIDT2NUM # define PIDT2NUM RB_LONG2NUM #endif /** Converts an instance of ::rb_cNumeric into C's `pid_t`. */ #ifndef NUM2PIDT # define NUM2PIDT RB_NUM2LONG #endif /** A rb_sprintf() format prefix to be used for a `pid_t` parameter. */ #ifndef PRI_PIDT_PREFIX # define PRI_PIDT_PREFIX PRI_LONG_PREFIX #endif #endif /* RBIMPL_ARITHMETIC_PID_T_H */ PK!£ÕI2 2 int.hnu„[µü¤#ifndef RBIMPL_ARITHMETIC_INT_H /*-*-C++-*-vi:se ft=cpp:*/ #define RBIMPL_ARITHMETIC_INT_H /** * @file * @author Ruby developers * @copyright This file is a part of the programming language Ruby. * Permission is hereby granted, to either redistribute and/or * modify this file, provided that the conditions mentioned in the * file COPYING are met. Consult the file for details. * @warning Symbols prefixed with either `RBIMPL` or `rbimpl` are * implementation details. Don't take them as canon. They could * rapidly appear then vanish. The name (path) of this header file * is also an implementation detail. Do not expect it to persist * at the place it is now. Developers are free to move it anywhere * anytime at will. * @note To ruby-core: remember that this header can be possibly * recursively included from extension libraries written in C++. * Do not expect for instance `__VA_ARGS__` is always available. * We assume C99 for ruby itself but we don't assume languages of * extension libraries. They could be written in C++98. * @brief Arithmetic conversion between C's `int` and Ruby's. */ #include "ruby/internal/config.h" #include "ruby/internal/arithmetic/fixnum.h" #include "ruby/internal/arithmetic/intptr_t.h" #include "ruby/internal/arithmetic/long.h" #include "ruby/internal/attr/artificial.h" #include "ruby/internal/attr/const.h" #include "ruby/internal/attr/constexpr.h" #include "ruby/internal/compiler_is.h" #include "ruby/internal/dllexport.h" #include "ruby/internal/special_consts.h" #include "ruby/internal/value.h" #include "ruby/internal/warning_push.h" #include "ruby/assert.h" #define RB_INT2NUM rb_int2num_inline /**< @alias{rb_int2num_inline} */ #define RB_NUM2INT rb_num2int_inline /**< @alias{rb_num2int_inline} */ #define RB_UINT2NUM rb_uint2num_inline /**< @alias{rb_uint2num_inline} */ #define FIX2INT RB_FIX2INT /**< @old{RB_FIX2INT} */ #define FIX2UINT RB_FIX2UINT /**< @old{RB_FIX2UINT} */ #define INT2NUM RB_INT2NUM /**< @old{RB_INT2NUM} */ #define NUM2INT RB_NUM2INT /**< @old{RB_NUM2INT} */ #define NUM2UINT RB_NUM2UINT /**< @old{RB_NUM2UINT} */ #define UINT2NUM RB_UINT2NUM /**< @old{RB_UINT2NUM} */ /** @cond INTERNAL_MACRO */ #define RB_FIX2INT RB_FIX2INT #define RB_NUM2UINT RB_NUM2UINT #define RB_FIX2UINT RB_FIX2UINT /** @endcond */ RBIMPL_SYMBOL_EXPORT_BEGIN() /** * Converts an instance of ::rb_cNumeric into C's `long`. * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `int`. * @return The passed value converted into C's `long`. * * @internal * * Yes, the API is really strange. It returns `long`, but raises when the * value is out of `int`. This seems to be due to the fact that Matz favoured * K&R before, and his machine at that moment was an ILP32 architecture. */ long rb_num2int(VALUE num); /** * Identical to rb_num2int(). * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `int`. * @return The passed value converted into C's `long`. * * @internal * * This function seems to be a complete waste of disk space. @shyouhei has no * idea why this is a different thing from rb_num2short(). */ long rb_fix2int(VALUE num); /** * Converts an instance of ::rb_cNumeric into C's `unsigned long`. * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `unsigned int`. * @return The passed value converted into C's `unsigned long`. * * @internal * * Yes, the API is really strange. It returns `unsigned long`, but raises when * the value is out of `unsigned int`. This seems to be due to the fact that * Matz favoured K&R before, and his machine at that moment was an ILP32 * architecture. */ unsigned long rb_num2uint(VALUE num); /** * Identical to rb_num2uint(). * * @param[in] num Something numeric. * @exception rb_eTypeError `num` is not a numeric. * @exception rb_eRangeError `num` is out of range of `unsigned int`. * @return The passed value converted into C's `unsigned long`. * * @internal * * This function seems to be a complete waste of disk space. @shyouhei has no * idea why this is a different thing from rb_num2short(). */ unsigned long rb_fix2uint(VALUE num); RBIMPL_SYMBOL_EXPORT_END() RBIMPL_ATTR_ARTIFICIAL() /** * Converts a Fixnum into C's `int`. * * @param[in] x Some Fixnum. * @pre Must not pass anything other than a Fixnum. * @return The passed value converted into C's `int`. */ static inline int RB_FIX2INT(VALUE x) { /* "FIX2INT raises a TypeError if passed nil", says rubyspec. Not sure if * that is a desired behaviour but just preserve backwards compatilibily. */ #if 0 RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); #endif long ret; if /* constexpr */ (sizeof(int) < sizeof(long)) { ret = rb_fix2int(x); } else { ret = RB_FIX2LONG(x); } return RBIMPL_CAST((int)ret); } /** * Converts an instance of ::rb_cNumeric into C's `int`. * * @param[in] x Something numeric. * @exception rb_eTypeError `x` is not a numeric. * @exception rb_eRangeError `x` is out of range of `int`. * @return The passed value converted into C's `int`. */ static inline int rb_num2int_inline(VALUE x) { long ret; if /* constexpr */ (sizeof(int) == sizeof(long)) { ret = RB_NUM2LONG(x); } else if (RB_FIXNUM_P(x)) { ret = rb_fix2int(x); } else { ret = rb_num2int(x); } return RBIMPL_CAST((int)ret); } /** * Converts an instance of ::rb_cNumeric into C's `unsigned int`. * * @param[in] x Something numeric. * @exception rb_eTypeError `x` is not a numeric. * @exception rb_eRangeError `x` is out of range of `unsigned int`. * @return The passed value converted into C's `unsigned int`. */ RBIMPL_ATTR_ARTIFICIAL() static inline unsigned int RB_NUM2UINT(VALUE x) { unsigned long ret; if /* constexpr */ (sizeof(int) < sizeof(long)) { ret = rb_num2uint(x); } else { ret = RB_NUM2ULONG(x); } return RBIMPL_CAST((unsigned int)ret); } RBIMPL_ATTR_ARTIFICIAL() /** * Converts a Fixnum into C's `int`. * * @param[in] x Some Fixnum. * @pre Must not pass anything other than a Fixnum. * @return The passed value converted into C's `int`. */ static inline unsigned int RB_FIX2UINT(VALUE x) { #if 0 /* Ditto for RB_FIX2INT. */ RBIMPL_ASSERT_OR_ASSUME(RB_FIXNUM_P(x)); #endif unsigned long ret; if /* constexpr */ (sizeof(int) < sizeof(long)) { ret = rb_fix2uint(x); } else { ret = RB_FIX2ULONG(x); } return RBIMPL_CAST((unsigned int)ret); } RBIMPL_WARNING_PUSH() #if RBIMPL_COMPILER_IS(GCC) RBIMPL_WARNING_IGNORED(-Wtype-limits) /* We can ignore them here. */ #elif RBIMPL_HAS_WARNING("-Wtautological-constant-out-of-range-compare") RBIMPL_WARNING_IGNORED(-Wtautological-constant-out-of-range-compare) #endif /** * Converts a C's `int` into an instance of ::rb_cInteger. * * @param[in] v Arbitrary `int` value. * @return An instance of ::rb_cInteger. */ static inline VALUE rb_int2num_inline(int v) { if (RB_FIXABLE(v)) return RB_INT2FIX(v); else return rb_int2big(v); } /** * Converts a C's `unsigned int` into an instance of ::rb_cInteger. * * @param[in] v Arbitrary `unsigned int` value. * @return An instance of ::rb_cInteger. */ static inline VALUE rb_uint2num_inline(unsigned int v) { if (RB_POSFIXABLE(v)) return RB_LONG2FIX(v); else return rb_uint2big(v); } RBIMPL_WARNING_POP() #endif /* RBIMPL_ARITHMETIC_INT_H */ PK!—B 0M0M fixnums.gonu„[µü¤PK!R¾`è1;1; jMflonums.gonu„[µü¤PK!–4ιÿÿ Õˆbitwise.gonu„[µü¤PK!NPï4T T šsize_t.hnu„[µü¤PK!ÊÄ Ä š¥off_t.hnu„[µü¤PK!÷¥bq³ ³ •¯st_data_t.hnu„[µü¤PK!¢ ø»,»,ƒ»long.hnu„[µü¤PK!¸{rfftèmode_t.hnu„[µü¤PK!ÒƒÓW+ + ðchar.hnu„[µü¤PK!)°ðî  sýintptr_t.hnu„[µü¤PK!=nVt{ { ¾fixnum.hnu„[µü¤PK!çÈ(—^^quid_t.hnu„[µü¤PK!n-o ^^gid_t.hnu„[µü¤PK!æmÂ33 ›#long_long.hnu„[µü¤PK!.µ‰SS 7short.hnu„[µü¤PK!‡Dývö ö “Hdouble.hnu„[µü¤PK!("ÚŸ^^ÁSpid_t.hnu„[µü¤PK!£ÕI2 2 V[int.hnu„[µü¤PK½{