11 static void oleparam_free(
void *
ptr);
12 static size_t oleparam_size(
const void *
ptr);
13 static VALUE foleparam_s_allocate(
VALUE klass);
14 static VALUE oleparam_ole_param_from_index(
VALUE self, ITypeInfo *pTypeInfo, UINT method_index,
int param_index);
18 static VALUE ole_param_ole_type(ITypeInfo *pTypeInfo, UINT method_index, UINT index);
20 static VALUE ole_param_ole_type_detail(ITypeInfo *pTypeInfo, UINT method_index, UINT index);
21 static VALUE foleparam_ole_type_detail(
VALUE self);
22 static VALUE ole_param_flag_mask(ITypeInfo *pTypeInfo, UINT method_index, UINT index, USHORT
mask);
27 static VALUE ole_param_default(ITypeInfo *pTypeInfo, UINT method_index, UINT index);
33 {
NULL, oleparam_free, oleparam_size,},
38 oleparam_free(
void *
ptr)
46 oleparam_size(
const void *
ptr)
73 foleparam_s_allocate(
VALUE klass)
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;
126 oleparam_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);
167 foleparam_name(
VALUE self)
173 ole_param_ole_type(ITypeInfo *
pTypeInfo, UINT method_index, UINT
index)
182 &(pFuncDesc->lprgelemdescParam[
index].tdesc),
Qnil);
198 foleparam_ole_type(
VALUE self)
216 &(pFuncDesc->lprgelemdescParam[
index].tdesc), typedetail);
232 foleparam_ole_type_detail(
VALUE self)
249 if (
V_UNION1((&(pFuncDesc->lprgelemdescParam[
index])), paramdesc).wParamFlags &
mask)
266 foleparam_input(
VALUE self)
271 pparam->
index, PARAMFLAG_FIN);
294 foleparam_output(
VALUE self)
299 pparam->
index, PARAMFLAG_FOUT);
313 foleparam_optional(
VALUE self)
318 pparam->
index, PARAMFLAG_FOPT);
333 foleparam_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;
394 foleparam_default(
VALUE self)
411 foleparam_inspect(
VALUE self)
413 VALUE detail = foleparam_name(
self);
414 VALUE defval = foleparam_default(
self);
415 if (defval !=
Qnil) {