11static void oleparam_free(
void *
ptr);
12static size_t oleparam_size(
const void *
ptr);
14static VALUE oleparam_ole_param_from_index(
VALUE self, ITypeInfo *pTypeInfo, UINT method_index,
int param_index);
18static VALUE ole_param_ole_type(ITypeInfo *pTypeInfo, UINT method_index, UINT
index);
20static VALUE ole_param_ole_type_detail(ITypeInfo *pTypeInfo, UINT method_index, UINT
index);
21static VALUE foleparam_ole_type_detail(
VALUE self);
22static VALUE ole_param_flag_mask(ITypeInfo *pTypeInfo, UINT method_index, UINT
index, USHORT
mask);
27static VALUE ole_param_default(ITypeInfo *pTypeInfo, UINT method_index, UINT
index);
33 {
NULL, oleparam_free, oleparam_size,},
38oleparam_free(
void *
ptr)
46oleparam_size(
const void *
ptr)
79 &oleparam_datatype, pparam);
99 bstrs =
ALLOCA_N(BSTR, pFuncDesc->cParams + 1);
101 bstrs, pFuncDesc->cParams + 1,
107 SysFreeString(bstrs[0]);
108 if (param_index < 1 ||
len <= (UINT)param_index)
118 pparam->
index = param_index - 1;
126oleparam_ole_param(
VALUE self,
VALUE olemethod,
int n)
129 return oleparam_ole_param_from_index(
self, pmethod->
pTypeInfo, pmethod->
index,
n);
153 return oleparam_ole_param(
self, olemethod, idx);
167foleparam_name(
VALUE self)
173ole_param_ole_type(ITypeInfo *
pTypeInfo, UINT method_index, UINT
index)
182 &(pFuncDesc->lprgelemdescParam[
index].tdesc),
Qnil);
198foleparam_ole_type(
VALUE self)
216 &(pFuncDesc->lprgelemdescParam[
index].tdesc), typedetail);
232foleparam_ole_type_detail(
VALUE self)
249 if (
V_UNION1((&(pFuncDesc->lprgelemdescParam[
index])), paramdesc).wParamFlags &
mask)
266foleparam_input(
VALUE self)
271 pparam->
index, PARAMFLAG_FIN);
294foleparam_output(
VALUE self)
299 pparam->
index, PARAMFLAG_FOUT);
313foleparam_optional(
VALUE self)
318 pparam->
index, PARAMFLAG_FOPT);
333foleparam_retval(
VALUE self)
338 pparam->
index, PARAMFLAG_FRETVAL);
346 PARAMDESCEX * pParamDescEx;
349 USHORT
mask = PARAMFLAG_FOPT|PARAMFLAG_FHASDEFAULT;
354 pElemDesc = &pFuncDesc->lprgelemdescParam[
index];
355 wParamFlags =
V_UNION1(pElemDesc, paramdesc).wParamFlags;
357 pParamDescEx =
V_UNION1(pElemDesc, paramdesc).pparamdescex;
394foleparam_default(
VALUE self)
411foleparam_inspect(
VALUE self)
413 VALUE detail = foleparam_name(
self);
414 VALUE defval = foleparam_default(
self);
415 if (defval !=
Qnil) {
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
void rb_define_alias(VALUE, const char *, const char *)
Defines an alias of a method.
VALUE rb_cObject
Object class.
void rb_raise(VALUE exc, const char *fmt,...)
VALUE rb_inspect(VALUE)
Convenient wrapper of Object::inspect.
VALUE rb_obj_is_kind_of(VALUE, VALUE)
Determines if obj is a kind of c.
VALUE type(ANYARGS)
ANYARGS-ed function type.
VALUE ole_typedesc2val(ITypeInfo *pTypeInfo, TYPEDESC *pTypeDesc, VALUE typedetails)
typedef HRESULT(STDAPICALLTYPE FNCOCREATEINSTANCEEX)(REFCLSID
VALUE ole_variant2val(VARIANT *pvar)
VALUE make_inspect(const char *class_name, VALUE detail)
void ole_raise(HRESULT hr, VALUE ecs, const char *fmt,...)
struct olemethoddata * olemethod_data_get_struct(VALUE obj)
VALUE create_win32ole_param(ITypeInfo *pTypeInfo, UINT method_index, UINT index, VALUE name)
void Init_win32ole_param(void)