mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	Removed win32api
This commit is contained in:
		
							parent
							
								
									6ddde16234
								
							
						
					
					
						commit
						ff67aac193
					
				
				
				Notes:
				
					git
				
				2020-11-11 09:28:04 +09:00 
				
			
			
			
		
		
					 3 changed files with 0 additions and 75 deletions
				
			
		| 
						 | 
				
			
			@ -1,47 +0,0 @@
 | 
			
		|||
# -*- ruby -*-
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
# for backward compatibility
 | 
			
		||||
warn "Win32API is deprecated after Ruby 1.9.1; use fiddle directly instead", uplevel: 2
 | 
			
		||||
 | 
			
		||||
require 'fiddle/import'
 | 
			
		||||
 | 
			
		||||
class Win32API
 | 
			
		||||
  DLL = {}
 | 
			
		||||
  TYPEMAP = {"0" => Fiddle::TYPE_VOID, "S" => Fiddle::TYPE_VOIDP, "I" => Fiddle::TYPE_LONG}
 | 
			
		||||
  POINTER_TYPE = Fiddle::SIZEOF_VOIDP == Fiddle::SIZEOF_LONG_LONG ? 'q*' : 'l!*'
 | 
			
		||||
 | 
			
		||||
  WIN32_TYPES = "VPpNnLlIi"
 | 
			
		||||
  DL_TYPES = "0SSI"
 | 
			
		||||
 | 
			
		||||
  def initialize(dllname, func, import, export = "0", calltype = :stdcall)
 | 
			
		||||
    @proto = [import].join.tr(WIN32_TYPES, DL_TYPES).sub(/^(.)0*$/, '\1')
 | 
			
		||||
    import = @proto.chars.map {|win_type| TYPEMAP[win_type.tr(WIN32_TYPES, DL_TYPES)]}
 | 
			
		||||
    export = TYPEMAP[export.tr(WIN32_TYPES, DL_TYPES)]
 | 
			
		||||
    calltype = Fiddle::Importer.const_get(:CALL_TYPE_TO_ABI)[calltype]
 | 
			
		||||
 | 
			
		||||
    handle = DLL[dllname] ||=
 | 
			
		||||
             begin
 | 
			
		||||
               Fiddle.dlopen(dllname)
 | 
			
		||||
             rescue Fiddle::DLError
 | 
			
		||||
               raise unless File.extname(dllname).empty?
 | 
			
		||||
               Fiddle.dlopen(dllname + ".dll")
 | 
			
		||||
             end
 | 
			
		||||
 | 
			
		||||
    @func = Fiddle::Function.new(handle[func], import, export, calltype)
 | 
			
		||||
  rescue Fiddle::DLError => e
 | 
			
		||||
    raise LoadError, e.message, e.backtrace
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def call(*args)
 | 
			
		||||
    import = @proto.split("")
 | 
			
		||||
    args.each_with_index do |x, i|
 | 
			
		||||
      args[i], = [x == 0 ? nil : x].pack("p").unpack(POINTER_TYPE) if import[i] == "S"
 | 
			
		||||
      args[i], = [x].pack("I").unpack("i") if import[i] == "I"
 | 
			
		||||
    end
 | 
			
		||||
    ret, = @func.call(*args)
 | 
			
		||||
    return ret || 0
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  alias Call call
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +76,6 @@ class TestExtLibs < Test::Unit::TestCase
 | 
			
		|||
  check_existence "strscan"
 | 
			
		||||
  check_existence "syslog"
 | 
			
		||||
  check_existence "thread"
 | 
			
		||||
  check_existence "Win32API"
 | 
			
		||||
  check_existence "win32ole"
 | 
			
		||||
  check_existence "zlib", "this may be false positive, but should assert because rubygems requires this"
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,27 +0,0 @@
 | 
			
		|||
# frozen_string_literal: false
 | 
			
		||||
require "test/unit"
 | 
			
		||||
begin
 | 
			
		||||
  $VERBOSE, verbose = nil, $VERBOSE
 | 
			
		||||
  require "Win32API"
 | 
			
		||||
rescue LoadError
 | 
			
		||||
ensure
 | 
			
		||||
  $VERBOSE = verbose
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
class TestWin32API < Test::Unit::TestCase
 | 
			
		||||
  def test_params_string
 | 
			
		||||
    m2w = Win32API.new("kernel32", "MultiByteToWideChar", "ilpipi", "i")
 | 
			
		||||
    str = "utf-8 string".encode("utf-8")
 | 
			
		||||
    buf = "\0" * (str.size * 2)
 | 
			
		||||
    assert_equal str.size, m2w.call(65001, 0, str, str.bytesize, buf, str.size)
 | 
			
		||||
    assert_equal str.encode("utf-16le"), buf.force_encoding("utf-16le")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_params_array
 | 
			
		||||
    m2w = Win32API.new("kernel32", "MultiByteToWideChar", ["i", "l", "p", "i", "p", "i"], "i")
 | 
			
		||||
    str = "utf-8 string".encode("utf-8")
 | 
			
		||||
    buf = "\0" * (str.size * 2)
 | 
			
		||||
    assert_equal str.size, m2w.call(65001, 0, str, str.bytesize, buf, str.size)
 | 
			
		||||
    assert_equal str.encode("utf-16le"), buf.force_encoding("utf-16le")
 | 
			
		||||
  end
 | 
			
		||||
end if defined?(Win32API)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue