From: "Nobuyoshi.Nakada" Date: 2000-11-01T18:00:43+09:00 Subject: [ruby-dev:11357] [PATCH] an analogue of `long long' なかだです。 gcc 以外でも long long 相当が使えるようにしてみました。VC では __int64 らしいです。そのまんまな名前ですが。 diff -pruPX ./.excludes current/configure.in devel/configure.in --- current/configure.in Tue Oct 31 17:37:38 2000 +++ devel/configure.in Wed Nov 1 16:49:03 2000 @@ -116,6 +116,16 @@ AC_CHECK_SIZEOF(long long, 0) AC_CHECK_SIZEOF(void*, 4) AC_CHECK_SIZEOF(float, 4) AC_CHECK_SIZEOF(double, 8) +if test $ac_cv_sizeof_long_long -gt 0; then + AC_DEFINE(long_long, long long) + AC_DEFINE(SIZEOF_LONG_2, SIZEOF_LONG_LONG) +else + AC_CHECK_SIZEOF(__int64, 0) + if test $ac_cv_sizeof___int64 -gt 0; then + AC_DEFINE(long_long, __int64) + AC_DEFINE(SIZEOF_LONG_2, SIZEOF___INT64) + fi +fi AC_CACHE_CHECK(for prototypes, rb_cv_have_prototypes, [AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);], diff -pruPX ./.excludes current/bignum.c devel/bignum.c --- current/bignum.c Tue Oct 31 17:37:38 2000 +++ devel/bignum.c Wed Nov 1 16:33:40 2000 @@ -20,14 +20,14 @@ VALUE rb_cBignum; #define USHORT _USHORT #endif -#if SIZEOF_LONG*2 <= SIZEOF_LONG_LONG +#if SIZEOF_LONG*2 <= SIZEOF_LONG_2 typedef unsigned long BDIGIT; -typedef unsigned long long BDIGIT2; -typedef long long BDIGIT2_SIGNED; -#elif SIZEOF_INT*2 <= SIZEOF_LONG_LONG +typedef unsigned long_long BDIGIT2; +typedef long_long BDIGIT2_SIGNED; +#elif SIZEOF_INT*2 <= SIZEOF_LONG_2 typedef unsigned int BDIGIT; -typedef unsigned long long BDIGIT2; -typedef long long BDIGIT2_SIGNED; +typedef unsigned long_long BDIGIT2; +typedef long_long BDIGIT2_SIGNED; #else typedef unsigned short BDIGIT; typedef unsigned long BDIGIT2; diff -pruPX ./.excludes current/marshal.c devel/marshal.c --- current/marshal.c Tue Oct 31 17:37:39 2000 +++ devel/marshal.c Wed Nov 1 17:01:17 2000 @@ -18,10 +18,10 @@ double strtod(); #endif -#if SIZEOF_LONG*2 <= SIZEOF_LONG_LONG +#if SIZEOF_LONG*2 <= SIZEOF_LONG_2 typedef unsigned long BDIGIT; #define SIZEOF_BDIGITS SIZEOF_LONG -#elif SIZEOF_INT*2 <= SIZEOF_LONG_LONG +#elif SIZEOF_INT*2 <= SIZEOF_LONG_2 typedef unsigned int BDIGIT; #define SIZEOF_BDIGITS SIZEOF_INT #else -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦