[#29190] AIXでのコンパイル (オプションの統一など) — "Yutaka Kanemoto" <kinpoco@...>

金本ともうします。

21 messages 2006/08/06

[#29200] Re: [ruby-cvs:17336] ruby/lib/date: * lib/date/format.rb: specify maximum number of digits to parse — Tadayoshi Funaba <tadf@...>

ふなばです。

9 messages 2006/08/07

[#29252] 1.8.5への最終コミット — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

14 messages 2006/08/10

[#29284] CGI#out で MIMEエンコード文字列がデコードされる — とみたまさひろ <tommy@...>

とみたです。

26 messages 2006/08/17
[#29285] Re: CGI#out で MIMEエンコード文字列がデコードされる — Takahiro Kambe <taca@...> 2006/08/17

In message <20060817182312.adce9ff7.tommy@tmtm.org>

[#29286] Re: CGI#out で MIMEエンコード文字列がデコードされる — とみたまさひろ <tommy@...> 2006/08/17

とみたです。

[#29287] Re: CGI#out で MIMEエンコード文字列がデコードされる — Fujioka <fuj@...> 2006/08/17

藤岡です。

[#29288] Re: CGI#out で MIMEエンコード文字列がデコードされる — Fujioka <fuj@...> 2006/08/17

藤岡です。

[#29290] Re: CGI#out で MIMEエンコード文字列がデコードされる — Yukihiro Matsumoto <matz@...> 2006/08/17

まつもと ゆきひろです

[#29292] Re: CGI#out で MIMEエンコード文字列がデコードされる — Fujioka <fuj@...> 2006/08/17

藤岡です。

[#29291] ruby 1.8.5 preview4 — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

21 messages 2006/08/17
[#29314] Re: ruby 1.8.5 preview4 — URABE Shyouhei <root@...> 2006/08/18

卜部です。

[#29319] Re: ruby 1.8.5 preview4 — Yukihiro Matsumoto <matz@...> 2006/08/19

[#29321] Re: ruby 1.8.5 preview4 — URABE Shyouhei <root@...> 2006/08/19

卜部です。

[ruby-dev:29273] 1.9 proposal: remove Win32API.so

From: "U.Nakamura" <usa@...>
Date: 2006-08-16 09:32:03 UTC
List: ruby-dev #29273
こんにちは、なかむら(う)です。

1.9からext/dl/lib/dl/win32.rbがなくなって久しいわけですが、そ
のまま復活させるのもなんなので、以下のようにしたいと考えてい
ます。
反論などありますでしょうか?

* ext/dl/lib/Win32API.rb (このメールに添付)を追加する。
  Win32API.soからの移行用なので、-w時には警告を出す。
* ext/Win32API は削除。
* ext/Win32API/lib/win32 の中身は ext/dl/lib/win32 に移動。
  require "Win32API" している部分は、1.9.1リリースまでには直
  接DLを使うよう書き換える。
* 1.8で require "dl/win32" と書いている人には移行パスは用意し
  ない。申し訳ないけど。
  1.9にずっとなかったのに誰にも文句言われなかったし。


それでは。
-- 
U.Nakamura <usa@garbagecollect.jp>

Attachments (1)

Win32API.rb (1007 Bytes, text/x-ruby)
# -*- ruby -*-

warn "Win32API is obsolete. Use DL directly." if $VERBOSE

require 'dl'
require 'dl/func'

class Win32API
  DLL = {}

  def self.argconv(str)
    str.split(//).map do |i|
      case i
      when "P", "p", "S", "s"
        DL::TYPE_VOIDP
      when "V", "v", "0"
        DL::TYPE_VOID
      when "N", "n", "L", "l"
        DL::TYPE_LONG
      when "I", "i"
        DL::TYPE_INT
      else
        raise("Unknown Type: [#{i}]")
      end
    end
  end

  def initialize(dllname, func, import, export = "0")
    @import = Win32API.argconv(import)
    export = Win32API.argconv(export)[0]
    lib = DLL[dllname] ||= DL.dlopen(dllname)
    @func = DL::Function.new(DL::CFunc.new(lib[func], export, func), @import)
  end

  def call(*args)
    args.each_with_index do |x, i|
      args[i] = nil if x == 0 and @import[i] == DL::TYPE_VOIDP
      args[i], = [x].pack("I").unpack("i") if @import[i] == DL::TYPE_INT
    end
    ret, = @func.call(*args)
    return ret || 0
  end

  alias Call call
end

In This Thread

Prev Next