зеркало из https://github.com/github/ruby.git
* ext/dl/lib/dl/pack.rb (DL::PackInfo): reduced redundant
initialization. * ext/dl/lib/dl/stack.rb (DL::Stack): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
0cceff94ca
Коммит
daa2217d48
|
@ -1,4 +1,9 @@
|
|||
Tue Mar 3 15:05:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
Tue Mar 3 15:07:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* ext/dl/lib/dl/pack.rb (DL::PackInfo): reduced redundan
|
||||
initialization.
|
||||
|
||||
* ext/dl/lib/dl/stack.rb (DL::Stack): ditto.
|
||||
|
||||
* ext/dl/lib/dl/value.rb (DL::ValueUtil#wrap_arg): NULL for nil.
|
||||
|
||||
|
|
|
@ -2,55 +2,6 @@ require 'dl'
|
|||
|
||||
module DL
|
||||
module PackInfo
|
||||
if( defined?(TYPE_LONG_LONG) )
|
||||
ALIGN_MAP = {
|
||||
TYPE_VOIDP => ALIGN_VOIDP,
|
||||
TYPE_CHAR => ALIGN_CHAR,
|
||||
TYPE_SHORT => ALIGN_SHORT,
|
||||
TYPE_INT => ALIGN_INT,
|
||||
TYPE_LONG => ALIGN_LONG,
|
||||
TYPE_LONG_LONG => ALIGN_LONG_LONG,
|
||||
TYPE_FLOAT => ALIGN_FLOAT,
|
||||
TYPE_DOUBLE => ALIGN_DOUBLE,
|
||||
-TYPE_CHAR => ALIGN_CHAR,
|
||||
-TYPE_SHORT => ALIGN_SHORT,
|
||||
-TYPE_INT => ALIGN_INT,
|
||||
-TYPE_LONG => ALIGN_LONG,
|
||||
-TYPE_LONG_LONG => ALIGN_LONG_LONG,
|
||||
}
|
||||
|
||||
PACK_MAP = {
|
||||
TYPE_VOIDP => ((SIZEOF_VOIDP == SIZEOF_LONG_LONG) ? "q" : "l!"),
|
||||
TYPE_CHAR => "c",
|
||||
TYPE_SHORT => "s!",
|
||||
TYPE_INT => "i!",
|
||||
TYPE_LONG => "l!",
|
||||
TYPE_LONG_LONG => "q",
|
||||
TYPE_FLOAT => "f",
|
||||
TYPE_DOUBLE => "d",
|
||||
-TYPE_CHAR => "c",
|
||||
-TYPE_SHORT => "s!",
|
||||
-TYPE_INT => "i!",
|
||||
-TYPE_LONG => "l!",
|
||||
-TYPE_LONG_LONG => "q",
|
||||
}
|
||||
|
||||
SIZE_MAP = {
|
||||
TYPE_VOIDP => SIZEOF_VOIDP,
|
||||
TYPE_CHAR => SIZEOF_CHAR,
|
||||
TYPE_SHORT => SIZEOF_SHORT,
|
||||
TYPE_INT => SIZEOF_INT,
|
||||
TYPE_LONG => SIZEOF_LONG,
|
||||
TYPE_LONG_LONG => SIZEOF_LONG_LONG,
|
||||
TYPE_FLOAT => SIZEOF_FLOAT,
|
||||
TYPE_DOUBLE => SIZEOF_DOUBLE,
|
||||
-TYPE_CHAR => SIZEOF_CHAR,
|
||||
-TYPE_SHORT => SIZEOF_SHORT,
|
||||
-TYPE_INT => SIZEOF_INT,
|
||||
-TYPE_LONG => SIZEOF_LONG,
|
||||
-TYPE_LONG_LONG => SIZEOF_LONG_LONG,
|
||||
}
|
||||
else
|
||||
ALIGN_MAP = {
|
||||
TYPE_VOIDP => ALIGN_VOIDP,
|
||||
TYPE_CHAR => ALIGN_CHAR,
|
||||
|
@ -92,6 +43,10 @@ module DL
|
|||
-TYPE_INT => SIZEOF_INT,
|
||||
-TYPE_LONG => SIZEOF_LONG,
|
||||
}
|
||||
if defined?(TYPE_LONG_LONG)
|
||||
ALIGN_MAP[TYPE_LONG_LONG] = ALIGN_MAP[-TYPE_LONG_LONG] = ALIGN_LONG_LONG
|
||||
PACK_MAP[TYPE_LONG_LONG] = PACK_MAP[-TYPE_LONG_LONG] = "q"
|
||||
SIZE_MAP[TYPE_LONG_LONG] = SIZE_MAP[-TYPE_LONG_LONG] = SIZEOF_LONG_LONG
|
||||
end
|
||||
|
||||
def align(addr, align)
|
||||
|
@ -108,8 +63,8 @@ module DL
|
|||
class Packer
|
||||
include PackInfo
|
||||
|
||||
def Packer.[](*types)
|
||||
Packer.new(types)
|
||||
def self.[](*types)
|
||||
new(types)
|
||||
end
|
||||
|
||||
def initialize(types)
|
||||
|
|
|
@ -2,8 +2,8 @@ require 'dl'
|
|||
|
||||
module DL
|
||||
class Stack
|
||||
def Stack.[](*types)
|
||||
Stack.new(types)
|
||||
def self.[](*types)
|
||||
new(types)
|
||||
end
|
||||
|
||||
def initialize(types)
|
||||
|
@ -51,40 +51,6 @@ module DL
|
|||
end
|
||||
end
|
||||
|
||||
if( defined?(TYPE_LONG_LONG) )
|
||||
ALIGN_MAP = {
|
||||
TYPE_VOIDP => ALIGN_VOIDP,
|
||||
TYPE_CHAR => ALIGN_VOIDP,
|
||||
TYPE_SHORT => ALIGN_VOIDP,
|
||||
TYPE_INT => ALIGN_VOIDP,
|
||||
TYPE_LONG => ALIGN_VOIDP,
|
||||
TYPE_LONG_LONG => ALIGN_LONG_LONG,
|
||||
TYPE_FLOAT => ALIGN_FLOAT,
|
||||
TYPE_DOUBLE => ALIGN_DOUBLE,
|
||||
}
|
||||
|
||||
PACK_MAP = {
|
||||
TYPE_VOIDP => ((SIZEOF_VOIDP == SIZEOF_LONG_LONG)? "q" : "l!"),
|
||||
TYPE_CHAR => "c",
|
||||
TYPE_SHORT => "s!",
|
||||
TYPE_INT => "i!",
|
||||
TYPE_LONG => "l!",
|
||||
TYPE_LONG_LONG => "q",
|
||||
TYPE_FLOAT => "f",
|
||||
TYPE_DOUBLE => "d",
|
||||
}
|
||||
|
||||
SIZE_MAP = {
|
||||
TYPE_VOIDP => SIZEOF_VOIDP,
|
||||
TYPE_CHAR => SIZEOF_CHAR,
|
||||
TYPE_SHORT => SIZEOF_SHORT,
|
||||
TYPE_INT => SIZEOF_INT,
|
||||
TYPE_LONG => SIZEOF_LONG,
|
||||
TYPE_LONG_LONG => SIZEOF_LONG_LONG,
|
||||
TYPE_FLOAT => SIZEOF_FLOAT,
|
||||
TYPE_DOUBLE => SIZEOF_DOUBLE,
|
||||
}
|
||||
else
|
||||
ALIGN_MAP = {
|
||||
TYPE_VOIDP => ALIGN_VOIDP,
|
||||
TYPE_CHAR => ALIGN_VOIDP,
|
||||
|
@ -114,7 +80,11 @@ else
|
|||
TYPE_FLOAT => SIZEOF_FLOAT,
|
||||
TYPE_DOUBLE => SIZEOF_DOUBLE,
|
||||
}
|
||||
end
|
||||
if defined?(TYPE_LONG_LONG)
|
||||
ALIGN_MAP[TYPE_LONG_LONG] = ALIGN_LONG_LONG
|
||||
PACK_MAP[TYPE_LONG_LONG] = "q"
|
||||
SIZE_MAP[TYPE_LONG_LONG] = SIZEOF_LONG_LONG
|
||||
end
|
||||
|
||||
def parse_types(types)
|
||||
@types = types
|
||||
|
|
Загрузка…
Ссылка в новой задаче