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;
            }
        }
Exemple #2
0
        private void AddInvokeKindToPropertyNode(XmlNode methodNode, InvokeKinds kinds)
        {
            string kindString = kinds.ToString();

            methodNode.Attributes[kindString].InnerText = "true";
        }
Exemple #3
0
        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);
                    }
                }
            }
        }