[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]