39 count = pTypeLib->lpVtbl->GetTypeInfoCount(pTypeLib);
40 for (i = 0; i <
count; i++) {
41 hr = pTypeLib->lpVtbl->GetDocumentation(pTypeLib, i,
46 hr = pTypeLib->lpVtbl->GetTypeInfo(pTypeLib, i, &pTypeInfo);
51 hr = GetRecordInfoFromTypeInfo(pTypeInfo, ppri);
76 hr = pri->lpVtbl->PutField(pri, INVOKE_PROPERTYPUT, prec->
pdata, pbuf, &var);
97 hr = pri->lpVtbl->GetSize(pri, &size);
108 hr = pri->lpVtbl->RecordInit(pri, prec->
pdata);
114 V_RECORDINFO(var) =
pri;
115 V_RECORD(var) = prec->
pdata;
116 V_VT(var) = VT_RECORD;
141 hr = pri->lpVtbl->GetName(pri, &bstr);
146 hr = pri->lpVtbl->GetFieldNames(pri, &count,
NULL);
147 if (FAILED(hr) || count == 0)
150 hr = pri->lpVtbl->GetFieldNames(pri, &count, bstrs);
157 for (i = 0; i <
count; i++) {
162 hr = pri->lpVtbl->GetFieldNoCopy(pri, prec, bstrs[i], &var, &pdata);
235 hr = pvar->
pri->lpVtbl->GetSize(pvar->
pri, &size);
284 ITypeLib *pTypeLib =
NULL;
416 if (p[len-1] ==
'=') {
457 #if SIZEOF_SIZE_T > SIZEOF_LONG 468 }
else if (argc == 2) {
VALUE eWIN32OLERuntimeError
static VALUE folerecord_to_h(VALUE self)
#define RUBY_TYPED_FREE_IMMEDIATELY
size_t strlen(const char *)
static const rb_data_type_t olerecord_datatype
VALUE create_win32ole_record(IRecordInfo *pri, void *prec)
#define TypedData_Get_Struct(obj, type, data_type, sval)
ITypeLib * itypelib(VALUE self)
LPWSTR ole_vstr2wc(VALUE vstr)
void rb_raise(VALUE exc, const char *fmt,...)
VALUE rb_ivar_get(VALUE, ID)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE rb_obj_is_kind_of(VALUE, VALUE)
static VALUE folerecord_ole_instance_variable_get(VALUE self, VALUE name)
int rb_str_cmp(VALUE, VALUE)
VALUE rb_hash_fetch(VALUE hash, VALUE key)
void ole_rec2variant(VALUE rec, VARIANT *var)
HRESULT typelib_from_val(VALUE obj, ITypeLib **pTypeLib)
static int hash2olerec(VALUE key, VALUE val, VALUE rec)
void rb_hash_foreach(VALUE hash, int(*func)(ANYARGS), VALUE farg)
#define RB_TYPE_P(obj, type)
void ole_raise(HRESULT hr, VALUE ecs, const char *fmt,...)
VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)
RUBY_EXTERN VALUE rb_cObject
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
void Init_win32ole_record(void)
#define ALLOCA_N(type, n)
static VALUE folerecord_s_allocate(VALUE klass)
VALUE ole_variant2val(VARIANT *pvar)
static VALUE folerecord_inspect(VALUE self)
static VALUE folerecord_initialize(VALUE self, VALUE typename, VALUE oleobj)
VALUE rb_str_subseq(VALUE, long, long)
static VALUE folerecord_method_missing(int argc, VALUE *argv, VALUE self)
static VALUE folerecord_ole_instance_variable_set(VALUE self, VALUE name, VALUE val)
VALUE rb_sprintf(const char *format,...)
VALUE rb_ivar_set(VALUE, ID, VALUE)
void olerecord_set_ivar(VALUE obj, IRecordInfo *pri, void *prec)
static VALUE olerecord_ivar_get(VALUE self, VALUE name)
static size_t olerecord_size(const void *ptr)
register unsigned int len
#define StringValueCStr(v)
static VALUE folerecord_typename(VALUE self)
typedef HRESULT(STDAPICALLTYPE FNCOCREATEINSTANCEEX)(REFCLSID
static VALUE olerecord_ivar_set(VALUE self, VALUE name, VALUE val)
#define TypedData_Make_Struct(klass, type, data_type, sval)
static HRESULT recordinfo_from_itypelib(ITypeLib *pTypeLib, VALUE name, IRecordInfo **ppri)
#define StringValuePtr(v)
static void olerecord_free(void *pvar)
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
static ULONG(STDMETHODCALLTYPE AddRef)(IDispatch __RPC_FAR *This)
void ole_val2variant(VALUE val, VARIANT *var)