Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 7th, 2012  |  syntax: None  |  size: 0.84 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. def ole_methods
  2.     members = []
  3.     all_methods(@typeinfo) do |ti, oti, desc, docs, name|
  4.       members << WIN32OLE_METHOD.new(nil, name, ti, oti, desc.memid)
  5.       nil
  6.     end
  7.     members
  8.   end
  9.  
  10.     def all_methods(typeinfo, *args, &block) # MRI: olemethod_from_typeinfo
  11.       # Find method in this type.
  12.       ret = find_all_methods_in(nil, typeinfo, *args, &block)
  13.       return ret if ret
  14.  
  15.       # Now check all other type impls
  16.       typeinfo.impl_types_count.times do |i|
  17.         begin
  18.           href = typeinfo.get_ref_type_of_impl_type(i)
  19.           ref_typeinfo = typeinfo.get_ref_type_info(href)
  20.           ret = find_all_methods_in(typeinfo, ref_typeinfo, *args, &block)
  21.           return ret if ret
  22.         rescue ComFailException => e
  23.           puts "Error getting impl types #{e}"
  24.         end
  25.       end
  26.       nil
  27.     end