mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Revert r29527. [ruby-dev:42419]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
74cacd0df4
commit
799f4754c9
3 changed files with 12 additions and 32 deletions
|
@ -3,13 +3,6 @@ Mon Oct 18 13:18:01 2010 Akinori MUSHA <knu@iDaemons.org>
|
|||
* ext/digest/digest.c (rb_digest_class_init): Define
|
||||
Digest::Class.new(). [Feature #3954]
|
||||
|
||||
Mon Oct 18 12:00:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* pack.c (pack_pack): Add native size option ! to q and Q.
|
||||
[ruby-dev:42375]
|
||||
|
||||
* pack.c (pack_unpack): ditto.
|
||||
|
||||
Mon Oct 18 12:58:40 2010 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* pack.c (pack_pack): refine the document. [ruby-dev:42397]
|
||||
|
|
29
pack.c
29
pack.c
|
@ -48,15 +48,8 @@
|
|||
|
||||
#ifdef NATINT_PACK
|
||||
# define NATINT_LEN(type,len) (natint?(int)sizeof(type):(int)(len))
|
||||
# ifdef LONG_LONG_
|
||||
# define NATLL_LEN() NATINT_LEN(LONG_LONG, 8);
|
||||
# else
|
||||
# define NATLL_LEN() natint ? \
|
||||
rb_raise(rb_eNotImpError,"this machine doesn't have long long"),0 : 8
|
||||
# endif
|
||||
#else
|
||||
# define NATINT_LEN(type,len) ((int)sizeof(type))
|
||||
# define NATLL_LEN() 8
|
||||
#endif
|
||||
|
||||
#if SIZEOF_LONG == 8
|
||||
|
@ -335,26 +328,24 @@ static unsigned long utf8_to_uv(const char*,long*);
|
|||
* S_, S! | Integer | unsigned short, native endian
|
||||
* I, I_, I! | Integer | unsigned int, native endian
|
||||
* L_, L! | Integer | unsigned long, native endian
|
||||
* Q_, Q! | Integer | unsigned long long, native endian
|
||||
* | |
|
||||
* s_, s! | Integer | signed short, native endian
|
||||
* i, i_, i! | Integer | signed int, native endian
|
||||
* l_, l! | Integer | signed long, native endian
|
||||
* q_, q! | Integer | signed long long, native endian
|
||||
* | |
|
||||
* S> L> Q> | Integer | same as the directives without ">" except
|
||||
* s> l> q> | | big endian
|
||||
* S!> I!> | | (available since Ruby 1.9.3)
|
||||
* L!> Q!> | | "S>" is same as "n"
|
||||
* L!> | | "S>" is same as "n"
|
||||
* s!> i!> | | "L>" is same as "N"
|
||||
* l!> q!> | |
|
||||
* l!> | |
|
||||
* | |
|
||||
* S< L< Q< | Integer | same as the directives without "<" except
|
||||
* s< l< q< | | little endian
|
||||
* S!< I!< | | (available since Ruby 1.9.3)
|
||||
* L!< Q!< | | "S<" is same as "v"
|
||||
* L!< | | "S<" is same as "v"
|
||||
* s!< i!< | | "L<" is same as "V"
|
||||
* l!< q!< | |
|
||||
* l!< | |
|
||||
* | |
|
||||
* n | Integer | 16-bit unsigned, network (big-endian) byte order
|
||||
* N | Integer | 32-bit unsigned, network (big-endian) byte order
|
||||
|
@ -446,7 +437,7 @@ pack_pack(VALUE ary, VALUE fmt)
|
|||
}
|
||||
|
||||
{
|
||||
static const char natstr[] = "sSiIlLqQ";
|
||||
static const char natstr[] = "sSiIlL";
|
||||
static const char endstr[] = "sSiIlLqQ";
|
||||
|
||||
modifiers:
|
||||
|
@ -720,13 +711,13 @@ pack_pack(VALUE ary, VALUE fmt)
|
|||
|
||||
case 'q': /* signed quad (64bit) int */
|
||||
signed_p = 1;
|
||||
integer_size = NATLL_LEN();
|
||||
integer_size = 8;
|
||||
bigendian_p = BIGENDIAN_P();
|
||||
goto pack_integer;
|
||||
|
||||
case 'Q': /* unsigned quad (64bit) int */
|
||||
signed_p = 0;
|
||||
integer_size = NATLL_LEN();
|
||||
integer_size = 8;
|
||||
bigendian_p = BIGENDIAN_P();
|
||||
goto pack_integer;
|
||||
|
||||
|
@ -1401,7 +1392,7 @@ pack_unpack(VALUE str, VALUE fmt)
|
|||
|
||||
star = 0;
|
||||
{
|
||||
static const char natstr[] = "sSiIlLqQ";
|
||||
static const char natstr[] = "sSiIlL";
|
||||
static const char endstr[] = "sSiIlLqQ";
|
||||
|
||||
modifiers:
|
||||
|
@ -1630,13 +1621,13 @@ pack_unpack(VALUE str, VALUE fmt)
|
|||
|
||||
case 'q':
|
||||
signed_p = 1;
|
||||
integer_size = NATLL_LEN();
|
||||
integer_size = 8;
|
||||
bigendian_p = BIGENDIAN_P();
|
||||
goto unpack_integer;
|
||||
|
||||
case 'Q':
|
||||
signed_p = 0;
|
||||
integer_size = NATLL_LEN();
|
||||
integer_size = 8;
|
||||
bigendian_p = BIGENDIAN_P();
|
||||
goto unpack_integer;
|
||||
|
||||
|
|
|
@ -85,9 +85,7 @@ class TestPack < Test::Unit::TestCase
|
|||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("I!"+mod))
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("l!"+mod))
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("L!"+mod))
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("q!"+mod))
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("Q!"+mod))
|
||||
%w[s S l L q Q s! S! i I i! I! l! L! q! Q!].each {|fmt|
|
||||
%w[s S l L q Q s! S! i I i! I! l! L!].each {|fmt|
|
||||
fmt += mod
|
||||
nuls = [0].pack(fmt)
|
||||
v = 0
|
||||
|
@ -120,9 +118,7 @@ class TestPack < Test::Unit::TestCase
|
|||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("I!"+mod))
|
||||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("l!"+mod))
|
||||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("L!"+mod))
|
||||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("q!"+mod))
|
||||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("Q!"+mod))
|
||||
%w[s S l L q Q s! S! i I i! I! l! L! q! Q!].each {|fmt|
|
||||
%w[s S l L q Q s! S! i I i! I! l! L!].each {|fmt|
|
||||
fmt += mod
|
||||
nuls = [0].pack(fmt)
|
||||
v = 0
|
||||
|
|
Loading…
Reference in a new issue