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

ruby-changes:35075

From: suke <ko1@a...>
Date: Wed, 13 Aug 2014 00:09:47 +0900 (JST)
Subject: [ruby-changes:35075] suke:r47157 (trunk): * ext/win32ole/win32ole.c: seperate WIN32OLE_PARAM src from win32ole.c

suke	2014-08-13 00:09:29 +0900 (Wed, 13 Aug 2014)

  New Revision: 47157

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=47157

  Log:
    * ext/win32ole/win32ole.c: seperate WIN32OLE_PARAM src from win32ole.c
    * ext/win32ole/win32ole.h: ditto.
    * ext/win32ole/win32ole_param.c: ditto.
    * ext/win32ole/win32ole_param.h: ditto.
    * ext/win32ole/depend: ditto.

  Added files:
    trunk/ext/win32ole/win32ole_param.c
    trunk/ext/win32ole/win32ole_param.h
  Modified files:
    trunk/ChangeLog
    trunk/ext/win32ole/depend
    trunk/ext/win32ole/win32ole.c
    trunk/ext/win32ole/win32ole.h
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 47156)
+++ ChangeLog	(revision 47157)
@@ -1,3 +1,11 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Wed Aug 13 00:07:01 2014  Masaki Suketa <masaki.suketa@n...>
+
+	* ext/win32ole/win32ole.c: seperate WIN32OLE_PARAM src from win32ole.c
+	* ext/win32ole/win32ole.h: ditto.
+	* ext/win32ole/win32ole_param.c: ditto.
+	* ext/win32ole/win32ole_param.h: ditto.
+	* ext/win32ole/depend: ditto.
+
 Tue Aug 12 23:17:47 2014  Masaki Suketa <masaki.suketa@n...>
 
 	* ext/win32ole/win32ole.c: refactoring. move some methods 
Index: ext/win32ole/win32ole.c
===================================================================
--- ext/win32ole/win32ole.c	(revision 47156)
+++ ext/win32ole/win32ole.c	(revision 47157)
@@ -103,7 +103,6 @@ typedef struct tagIEVENTSINKOBJ { https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole.c#L103
 }IEVENTSINKOBJ, *PIEVENTSINKOBJ;
 
 VALUE cWIN32OLE;
-VALUE cWIN32OLE_PARAM;
 VALUE cWIN32OLE_EVENT;
 VALUE cWIN32OLE_VARIANT;
 VALUE cWIN32OLE_PROPERTY;
@@ -152,11 +151,6 @@ struct oledata { https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole.c#L151
     IDispatch *pDispatch;
 };
 
-struct oleparamdata {
-    ITypeInfo *pTypeInfo;
-    UINT method_index;
-    UINT index;
-};
 
 struct oleeventdata {
     DWORD dwCookie;
@@ -201,7 +195,6 @@ static void ole_freeexceptinfo(EXCEPINFO https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole.c#L195
 static VALUE ole_excepinfo2msg(EXCEPINFO *pExInfo);
 static void ole_msg_loop(void);
 static void ole_free(struct oledata *pole);
-static void oleparam_free(struct oleparamdata *pole);
 static LPWSTR ole_mb2wc(char *pm, int len);
 static VALUE ole_ary_m_entry(VALUE val, LONG *pid);
 static void * get_ptr_of_variant(VARIANT *pvar);
@@ -278,23 +271,7 @@ static VALUE ole_ptrtype2val(ITypeInfo * https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole.c#L271
 static VALUE fole_method_help(VALUE self, VALUE cmdname);
 static VALUE fole_activex_initialize(VALUE self);
 
-static VALUE foleparam_s_allocate(VALUE klass);
-static VALUE oleparam_ole_param_from_index(VALUE self, ITypeInfo *pTypeInfo, UINT method_index, int param_index);
-static VALUE oleparam_ole_param(VALUE self, VALUE olemethod, int n);
-static VALUE foleparam_initialize(VALUE self, VALUE olemethod, VALUE n);
-static VALUE foleparam_name(VALUE self);
-static VALUE ole_param_ole_type(ITypeInfo *pTypeInfo, UINT method_index, UINT index);
-static VALUE foleparam_ole_type(VALUE self);
-static VALUE ole_param_ole_type_detail(ITypeInfo *pTypeInfo, UINT method_index, UINT index);
-static VALUE foleparam_ole_type_detail(VALUE self);
-static VALUE ole_param_flag_mask(ITypeInfo *pTypeInfo, UINT method_index, UINT index, USHORT mask);
-static VALUE foleparam_input(VALUE self);
-static VALUE foleparam_output(VALUE self);
-static VALUE foleparam_optional(VALUE self);
-static VALUE foleparam_retval(VALUE self);
-static VALUE ole_param_default(ITypeInfo *pTypeInfo, UINT method_index, UINT index);
-static VALUE foleparam_default(VALUE self);
-static VALUE foleparam_inspect(VALUE self);
+
 static long ole_search_event_at(VALUE ary, VALUE ev);
 static VALUE ole_search_event(VALUE ary, VALUE ev, BOOL  *is_default);
 static VALUE ole_search_handler_method(VALUE handler, VALUE ev, BOOL *is_default_handler);
@@ -984,13 +961,6 @@ ole_free(struct oledata *pole) https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole.c#L961
     free(pole);
 }
 
-static void
-oleparam_free(struct oleparamdata *pole)
-{
-    OLE_FREE(pole->pTypeInfo);
-    free(pole);
-}
-
 LPWSTR
 ole_vstr2wc(VALUE vstr)
 {
@@ -4280,372 +4250,6 @@ fole_activex_initialize(VALUE self) https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole.c#L4250
     return Qnil;
 }
 
-VALUE
-create_win32ole_param(ITypeInfo *pTypeInfo, UINT method_index, UINT index, VALUE name)
-{
-    struct oleparamdata *pparam;
-    VALUE obj = foleparam_s_allocate(cWIN32OLE_PARAM);
-    Data_Get_Struct(obj, struct oleparamdata, pparam);
-
-    pparam->pTypeInfo = pTypeInfo;
-    OLE_ADDREF(pTypeInfo);
-    pparam->method_index = method_index;
-    pparam->index = index;
-    rb_ivar_set(obj, rb_intern("name"), name);
-    return obj;
-}
-
-
-/*
- * Document-class: WIN32OLE_PARAM
- *
- *   <code>WIN32OLE_PARAM</code> objects represent param information of
- *   the OLE method.
- */
-static VALUE
-foleparam_s_allocate(VALUE klass)
-{
-    struct oleparamdata *pparam;
-    VALUE obj;
-    obj = Data_Make_Struct(klass,
-                           struct oleparamdata,
-                           0, oleparam_free, pparam);
-    pparam->pTypeInfo = NULL;
-    pparam->method_index = 0;
-    pparam->index = 0;
-    return obj;
-}
-
-static VALUE
-oleparam_ole_param_from_index(VALUE self, ITypeInfo *pTypeInfo, UINT method_index, int param_index)
-{
-    FUNCDESC *pFuncDesc;
-    HRESULT hr;
-    BSTR *bstrs;
-    UINT len;
-    struct oleparamdata *pparam;
-    hr = pTypeInfo->lpVtbl->GetFuncDesc(pTypeInfo, method_index, &pFuncDesc);
-    if (FAILED(hr))
-        ole_raise(hr, rb_eRuntimeError, "fail to ITypeInfo::GetFuncDesc");
-
-    len = 0;
-    bstrs = ALLOCA_N(BSTR, pFuncDesc->cParams + 1);
-    hr = pTypeInfo->lpVtbl->GetNames(pTypeInfo, pFuncDesc->memid,
-                                     bstrs, pFuncDesc->cParams + 1,
-                                     &len);
-    if (FAILED(hr)) {
-        pTypeInfo->lpVtbl->ReleaseFuncDesc(pTypeInfo, pFuncDesc);
-        ole_raise(hr, rb_eRuntimeError, "fail to ITypeInfo::GetNames");
-    }
-    SysFreeString(bstrs[0]);
-    if (param_index < 1 || len <= (UINT)param_index)
-    {
-        pTypeInfo->lpVtbl->ReleaseFuncDesc(pTypeInfo, pFuncDesc);
-        rb_raise(rb_eIndexError, "index of param must be in 1..%d", len);
-    }
-
-    Data_Get_Struct(self, struct oleparamdata, pparam);
-    pparam->pTypeInfo = pTypeInfo;
-    OLE_ADDREF(pTypeInfo);
-    pparam->method_index = method_index;
-    pparam->index = param_index - 1;
-    rb_ivar_set(self, rb_intern("name"), WC2VSTR(bstrs[param_index]));
-
-    pTypeInfo->lpVtbl->ReleaseFuncDesc(pTypeInfo, pFuncDesc);
-    return self;
-}
-
-static VALUE oleparam_ole_param(VALUE self, VALUE olemethod, int n)
-{
-    struct olemethoddata *pmethod;
-    Data_Get_Struct(olemethod, struct olemethoddata, pmethod);
-    return oleparam_ole_param_from_index(self, pmethod->pTypeInfo, pmethod->index, n);
-}
-
-/*
- * call-seq:
- *    WIN32OLE_PARAM.new(method, n) -> WIN32OLE_PARAM object
- *
- * Returns WIN32OLE_PARAM object which represents OLE parameter information.
- * 1st argument should be WIN32OLE_METHOD object.
- * 2nd argument `n' is n-th parameter of the method specified by 1st argument.
- *
- *    tobj = WIN32OLE_TYPE.new('Microsoft Scripting Runtime', 'IFileSystem')
- *    method = WIN32OLE_METHOD.new(tobj, 'CreateTextFile')
- *    param = WIN32OLE_PARAM.new(method, 2) # => #<WIN32OLE_PARAM:Overwrite=true>
- *
- */
-static VALUE foleparam_initialize(VALUE self, VALUE olemethod, VALUE n)
-{
-    int idx;
-    if (!rb_obj_is_kind_of(olemethod, cWIN32OLE_METHOD)) {
-        rb_raise(rb_eTypeError, "1st parameter must be WIN32OLE_METHOD object");
-    }
-    idx = FIX2INT(n);
-    return oleparam_ole_param(self, olemethod, idx);
-}
-
-/*
- *  call-seq:
- *     WIN32OLE_PARAM#name
- *
- *  Returns name.
- *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
- *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
- *     param1 = method.params[0]
- *     puts param1.name # => Filename
- */
-static VALUE
-foleparam_name(VALUE self)
-{
-    return rb_ivar_get(self, rb_intern("name"));
-}
-
-static VALUE
-ole_param_ole_type(ITypeInfo *pTypeInfo, UINT method_index, UINT index)
-{
-    FUNCDESC *pFuncDesc;
-    HRESULT hr;
-    VALUE type = rb_str_new2("unknown type");
-    hr = pTypeInfo->lpVtbl->GetFuncDesc(pTypeInfo, method_index, &pFuncDesc);
-    if (FAILED(hr))
-        return type;
-    type = ole_typedesc2val(pTypeInfo,
-                            &(pFuncDesc->lprgelemdescParam[index].tdesc), Qnil);
-    pTypeInfo->lpVtbl->ReleaseFuncDesc(pTypeInfo, pFuncDesc);
-    return type;
-}
-
-/*
- *  call-seq:
- *     WIN32OLE_PARAM#ole_type
- *
- *  Returns OLE type of WIN32OLE_PARAM object(parameter of OLE method).
- *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
- *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
- *     param1 = method.params[0]
- *     puts param1.ole_type # => VARIANT
- */
-static VALUE
-foleparam_ole_type(VALUE self)
-{
-    struct oleparamdata *pparam;
-    Data_Get_Struct(self, struct oleparamdata, pparam);
-    return ole_param_ole_type(pparam->pTypeInfo, pparam->method_index,
-                              pparam->index);
-}
-
-static VALUE
-ole_param_ole_type_detail(ITypeInfo *pTypeInfo, UINT method_index, UINT index)
-{
-    FUNCDESC *pFuncDesc;
-    HRESULT hr;
-    VALUE typedetail = rb_ary_new();
-    hr = pTypeInfo->lpVtbl->GetFuncDesc(pTypeInfo, method_index, &pFuncDesc);
-    if (FAILED(hr))
-        return typedetail;
-    ole_typedesc2val(pTypeInfo,
-                     &(pFuncDesc->lprgelemdescParam[index].tdesc), typedetail);
-    pTypeInfo->lpVtbl->ReleaseFuncDesc(pTypeInfo, pFuncDesc);
-    return typedetail;
-}
-
-/*
- *  call-seq:
- *     WIN32OLE_PARAM#ole_type_detail
- *
- *  Returns detail information of type of argument.
- *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'IWorksheetFunction')
- *     method = WIN32OLE_METHOD.new(tobj, 'SumIf')
- *     param1 = method.params[0]
- *     p param1.ole_type_detail # => ["PTR", "USERDEFINED", "Range"]
- */
-static VALUE
-foleparam_ole_type_detail(VALUE self)
-{
-    struct oleparamdata *pparam;
-    Data_Get_Struct(self, struct oleparamdata, pparam);
-    return ole_param_ole_type_detail(pparam->pTypeInfo, pparam->method_index,
-                                     pparam->index);
-}
-
-static VALUE
-ole_param_flag_mask(ITypeInfo *pTypeInfo, UINT method_index, UINT index, USHORT mask)
-{
-    FUNCDESC *pFuncDesc;
-    HRESULT hr;
-    VALUE ret = Qfalse;
-    hr = pTypeInfo->lpVtbl->GetFuncDesc(pTypeInfo, method_index, &pFuncDesc);
-    if(FAILED(hr))
-        return ret;
-    if (V_UNION1((&(pFuncDesc->lprgelemdescParam[index])), paramdesc).wParamFlags &mask)
-        ret = Qtrue;
-    pTypeInfo->lpVtbl->ReleaseFuncDesc(pTypeInfo, pFuncDesc);
-    return ret;
-}
-
-/*
- *  call-seq:
- *     WIN32OLE_PARAM#input?
- *
- *  Returns true if the parameter is input.
- *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
- *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
- *     param1 = method.params[0]
- *     puts param1.input? # => true
- */
-static VALUE foleparam_input(VALUE self)
-{
-    struct oleparamdata *pparam;
-    Data_Get_Struct(self, struct oleparamdata, pparam);
-    return ole_param_flag_mask(pparam->pTypeInfo, pparam->method_index,
-                               pparam->index, PARAMFLAG_FIN);
-}
-
-/*
- *  call-seq:
- *     WIN32OLE#output?
- *
- *  Returns true if argument is output.
- *     tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', 'DWebBrowserEvents')
- *     method = WIN32OLE_METHOD.new(tobj, 'NewWindow')
- *     method.params.each do |param|
- *       puts "#{param.name} #{param.output?}"
- *     end
- *
- *     The result of above script is following:
- *       URL false
- *       Flags false
- *       TargetFrameName false
- *       PostData false
- *       Headers false
- *       Processed true
- */
-static VALUE foleparam_output(VALUE self)
-{
-    struct oleparamdata *pparam;
-    Data_Get_Struct(self, struct oleparamdata, pparam);
-    return ole_param_flag_mask(pparam->pTypeInfo, pparam->method_index,
-                               pparam->index, PARAMFLAG_FOUT);
-}
-
-/*
- *  call-seq:
- *     WIN32OLE_PARAM#optional?
- *
- *  Returns true if argument is optional.
- *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
- *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
- *     param1 = method.params[0]
- *     puts "#{param1.name} #{param1.optional?}" # => Filename true
- */
-static VALUE foleparam_optional(VALUE self)
-{
-    struct oleparamdata *pparam;
-    Data_Get_Struct(self, struct oleparamdata, pparam);
-    return ole_param_flag_mask(pparam->pTypeInfo, pparam->method_index,
-                               pparam->index, PARAMFLAG_FOPT);
-}
-
-/*
- *  call-seq:
- *     WIN32OLE_PARAM#retval?
- *
- *  Returns true if argument is return value.
- *     tobj = WIN32OLE_TYPE.new('DirectX 7 for Visual Basic Type Library',
- *                              'DirectPlayLobbyConnection')
- *     method = WIN32OLE_METHOD.new(tobj, 'GetPlayerShortName')
- *     param = method.params[0]
- *     puts "#{param.name} #{param.retval?}"  # => name true
- */
-static VALUE foleparam_retval(VALUE self)
-{
-    struct oleparamdata *pparam;
-    Data_Get_Struct(self, struct oleparamdata, pparam);
-    return ole_param_flag_mask(pparam->pTypeInfo, pparam->method_index,
-                               pparam->index, PARAMFLAG_FRETVAL);
-}
-
-static VALUE
-ole_param_default(ITypeInfo *pTypeInfo, UINT method_index, UINT index)
-{
-    FUNCDESC *pFuncDesc;
-    ELEMDESC *pElemDesc;
-    PARAMDESCEX * pParamDescEx;
-    HRESULT hr;
-    USHORT wParamFlags;
-    USHORT mask = PARAMFLAG_FOPT|PARAMFLAG_FHASDEFAULT;
-    VALUE defval = Qnil;
-    hr = pTypeInfo->lpVtbl->GetFuncDesc(pTypeInfo, method_index, &pFuncDesc);
-    if (FAILED(hr))
-        return defval;
-    pElemDesc = &pFuncDesc->lprgelemdescParam[index];
-    wParamFlags = V_UNION1(pElemDesc, paramdesc).wParamFlags;
-    if ((wParamFlags & mask) == mask) {
-         pParamDescEx = V_UNION1(pElemDesc, paramdesc).pparamdescex;
-         defval = ole_variant2val(&pParamDescEx->varDefaultValue);
-    }
-    pTypeInfo->lpVtbl->ReleaseFuncDesc(pTypeInfo, pFuncDesc);
-    return defval;
-}
-
-/*
- *  call-seq:
- *     WIN32OLE_PARAM#default
- *
- *  Returns default value. If the default value does not exist,
- *  this method returns nil.
- *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
- *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
- *     method.params.each do |param|
- *       if param.default
- *         puts "#{param.name} (= #{param.default})"
- *       else
- *         puts "#{param}"
- *       end
- *     end
- *
- *     The above script result is following:
- *         Filename
- *         FileFormat
- *         Password
- *         WriteResPassword
- *         ReadOnlyRecommended
- *         CreateBackup
- *         AccessMode (= 1)
- *         ConflictResolution
- *         AddToMru
- *         TextCodepage
- *         TextVisualLayout
- */
-static VALUE foleparam_default(VALUE self)
-{
-    struct oleparamdata *pparam;
-    Data_Get_Struct(self, struct oleparamdata, pparam);
-    return ole_param_default(pparam->pTypeInfo, pparam->method_index,
-                             pparam->index);
-}
-
-/*
- *  call-seq:
- *     WIN32OLE_PARAM#inspect -> String
- *
- *  Returns the parameter name with class name. If the parameter has default value,
- *  then returns name=value string with class name.
- *
- */
-static VALUE
-foleparam_inspect(VALUE self)
-{
-    VALUE detail = foleparam_name(self);
-    VALUE defval = foleparam_default(self);
-    if (defval != Qnil) {
-        rb_str_cat2(detail, "=");
-        rb_str_concat(detail, rb_funcall(defval, rb_intern("inspect"), 0));
-    }
-    return make_inspect("WIN32OLE_PARAM", detail);
-}
-
 /*
  * Document-class: WIN32OLE_EVENT
  *
@@ -6841,20 +6445,7 @@ Init_win32ole(void) https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole.c#L6445
     Init_win32ole_type();
     Init_win32ole_variable();
     Init_win32ole_method();
-
-    cWIN32OLE_PARAM = rb_define_class("WIN32OLE_PARAM", rb_cObject);
-    rb_define_alloc_func(cWIN32OLE_PARAM, foleparam_s_allocate);
-    rb_define_method(cWIN32OLE_PARAM, "initialize", foleparam_initialize, 2);
-    rb_define_method(cWIN32OLE_PARAM, "name", foleparam_name, 0);
-    rb_define_method(cWIN32OLE_PARAM, "ole_type", foleparam_ole_type, 0);
-    rb_define_method(cWIN32OLE_PARAM, "ole_type_detail", foleparam_ole_type_detail, 0);
-    rb_define_method(cWIN32OLE_PARAM, "input?", foleparam_input, 0);
-    rb_define_method(cWIN32OLE_PARAM, "output?", foleparam_output, 0);
-    rb_define_method(cWIN32OLE_PARAM, "optional?", foleparam_optional, 0);
-    rb_define_method(cWIN32OLE_PARAM, "retval?", foleparam_retval, 0);
-    rb_define_method(cWIN32OLE_PARAM, "default", foleparam_default, 0);
-    rb_define_alias(cWIN32OLE_PARAM, "to_s", "name");
-    rb_define_method(cWIN32OLE_PARAM, "inspect", foleparam_inspect, 0);
+    Init_win32ole_param();
 
     cWIN32OLE_EVENT = rb_define_class("WIN32OLE_EVENT", rb_cObject);
     rb_define_singleton_method(cWIN32OLE_EVENT, "message_loop", fev_s_msg_loop, 0);
Index: ext/win32ole/win32ole.h
===================================================================
--- ext/win32ole/win32ole.h	(revision 47156)
+++ ext/win32ole/win32ole.h	(revision 47157)
@@ -117,13 +117,13 @@ HRESULT ole_docinfo_from_type(ITypeInfo https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole.h#L117
 VALUE ole_typedesc2val(ITypeInfo *pTypeInfo, TYPEDESC *pTypeDesc, VALUE typedetails);
 VALUE make_inspect(const char *class_name, VALUE detail);
 VALUE ole_variant2val(VARIANT *pvar);
-VALUE create_win32ole_param(ITypeInfo *pTypeInfo, UINT method_index, UINT index, VALUE name);
 
 #include "win32ole_variant_m.h"
 #include "win32ole_typelib.h"
 #include "win32ole_type.h"
 #include "win32ole_variable.h"
 #include "win32ole_method.h"
+#include "win32ole_param.h"
 #include "win32ole_error.h"
 
 #endif
Index: ext/win32ole/depend
===================================================================
--- ext/win32ole/depend	(revision 47156)
+++ ext/win32ole/depend	(revision 47157)
@@ -5,4 +5,5 @@ win32ole_typelib.o : win32ole_typelib.c https://github.com/ruby/ruby/blob/trunk/ext/win32ole/depend#L5
 win32ole_type.o : win32ole_type.c $(WIN32OLE_HEADERS)
 win32ole_variable.o : win32ole_variable.c $(WIN32OLE_HEADERS)
 win32ole_method.o : win32ole_method.c $(WIN32OLE_HEADERS)
+win32ole_param.o : win32ole_param.c $(WIN32OLE_HEADERS)
 win32ole_error.o : win32ole_error.c $(WIN32OLE_HEADERS)
Index: ext/win32ole/win32ole_param.c
===================================================================
--- ext/win32ole/win32ole_param.c	(revision 0)
+++ ext/win32ole/win32ole_param.c	(revision 47157)
@@ -0,0 +1,418 @@ https://github.com/ruby/ruby/blob/trunk/ext/win32ole/win32ole_param.c#L1
+#include "win32ole.h"
+
+VALUE cWIN32OLE_PARAM;
+
+struct oleparamdata {
+    ITypeInfo *pTypeInfo;
+    UINT method_index;
+    UINT index;
+};
+
+static void oleparam_free(struct oleparamdata *pole);
+static VALUE foleparam_s_allocate(VALUE klass);
+static VALUE oleparam_ole_param_from_index(VALUE self, ITypeInfo *pTypeInfo, UINT method_index, int param_index);
+static VALUE oleparam_ole_param(VALUE self, VALUE olemethod, int n);
+static VALUE foleparam_initialize(VALUE self, VALUE olemethod, VALUE n);
+static VALUE foleparam_name(VALUE self);
+static VALUE ole_param_ole_type(ITypeInfo *pTypeInfo, UINT method_index, UINT index);
+static VALUE foleparam_ole_type(VALUE self);
+static VALUE ole_param_ole_type_detail(ITypeInfo *pTypeInfo, UINT method_index, UINT index);
+static VALUE foleparam_ole_type_detail(VALUE self);
+static VALUE ole_param_flag_mask(ITypeInfo *pTypeInfo, UINT method_index, UINT index, USHORT mask);
+static VALUE foleparam_input(VALUE self);
+static VALUE foleparam_output(VALUE self);
+static VALUE foleparam_optional(VALUE self);
+static VALUE foleparam_retval(VALUE self);
+static VALUE ole_param_default(ITypeInfo *pTypeInfo, UINT method_index, UINT index);
+static VALUE foleparam_default(VALUE self);
+static VALUE foleparam_inspect(VALUE self);
 (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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