[前][次][番号順一覧][スレッド一覧]

ruby-changes:18049

From: nobu <ko1@a...>
Date: Fri, 3 Dec 2010 20:24:00 +0900 (JST)
Subject: [ruby-changes:18049] Ruby:r30070 (trunk): * lib/mkmf.rb (convertible_int): define printf format prefix too.

nobu	2010-12-03 20:23:48 +0900 (Fri, 03 Dec 2010)

  New Revision: 30070

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30070

  Log:
    * lib/mkmf.rb (convertible_int): define printf format prefix too.

  Modified files:
    trunk/ChangeLog
    trunk/lib/mkmf.rb
    trunk/test/mkmf/test_convertible.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30069)
+++ ChangeLog	(revision 30070)
@@ -1,5 +1,7 @@
-Fri Dec  3 19:53:50 2010  Nobuyoshi Nakada  <nobu@r...>
+Fri Dec  3 20:23:31 2010  Nobuyoshi Nakada  <nobu@r...>
 
+	* lib/mkmf.rb (convertible_int): define printf format prefix too.
+
 	* lib/mkmf.rb (convertible_int): detect convertible integer type.
 	  port RUBY_REPLACE_INT from configure.in.
 
Index: lib/mkmf.rb
===================================================================
--- lib/mkmf.rb	(revision 30069)
+++ lib/mkmf.rb	(revision 30070)
@@ -1162,18 +1162,18 @@
 # compiler using the +type+ name, in uppercase.
 #
 # * 'TYPEOF_', followed by the +type+ name, followed by '=X' where 'X'
-#   is the found _convertible_ type name.
-# * 'TYP2NUM' and 'NUM2TYP, where 'TYP' is the +type+ name in uppercase sans '_t'
-#   suffix, followed by '=X' where 'X' is the macro name to convert
-#   +type+ to +Integer+ object, and vice versa.
+#   is the found _convertible_ type name.  * 'TYP2NUM' and 'NUM2TYP,
+#   where 'TYP' is the +type+ name in uppercase with replacing '_t'
+#   suffix with 'T', followed by '=X' where 'X' is the macro name to
+#   convert +type+ to +Integer+ object, and vice versa.
 #
 # For example, if foobar_t is defined as unsigned long, then
 # convertible_int("foobar_t") would return "unsigned long", and define
 # macros:
 #
 #   #define TYPEOF_FOOBAR_T unsigned long
-#   #define FOOBAR2NUM ULONG2NUM
-#   #define NUM2FOOBAR NUM2ULONG
+#   #define FOOBART2NUM ULONG2NUM
+#   #define NUM2FOOBART NUM2ULONG
 def convertible_int(type, headers = nil, opts = nil, &b)
   type, macname = *type
   checking_for("convertible type of #{type}", STRING_OR_FAILED_FORMAT) do
@@ -1188,10 +1188,12 @@
 	try_compile([prelude, "extern #{u}#{t} foo();"].join("\n"), opts, &b)
       }
       if compat
-	macname ||= type.chomp("_t").tr_cpp
-	conv = (u ? "U" : "") + (compat == "long long" ? "LL" : compat.upcase)
+	macname ||= type.sub(/_(?=t\z)/, '').tr_cpp
+	conv = (compat == "long long" ? "LL" : compat.upcase)
 	compat = "#{u}#{compat}"
 	$defs.push(format("-DTYPEOF_%s=%s", type.tr_cpp, compat.quote))
+	$defs.push(format("-DPRI_%s_PREFIX=PRI_%s_PREFIX", macname, conv))
+	conv = (u ? "U" : "") + conv
 	$defs.push(format("-D%s2NUM=%s2NUM", macname, conv))
 	$defs.push(format("-DNUM2%s=NUM2%s", macname, conv))
 	compat
Index: test/mkmf/test_convertible.rb
===================================================================
--- test/mkmf/test_convertible.rb	(revision 30069)
+++ test/mkmf/test_convertible.rb	(revision 30070)
@@ -17,8 +17,14 @@
           open("confdefs.h", "w") {|f|
             f.puts "typedef #{signed}#{type} test1_t;"
           }
+          $defs.clear
           assert_equal((prefix || signed)+type,
                        mkmf {convertible_int("test1_t", "confdefs.h")})
+          (u = signed[/^u/]) and u.upcase!
+          assert_includes($defs, "-DTYPEOF_TEST1_T="+"#{prefix||signed}#{type}".quote)
+          assert_includes($defs, "-DPRI_TEST1T_PREFIX=PRI_#{type.upcase}_PREFIX")
+          assert_includes($defs, "-DTEST1T2NUM=#{u}#{type.upcase}2NUM")
+          assert_includes($defs, "-DNUM2TEST1T=NUM2#{u}#{type.upcase}")
         end
       end
     end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]