private void treeMib_AfterSelect(object sender, TreeViewEventArgs e)
        {
            listviewNodeDetails.Items.Clear();

            if (e.Node != null)
            {
                MibTreeNode mtn = e.Node.Tag as MibTreeNode;
                if (mtn != null)
                {
                    listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Abstract", mtn.NodeType.ToString() }, this.listviewgroupAbstract));

                    listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Module", (mtn.Entity.Module != null) ? mtn.Entity.Module.Name : "" }, this.listviewgroupElement));
                    listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Type", mtn.Entity.GetType().Name }, this.listviewgroupElement));
                    listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Name", mtn.Entity.Name }, this.listviewgroupElement));
                    listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Description", mtn.Entity.Description }, this.listviewgroupElement));
                    listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "OID", mtn.Entity.Value.ToString() }, this.listviewgroupElement));
                    listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Full OID", MibTypesResolver.ResolveOid(mtn.Entity).GetOidString() }, this.listviewgroupElement));
                    if (mtn.Entity is ObjectType)
                    {
                        listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Access", (mtn.Entity as ObjectType).Access.ToString() }, this.listviewgroupElement));
                    }

                    ITypeReferrer tr = mtn.Entity as ITypeReferrer;
                    if (tr != null)
                    {
                        ShowTypeDetails(listviewNodeDetails, this.listviewgroupBaseType, tr.BaseType);
                        ShowTypeChain(listviewNodeDetails, tr.ReferredType);
                    }
                }
            }
        }
        private void ShowTypeChain(ListView lv, ITypeAssignment type)
        {
            ShowTypeDetails(lv, this.listviewgroupTypeChain, type);

            ITypeReferrer tr = type as ITypeReferrer;

            if ((tr != null) && (tr.ReferredType != null))
            {
                lv.Items.Add(new ListViewItem(new string[] { " >>>", "" }, this.listviewgroupTypeChain));
                ShowTypeChain(listviewNodeDetails, tr.ReferredType);
            }
        }
        public static void ResolveTypes(IModule module)
        {
            foreach (IEntity entity in module.Entities)
            {
                ITypeReferrer typeReferringEntity = entity as ITypeReferrer;

                if (typeReferringEntity != null)
                {
                    CheckTypeReferrer(module, typeReferringEntity);
                }
            }

            if (!_cachedModules.Contains(module))
            {
                _cachedModules.Add(module);
            }
        }
Example #4
0
		  private static void CheckTypeReferrer(IModule module, ITypeReferrer typeReferringEntity)
		  {
				TypeAssignment unknownType = typeReferringEntity.ReferredType as TypeAssignment;
				if (unknownType != null)
				{
					 typeReferringEntity.ReferredType = ResolveType(module, unknownType);

					 if (typeReferringEntity.ReferredType is TypeAssignment)
					 {
						  Console.WriteLine(String.Format("Could not resolve type '{0}' declared in module '{1}'", (typeReferringEntity.ReferredType as TypeAssignment).Type, typeReferringEntity.ReferredType.Module.Name));
					 }
				}

				ITypeReferrer nextTypeReferringEntity = typeReferringEntity.ReferredType as ITypeReferrer;
				if (nextTypeReferringEntity != null)
				{
					 CheckTypeReferrer(module, nextTypeReferringEntity);
				}
		  }
        private static void CheckTypeReferrer(IModule module, ITypeReferrer typeReferringEntity)
        {
            TypeAssignment unknownType = typeReferringEntity.ReferredType as TypeAssignment;

            if (unknownType != null)
            {
                typeReferringEntity.ReferredType = ResolveType(module, unknownType);

                if (typeReferringEntity.ReferredType is TypeAssignment)
                {
                    Console.WriteLine(String.Format("Could not resolve type '{0}' declared in module '{1}'", (typeReferringEntity.ReferredType as TypeAssignment).Type, typeReferringEntity.ReferredType.Module.Name));
                }
            }

            ITypeReferrer nextTypeReferringEntity = typeReferringEntity.ReferredType as ITypeReferrer;

            if (nextTypeReferringEntity != null)
            {
                CheckTypeReferrer(module, nextTypeReferringEntity);
            }
        }