예제 #1
0
        public OWTypeDef(ITlibNode parent, ITypeInfo ti, TypeAttr ta)
        {
            Parent = parent;
            _ta    = ta;
            _ti    = ti;

            string prefix = string.Empty;

            if (VarEnum.VT_ARRAY == ((VarEnum)_ta.tdescAlias.vt & VarEnum.VT_ARRAY))
            {
                var oad = ta.tdescAlias.lpadesc;
                _ti.GetRefTypeInfo(oad.tdescElem.hreftype, out _oti);
                prefix = _oti.GetName() + " ";
            }
            else
            {
                TmpIdlFormatter tmp = new TmpIdlFormatter();
                _ta.tdescAlias.ComTypeNameAsString(ti, tmp);
                prefix = tmp.data + " ";
                if (VarEnum.VT_USERDEFINED == (VarEnum)_ta.tdescAlias.vt)
                {
                    _ti.GetRefTypeInfo(_ta.tdescAlias.hreftype, out _oti);
                }
            }
            _name = prefix + ti.GetName();
            _data = new IDLData(this);
        }
예제 #2
0
 public OWChildrenIndirect(ITlibNode parent, string name, int imageidx, dlgCreateChildren genchildren)
 {
     Parent       = parent;
     _name        = name;
     ImageIndex   = imageidx;
     _genChildren = genchildren;
 }
예제 #3
0
 public OWRecord(ITlibNode parent, ITypeInfo ti, TypeAttr ta)
 {
     Parent = parent;
     _ti    = ti;
     _ta    = ta;
     _name  = _ti.GetName();
 }
예제 #4
0
        public OWTypeDef(ITlibNode parent, ITypeInfo ti, TypeAttr ta)
        {
            Parent = parent;
            _ta    = ta;
            _ti    = ti;

            string prefix = string.Empty;

            if (VarEnum.VT_PTR == ((VarEnum)_ta.tdescAlias.vt & VarEnum.VT_PTR))
            {
                var otd = _ta.tdescAlias.lptdsec;
                _ti.GetRefTypeInfo(otd.hreftype, out _oti);
                prefix = _oti.GetName() + " ";
            }
            else if (VarEnum.VT_ARRAY == ((VarEnum)_ta.tdescAlias.vt & VarEnum.VT_ARRAY))
            {
                var oad = ta.tdescAlias.lpadesc;
                _ti.GetRefTypeInfo(oad.tdescElem.hreftype, out _oti);
                prefix = _oti.GetName() + " ";
            }
            else
            {
                _ti.GetRefTypeInfo(_ta.tdescAlias.hreftype, out _oti);
                prefix = _oti.GetName() + " ";
            }
            _name = prefix + ti.GetName();
            _data = new IDLData(this);
        }
예제 #5
0
 public OWDispProperty(ITlibNode parent, ITypeInfo ti, VarDesc vd)
 {
     Parent = parent;
     _name  = ti.GetDocumentationById(vd.memid);
     _vd    = vd;
     _ti    = ti;
 }
예제 #6
0
 public IDLData(ITlibNode node)
 {
     Node       = node;
     Attributes = node.GetAttributes();
     Name       = node.Name;
     ShortName  = node.ShortName;
 }
예제 #7
0
 public OWEnum(ITlibNode parent, ITypeInfo ti, TypeAttr ta)
 {
     Parent = parent;
     _name  = ti.GetName();
     _ta    = ta;
     _ti    = ti;
 }
예제 #8
0
        public OWModule(ITlibNode parent, ITypeInfo ti, TypeAttr ta)
        {
            Parent = parent;
            _ti    = ti;
            _ta    = ta;
            _name  = _ti.GetName();
            if (_ta.cVars <= 0 && _ta.cFuncs <= 0)
            {
                return;
            }
            var tix = new olewoo_interop.ITypeInfoXtra();

            if (_ta.cFuncs > 0)
            {
                var fd      = new FuncDesc(_ti, 0);
                var invkind = fd.invkind;
                var memid   = fd.memid;
                _dllname = tix.GetDllEntry(ti, invkind, memid);
            }
            else
            {
                _dllname = null;
            }
            _data = new IDLData(this);
        }
예제 #9
0
 public OWInterface(ITlibNode parent, ITypeInfo ti, TypeAttr ta, bool topLevel)
 {
     Parent    = parent;
     _name     = ti.GetName();
     _ta       = ta;
     _ti       = ti;
     _topLevel = topLevel;
 }
예제 #10
0
 public OWEnumValue(ITlibNode parent, ITypeInfo ti, VarDesc vd)
 {
     Parent = parent;
     _name  = ti.GetDocumentationById(vd.memid);
     _val   = (int)vd.varValue;
     _vd    = vd;
     _ti    = ti;
 }
예제 #11
0
 public OWEnum(ITlibNode parent, ITypeInfo ti, TypeAttr ta)
 {
     Parent = parent;
     _name  = ti.GetName();
     _ta    = ta;
     _ti    = ti;
     _data  = new IDLData(this);
 }
예제 #12
0
        public OWRecordMember(ITlibNode parent, ITypeInfo ti, VarDesc vd)
        {
            Parent = parent;
            _name  = ti.GetDocumentationById(vd.memid);
            var ig = new IDLGrabber();

            vd.elemDescVar.tdesc.ComTypeNameAsString(ti, ig);
            _type = ig.Value;
        }
예제 #13
0
        public OWTypeDef(ITlibNode parent, ITypeInfo ti, TypeAttr ta)
        {
            Parent = parent;
            _ta    = ta;
            _ti    = ti;

            _ti.GetRefTypeInfo(_ta.tdescAlias.hreftype, out var oti);
            _name = oti.GetName() + " " + ti.GetName();
        }
예제 #14
0
        public OWMethod(ITlibNode parent, ITypeInfo ti, FuncDesc fd)
        {
            Parent = parent;
            _ti    = ti;
            _fd    = fd;

            var names = fd.GetNames(ti);

            _name = names[0];
        }
예제 #15
0
 public OWDispInterface(ITlibNode parent, ITypeInfo ti, TypeAttr ta, bool topLevel)
 {
     Parent          = parent;
     _name           = ti.GetName();
     _ta             = ta;
     _ti             = ti;
     _methodChildren = new OWIDispatchMethods(this);
     _propChildren   = new OWIDispatchProperties(this);
     _topLevel       = topLevel;
     _data           = new IDLData(this);
 }
예제 #16
0
        public OWCoClassInterface(ITlibNode parent, ITypeInfo ti, IMPLTYPEFLAGS impltypeflags)
        {
            Parent    = parent;
            Listeners = parent.Listeners;

            _ti    = ti;
            _flags = impltypeflags;

            _name = _ti.GetName();
            _data = new IDLData(this);
        }
예제 #17
0
        public OWModuleConst(ITlibNode parent, ITypeInfo ti, VarDesc vd, int idx)
        {
            _idx   = idx;
            Parent = parent;
            var ig = new IDLGrabber();

            vd.elemDescVar.tdesc.ComTypeNameAsString(ti, ig);
            _name = ig.Value + " " + ti.GetDocumentationById(vd.memid);
            _val  = vd.varValue ?? "";
            if (_val is string)
            {
                _val = (_val as string).ReEscape();
            }
        }
예제 #18
0
        public void CommonBuildTlibNode(ITlibNode parent, ITypeInfo ti, bool topLevel, bool swapfordispatch, List <ITlibNode> res)
        {
            var ta = ti.GetTypeAttr();

            switch (ta.typekind)
            {
            case TypeAttr.TypeKind.TKIND_DISPATCH:
                res.Add(new OWDispInterface(this, ti, ta, topLevel));
                if (swapfordispatch && ITypeInfoXtra.SwapForInterface(ref ti, ref ta))
                {
                    res.Add(new OWInterface(this, ti, ta, topLevel));
                }
                break;

            case TypeAttr.TypeKind.TKIND_INTERFACE:
                res.Add(new OWInterface(this, ti, ta, topLevel));
                break;

            case TypeAttr.TypeKind.TKIND_ALIAS:
                res.Add(new OWTypeDef(this, ti, ta));
                break;

            case TypeAttr.TypeKind.TKIND_ENUM:
                res.Add(new OWEnum(this, ti, ta));
                break;

            case TypeAttr.TypeKind.TKIND_COCLASS:
                res.Add(new OWCoClass(this, ti, ta));
                break;

            case TypeAttr.TypeKind.TKIND_RECORD:
                res.Add(new OWRecord(this, ti, ta));
                break;

            case TypeAttr.TypeKind.TKIND_MODULE:
                res.Add(new OWModule(this, ti, ta));
                break;
            }
        }
예제 #19
0
 public OWInheritedInterfaces(ITlibNode parent, ITypeInfo ti, TypeAttr ta)
 {
     Parent = parent;
     _ta    = ta;
     _ti    = ti;
 }
예제 #20
0
 public OWDispInterfaceInheritedInterfaces(ITlibNode parent, ITypeInfo ti, TypeAttr ta)
     : base(parent, ti, ta)
 {
 }