private void AddInvokeKindToPropertyNode(XmlNode propertyNode, TLI.MemberInfo propertyInfo) { InvokeKinds kinds = propertyInfo.InvokeKind; string kindExists = propertyNode.Attributes["InvokeKind"].InnerText; switch (kinds) { case InvokeKinds.INVOKE_PROPERTYGET: if ((kindExists != "INVOKE_PROPERTYPUT") && (kindExists != "INVOKE_PROPERTYPUTREF")) { propertyNode.Attributes["InvokeKind"].InnerText = kinds.ToString(); } break; case InvokeKinds.INVOKE_PROPERTYPUT: case InvokeKinds.INVOKE_PROPERTYPUTREF: propertyNode.Attributes["InvokeKind"].InnerText = kinds.ToString(); break; } }
private void AddInvokeKindToPropertyNode(XmlNode methodNode, InvokeKinds kinds) { string kindString = kinds.ToString(); methodNode.Attributes[kindString].InnerText = "true"; }
static void GatherDataFromTLB(Comobjectstorage comobj) { TLI.TLIApplication tli = new TLI.TLIApplication(); TypeLibInfo ti = tli.TypeLibInfoFromFile(comobj.path); foreach (CoClassInfo cc in ti.CoClasses) { string progid = comobj.progid; if (progid != "") { int k = progid.IndexOf('.'); if (k != -1) { comobj.namesp = progid.Substring(0, k); comobj.name = progid.Substring(k + 1).Replace('.', '_'); } } if (comobj.clsid.ToString("B").ToLower() != cc.GUID.ToLower()) { continue; } comobj.clsid = new Guid(cc.GUID); comobj.wcfclsid = Guid.NewGuid(); foreach (TLI.MemberInfo minf in cc.DefaultInterface.Members) { if (minf.AttributeMask != 0) { continue; } InvokeKinds functype = minf.InvokeKind; if (functype != TLI.InvokeKinds.INVOKE_FUNC && functype != TLI.InvokeKinds.INVOKE_PROPERTYGET && functype != TLI.InvokeKinds.INVOKE_PROPERTYPUT && functype != TLI.InvokeKinds.INVOKE_PROPERTYPUTREF) { continue; } if (functype != TLI.InvokeKinds.INVOKE_FUNC) { Comobjectstorage.classprops prop = comobj.findproperty(minf.Name); if (prop == null) { prop = new Comobjectstorage.classprops(); prop.name = minf.Name; prop.returntype = VarianttoManaged(minf.ReturnType); comobj.props.Add(prop); } if (functype == TLI.InvokeKinds.INVOKE_PROPERTYGET) { prop.bget = true; } else if (functype == TLI.InvokeKinds.INVOKE_PROPERTYPUT || functype == TLI.InvokeKinds.INVOKE_PROPERTYPUTREF) { prop.bset = true; } foreach (TLI.ParameterInfo pmi in minf.Parameters) { Comobjectstorage.paramtr par = new Comobjectstorage.paramtr(); par.name = pmi.Name; par.vartype = VarianttoManaged(pmi.VarTypeInfo); par.bref = false; if (pmi.VarTypeInfo.PointerLevel != 0) { par.bref = true; } (functype == TLI.InvokeKinds.INVOKE_PROPERTYGET ? prop.getpars : prop.setpars).Add(par); } } else { Comobjectstorage.classmtds mtd = new Comobjectstorage.classmtds(); mtd.name = minf.Name; mtd.returntype = VarianttoManaged(minf.ReturnType); foreach (TLI.ParameterInfo pmi in minf.Parameters) { if (pmi.Name == "OptionalArgs" && !bincoptional) { continue; } Comobjectstorage.paramtr par = new Comobjectstorage.paramtr(); par.name = pmi.Name; par.vartype = VarianttoManaged(pmi.VarTypeInfo); par.bref = false; if (pmi.VarTypeInfo.PointerLevel != 0) { par.bref = true; } mtd.pars.Add(par); } comobj.mtds.Add(mtd); } } } }