ruby-changes:13149
From: suke <ko1@a...>
Date: Sun, 13 Sep 2009 21:01:02 +0900 (JST)
Subject: [ruby-changes:13149] Ruby:r24900 (trunk): * ext/win32ole/win32ole.c (oletypelib_get_typelib): some refactoring
suke 2009-09-13 20:58:52 +0900 (Sun, 13 Sep 2009) New Revision: 24900 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24900 Log: * ext/win32ole/win32ole.c (oletypelib_get_typelib): some refactoring by adding oletypelib_get_typelib. Modified files: trunk/ChangeLog trunk/ext/win32ole/win32ole.c Index: ChangeLog =================================================================== --- ChangeLog (revision 24899) +++ ChangeLog (revision 24900) @@ -1,3 +1,8 @@ +Sun Sep 13 20:55:19 2009 Masaki Suketa <masaki.suketa@n...> + + * ext/win32ole/win32ole.c (oletypelib_get_typelib): some refactoring + by adding oletypelib_get_typelib. + Sun Sep 13 20:18:49 2009 Nobuyoshi Nakada <nobu@r...> * ruby.c (process_sflag, proc_options, load_file_internal): fixed Index: ext/win32ole/win32ole.c =================================================================== --- ext/win32ole/win32ole.c (revision 24899) +++ ext/win32ole/win32ole.c (revision 24900) @@ -130,7 +130,7 @@ #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "1.4.4" +#define WIN32OLE_VERSION "1.4.5" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -404,6 +404,7 @@ static VALUE oletype_set_member(VALUE self, ITypeInfo *pTypeInfo, VALUE name); 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 VALUE foletypelib_s_typelibs(VALUE self); static VALUE make_version_str(VALUE major, VALUE minor); static VALUE oletypelib_search_registry2(VALUE self, VALUE args); @@ -4858,6 +4859,14 @@ return self; } +static ITypeLib * +oletypelib_get_typelib(VALUE self) +{ + struct oletypelibdata *ptlib; + Data_Get_Struct(self, struct oletypelibdata, ptlib); + return ptlib->pTypeLib; +} + /* * call-seq: * @@ -5141,15 +5150,14 @@ static VALUE foletypelib_guid(VALUE self) { - struct oletypelibdata *ptlib; ITypeLib *pTypeLib; HRESULT hr; OLECHAR bstr[80]; VALUE guid = Qnil; int len; TLIBATTR *pTLibAttr; - Data_Get_Struct(self, struct oletypelibdata, ptlib); - pTypeLib = ptlib->pTypeLib; + + pTypeLib = oletypelib_get_typelib(self); hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); if (FAILED(hr)) { ole_raise(hr, eWIN32OLERuntimeError, "failed to GetLibAttr from ITypeLib"); @@ -5174,21 +5182,18 @@ static VALUE foletypelib_name(VALUE self) { - struct oletypelibdata *ptlib; ITypeLib *pTypeLib; HRESULT hr; BSTR bstr; - BSTR bstr2; VALUE name; - Data_Get_Struct(self, struct oletypelibdata, ptlib); - pTypeLib = ptlib->pTypeLib; + pTypeLib = oletypelib_get_typelib(self); hr = pTypeLib->lpVtbl->GetDocumentation(pTypeLib, -1, - &bstr, &bstr2, NULL, NULL); + NULL, &bstr, NULL, NULL); if (FAILED(hr)) { ole_raise(hr, eWIN32OLERuntimeError, "failed to get name from ITypeLib"); } - name = WC2VSTR(bstr2); + name = WC2VSTR(bstr); return rb_enc_str_new(StringValuePtr(name), strlen(StringValuePtr(name)), cWIN32OLE_enc); } @@ -5208,11 +5213,9 @@ VALUE major; VALUE minor; HRESULT hr = S_OK; - struct oletypelibdata *ptlib; ITypeLib *pTypeLib; - Data_Get_Struct(self, struct oletypelibdata, ptlib); - pTypeLib = ptlib->pTypeLib; + pTypeLib = oletypelib_get_typelib(self); hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); if (FAILED(hr)) { ole_raise(hr, eWIN32OLERuntimeError, "failed to GetLibAttr from ITypeLib"); @@ -5238,10 +5241,8 @@ TLIBATTR *pTLibAttr; VALUE major; HRESULT hr = S_OK; - struct oletypelibdata *ptlib; ITypeLib *pTypeLib; - Data_Get_Struct(self, struct oletypelibdata, ptlib); - pTypeLib = ptlib->pTypeLib; + pTypeLib = oletypelib_get_typelib(self); hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); if (FAILED(hr)) { @@ -5267,10 +5268,8 @@ TLIBATTR *pTLibAttr; VALUE minor; HRESULT hr = S_OK; - struct oletypelibdata *ptlib; ITypeLib *pTypeLib; - Data_Get_Struct(self, struct oletypelibdata, ptlib); - pTypeLib = ptlib->pTypeLib; + pTypeLib = oletypelib_get_typelib(self); hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); if (FAILED(hr)) { @@ -5347,11 +5346,9 @@ BSTR bstr; LCID lcid = cWIN32OLE_lcid; VALUE path; - struct oletypelibdata *ptlib; ITypeLib *pTypeLib; - Data_Get_Struct(self, struct oletypelibdata, ptlib); - pTypeLib = ptlib->pTypeLib; + pTypeLib = oletypelib_get_typelib(self); hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); if (FAILED(hr)) { ole_raise(hr, eWIN32OLERuntimeError, "failed to get TLIBATTR information"); @@ -5392,9 +5389,7 @@ VALUE visible = Qtrue; TLIBATTR *pTLibAttr; - struct oletypelibdata *ptlib; - Data_Get_Struct(self, struct oletypelibdata, ptlib); - pTypeLib = ptlib->pTypeLib; + pTypeLib = oletypelib_get_typelib(self); hr = pTypeLib->lpVtbl->GetLibAttr(pTypeLib, &pTLibAttr); if (FAILED(hr)) { @@ -5427,9 +5422,7 @@ VALUE libname = Qnil; BSTR bstr; - struct oletypelibdata *ptlib; - Data_Get_Struct(self, struct oletypelibdata, ptlib); - pTypeLib = ptlib->pTypeLib; + pTypeLib = oletypelib_get_typelib(self); hr = pTypeLib->lpVtbl->GetDocumentation(pTypeLib, -1, &bstr, NULL, NULL, NULL); if (FAILED(hr)) { @@ -5454,9 +5447,7 @@ { ITypeLib *pTypeLib = NULL; VALUE classes = rb_ary_new(); - struct oletypelibdata *ptlib; - Data_Get_Struct(self, struct oletypelibdata, ptlib); - pTypeLib = ptlib->pTypeLib; + pTypeLib = oletypelib_get_typelib(self); ole_types_from_typelib(pTypeLib, classes); return classes; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/