7 static void oletype_free(
void *
ptr);
8 static size_t oletype_size(
const void *
ptr);
14 static VALUE oleclass_from_typelib(
VALUE self, ITypeLib *pTypeLib,
VALUE oleclass);
17 static VALUE ole_ole_type(ITypeInfo *pTypeInfo);
19 static VALUE ole_type_guid(ITypeInfo *pTypeInfo);
21 static VALUE ole_type_progid(ITypeInfo *pTypeInfo);
23 static VALUE ole_type_visible(ITypeInfo *pTypeInfo);
25 static VALUE ole_type_major_version(ITypeInfo *pTypeInfo);
26 static VALUE foletype_major_version(
VALUE self);
27 static VALUE ole_type_minor_version(ITypeInfo *pTypeInfo);
28 static VALUE foletype_minor_version(
VALUE self);
29 static VALUE ole_type_typekind(ITypeInfo *pTypeInfo);
31 static VALUE ole_type_helpstring(ITypeInfo *pTypeInfo);
33 static VALUE ole_type_src_type(ITypeInfo *pTypeInfo);
35 static VALUE ole_type_helpfile(ITypeInfo *pTypeInfo);
37 static VALUE ole_type_helpcontext(ITypeInfo *pTypeInfo);
39 static VALUE ole_variables(ITypeInfo *pTypeInfo);
43 static VALUE ole_type_impl_ole_types(ITypeInfo *pTypeInfo,
int implflags);
44 static VALUE foletype_impl_ole_types(
VALUE self);
45 static VALUE foletype_source_ole_types(
VALUE self);
46 static VALUE foletype_default_event_sources(
VALUE self);
47 static VALUE foletype_default_ole_types(
VALUE self);
52 {
NULL, oletype_free, oletype_size,},
63 oletype_free(
void *
ptr)
71 oletype_size(
const void *
ptr)
96 hr = pTypeLib->lpVtbl->GetDocumentation( pTypeLib,
index,
115 foletype_s_ole_classes(
VALUE self,
VALUE typelib)
137 foletype_s_typelibs(
VALUE self)
144 return rb_eval_string(
"WIN32OLE_TYPELIB.typelibs.collect{|t|t.name}");
154 foletype_s_progids(
VALUE self)
156 HKEY hclsids, hclsid;
164 if(
err != ERROR_SUCCESS) {
172 if (
err != ERROR_SUCCESS)
180 RegCloseKey(hclsids);
215 oleclass_from_typelib(
VALUE self, ITypeLib *pTypeLib,
VALUE oleclass)
227 count = pTypeLib->lpVtbl->GetTypeInfoCount(pTypeLib);
229 hr = pTypeLib->lpVtbl->GetTypeInfo(pTypeLib,
i, &
pTypeInfo);
232 hr = pTypeLib->lpVtbl->GetDocumentation(pTypeLib,
i,
238 oletype_set_member(
self,
pTypeInfo, typelib);
272 hr = LoadTypeLibEx(pbuf, REGKIND_NONE, &pTypeLib);
276 if (oleclass_from_typelib(
self, pTypeLib, oleclass) ==
Qfalse) {
294 foletype_name(
VALUE self)
309 switch(pTypeAttr->typekind) {
319 case TKIND_INTERFACE:
354 foletype_ole_type(
VALUE self)
371 len = StringFromGUID2(&pTypeAttr->guid, bstr,
sizeof(bstr)/
sizeof(OLECHAR));
388 foletype_guid(
VALUE self)
404 hr = ProgIDFromCLSID(&pTypeAttr->guid, &pbuf);
422 foletype_progid(
VALUE self)
438 if (pTypeAttr->wTypeFlags & (TYPEFLAG_FHIDDEN | TYPEFLAG_FRESTRICTED)) {
456 foletype_visible(
VALUE self)
463 ole_type_major_version(ITypeInfo *
pTypeInfo)
485 foletype_major_version(
VALUE self)
488 return ole_type_major_version(
pTypeInfo);
492 ole_type_minor_version(ITypeInfo *
pTypeInfo)
514 foletype_minor_version(
VALUE self)
517 return ole_type_minor_version(
pTypeInfo);
544 foletype_typekind(
VALUE self)
551 ole_type_helpstring(ITypeInfo *
pTypeInfo)
571 foletype_helpstring(
VALUE self)
586 if(pTypeAttr->typekind != TKIND_ALIAS) {
605 foletype_src_type(
VALUE self)
633 foletype_helpfile(
VALUE self)
640 ole_type_helpcontext(ITypeInfo *
pTypeInfo)
660 foletype_helpcontext(
VALUE self)
682 for(
i = 0;
i < pTypeAttr->cVars;
i++) {
689 if(FAILED(hr) ||
len == 0 || !bstr)
723 foletype_variables(
VALUE self)
742 foletype_methods(
VALUE self)
758 foletype_ole_typelib(
VALUE self)
765 ole_type_impl_ole_types(ITypeInfo *
pTypeInfo,
int implflags)
768 ITypeInfo *pRefTypeInfo;
780 for (
i = 0;
i < pTypeAttr->cImplTypes;
i++) {
792 if ((flags & implflags) == implflags) {
815 foletype_impl_ole_types(
VALUE self)
818 return ole_type_impl_ole_types(
pTypeInfo, 0);
832 foletype_source_ole_types(
VALUE self)
835 return ole_type_impl_ole_types(
pTypeInfo, IMPLTYPEFLAG_FSOURCE);
848 foletype_default_event_sources(
VALUE self)
851 return ole_type_impl_ole_types(
pTypeInfo, IMPLTYPEFLAG_FSOURCE|IMPLTYPEFLAG_FDEFAULT);
865 foletype_default_ole_types(
VALUE self)
868 return ole_type_impl_ole_types(
pTypeInfo, IMPLTYPEFLAG_FDEFAULT);
881 foletype_inspect(
VALUE self)