ruby-changes:13150
From: suke <ko1@a...>
Date: Sun, 13 Sep 2009 21:28:15 +0900 (JST)
Subject: [ruby-changes:13150] Ruby:r24901 (trunk): * ext/win32ole/win32ole.c (oletypelib_get_libattr): some refactoring
suke 2009-09-13 21:28:00 +0900 (Sun, 13 Sep 2009) New Revision: 24901 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24901 Log: * ext/win32ole/win32ole.c (oletypelib_get_libattr): some refactoring by adding oletypelib_get_libattr -This line, and those below, will be ignored-- M ChangeLog M ext/win32ole/win32ole.c Modified files: trunk/ChangeLog trunk/ext/win32ole/win32ole.c Index: ChangeLog =================================================================== --- ChangeLog (revision 24900) +++ ChangeLog (revision 24901) @@ -1,3 +1,8 @@ +Sun Sep 13 21:25:01 2009 Masaki Suketa <masaki.suketa@n...> + + * ext/win32ole/win32ole.c (oletypelib_get_libattr): some refactoring + by adding oletypelib_get_libattr. + Sun Sep 13 20:55:19 2009 Masaki Suketa <masaki.suketa@n...> * ext/win32ole/win32ole.c (oletypelib_get_typelib): some refactoring Index: ext/win32ole/win32ole.c =================================================================== --- ext/win32ole/win32ole.c (revision 24900) +++ ext/win32ole/win32ole.c (revision 24901) @@ -130,7 +130,7 @@ #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "1.4.5" +#define WIN32OLE_VERSION "1.4.6" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -405,6 +405,7 @@ static VALUE oleclass_from_typelib(VALUE self, ITypeLib *pTypeLib, VALUE oleclass); static VALUE oletypelib_set_member(VALUE self, ITypeLib *pTypeLib); static ITypeLib * oletypelib_get_typelib(VALUE self); +static void oletypelib_get_libattr(ITypeLib *pTypeLib, TLIBATTR **ppTLibAttr); static VALUE foletypelib_s_typelibs(VALUE self); static VALUE make_version_str(VALUE major, VALUE minor); static VALUE oletypelib_search_registry2(VALUE self, VALUE args); @@ -4867,6 +4868,17 @@ return ptlib->pTypeLib; } +static void +oletypelib_get_libattr(ITypeLib *pTypeLib, TLIBATTR **ppTLibAttr) +{ + HRESULT hr; + hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, ppTLibAttr); + if (FAILED(hr)) { + ole_raise(hr, eWIN32OLERuntimeError, + "failed to get library attribute(TLIBATTR) from ITypeLib"); + } +} + /* * call-seq: * @@ -5151,17 +5163,13 @@ foletypelib_guid(VALUE self) { ITypeLib *pTypeLib; - HRESULT hr; OLECHAR bstr[80]; VALUE guid = Qnil; int len; TLIBATTR *pTLibAttr; pTypeLib = oletypelib_get_typelib(self); - hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); - if (FAILED(hr)) { - ole_raise(hr, eWIN32OLERuntimeError, "failed to GetLibAttr from ITypeLib"); - } + oletypelib_get_libattr(pTypeLib, &pTLibAttr); len = StringFromGUID2(&pTLibAttr->guid, bstr, sizeof(bstr)/sizeof(OLECHAR)); if (len > 3) { guid = ole_wc2vstr(bstr, FALSE); @@ -5212,14 +5220,10 @@ TLIBATTR *pTLibAttr; VALUE major; VALUE minor; - HRESULT hr = S_OK; ITypeLib *pTypeLib; pTypeLib = oletypelib_get_typelib(self); - hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); - if (FAILED(hr)) { - ole_raise(hr, eWIN32OLERuntimeError, "failed to GetLibAttr from ITypeLib"); - } + oletypelib_get_libattr(pTypeLib, &pTLibAttr); major = INT2NUM(pTLibAttr->wMajorVerNum); minor = INT2NUM(pTLibAttr->wMinorVerNum); pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); @@ -5240,14 +5244,10 @@ { TLIBATTR *pTLibAttr; VALUE major; - HRESULT hr = S_OK; ITypeLib *pTypeLib; pTypeLib = oletypelib_get_typelib(self); + oletypelib_get_libattr(pTypeLib, &pTLibAttr); - hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); - if (FAILED(hr)) { - ole_raise(hr, eWIN32OLERuntimeError, "failed to GetLibAttr from ITypeLib"); - } major = INT2NUM(pTLibAttr->wMajorVerNum); pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); return major; @@ -5267,14 +5267,9 @@ { TLIBATTR *pTLibAttr; VALUE minor; - HRESULT hr = S_OK; ITypeLib *pTypeLib; pTypeLib = oletypelib_get_typelib(self); - - hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); - if (FAILED(hr)) { - ole_raise(hr, eWIN32OLERuntimeError, "failed to GetLibAttr from ITypeLib"); - } + oletypelib_get_libattr(pTypeLib, &pTLibAttr); minor = INT2NUM(pTLibAttr->wMinorVerNum); pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); return minor; @@ -5349,10 +5344,7 @@ ITypeLib *pTypeLib; pTypeLib = oletypelib_get_typelib(self); - hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); - if (FAILED(hr)) { - ole_raise(hr, eWIN32OLERuntimeError, "failed to get TLIBATTR information"); - } + oletypelib_get_libattr(pTypeLib, &pTLibAttr); hr = QueryPathOfRegTypeLib(&pTLibAttr->guid, pTLibAttr->wMajorVerNum, pTLibAttr->wMinorVerNum, @@ -5384,17 +5376,13 @@ static VALUE foletypelib_visible(VALUE self) { - HRESULT hr; ITypeLib *pTypeLib = NULL; VALUE visible = Qtrue; TLIBATTR *pTLibAttr; pTypeLib = oletypelib_get_typelib(self); + oletypelib_get_libattr(pTypeLib, &pTLibAttr); - hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); - if (FAILED(hr)) { - ole_raise(hr, eWIN32OLERuntimeError, "failed to get TLIBATTR information"); - } if ((pTLibAttr->wLibFlags == 0) || (pTLibAttr->wLibFlags & LIBFLAG_FRESTRICTED) || (pTLibAttr->wLibFlags & LIBFLAG_FHIDDEN)) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/