diff options
author | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-12 05:00:41 +0000 |
---|---|---|
committer | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-12 05:00:41 +0000 |
commit | 1a4b93cf920d0850061ce4b53351b4cdc7d464c7 (patch) | |
tree | 1b5a11e3fbb296cd3cea8cbf1e8660b43f44de0e | |
parent | 4924197d1ce6c71d6e125a689d69a727fb8ee55d (diff) |
* ext/win32ole/win32ole.c (ole_variant2val): support VT_I8, VT_UI8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | ext/win32ole/win32ole.c | 31 |
2 files changed, 33 insertions, 2 deletions
@@ -1,3 +1,7 @@ +Mon Feb 12 13:57:30 2007 Masaki Suketa <[email protected]> + + * ext/win32ole/win32ole.c (ole_variant2val): support VT_I8, VT_UI8. + Mon Feb 12 11:48:52 2007 Kouhei Sutou <[email protected]> * lib/rss/dublincore.rb, lib/rss/maker/dublincore.rb: dc_rightses diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index 27dfbba6b7..3743b369c7 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -80,7 +80,7 @@ #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "0.9.5" +#define WIN32OLE_VERSION "0.9.6" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -1611,7 +1611,32 @@ ole_variant2val(VARIANT *pvar) else obj = INT2NUM((long)V_I4(pvar)); break; - + case VT_I8: + /* + if(V_ISBYREF(pvar)) + obj = INT2NUM(*V_I8REF(pvar)); + else + obj = INT2NUM(V_I8(pvar)); + */ +#ifdef HAVE_LONG_LONG + obj = LL2NUM(V_I8(pvar)); +#else + obj = INT2NUM(V_I8(pvar)); +#endif + break; + case VT_UI8: + /* + if(V_ISBYREF(pvar)) + obj = INT2NUM(*V_UI8REF(pvar)); + else + obj = INT2NUM(V_UI8(pvar)); + */ +#ifdef HAVE_LONG_LONG + obj = ULL2NUM(V_UI8(pvar)); +#else + obj = UINT2NUM(V_UI8(pvar)); +#endif + break; case VT_R4: if(V_ISBYREF(pvar)) obj = rb_float_new(*V_R4REF(pvar)); @@ -7463,6 +7488,8 @@ Init_win32ole() rb_define_const(mWIN32OLE_VARIANT, "VT_UI1", INT2FIX(VT_UI1)); rb_define_const(mWIN32OLE_VARIANT, "VT_UI2", INT2FIX(VT_UI2)); rb_define_const(mWIN32OLE_VARIANT, "VT_UI4", INT2FIX(VT_UI4)); + rb_define_const(mWIN32OLE_VARIANT, "VT_I8", INT2FIX(VT_I8)); + rb_define_const(mWIN32OLE_VARIANT, "VT_UI8", INT2FIX(VT_UI8)); rb_define_const(mWIN32OLE_VARIANT, "VT_INT", INT2FIX(VT_INT)); rb_define_const(mWIN32OLE_VARIANT, "VT_UINT", INT2FIX(VT_UINT)); rb_define_const(mWIN32OLE_VARIANT, "VT_ARRAY", INT2FIX(VT_ARRAY)); |