当前位置: 首页>>代码示例>>C#>>正文


C# Structure.IsUnsafe方法代码示例

本文整理汇总了C#中Structure.IsUnsafe方法的典型用法代码示例。如果您正苦于以下问题:C# Structure.IsUnsafe方法的具体用法?C# Structure.IsUnsafe怎么用?C# Structure.IsUnsafe使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Structure的用法示例。


在下文中一共展示了Structure.IsUnsafe方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Visit

        public override AstNode Visit(StructDefinition node)
        {
            // Parse the generic signature.
            GenericSignature genericSign = node.GetGenericSignature();
            GenericPrototype genProto = GenericPrototype.Empty;
            PseudoScope protoScope = null;
            if(genericSign != null)
            {
                // Visit the generic signature.
                genericSign.Accept(this);

                // Connect the generic prototype.
                genProto = genericSign.GetPrototype();

                // Create the placeholders scope.
                protoScope = new PseudoScope(currentScope, genProto);
                node.SetGenericScope(protoScope);
            }

            // Prevent redefinition.
            ScopeMember old = currentContainer.FindType(node.GetName(), genProto);
            if(old != null)
                Error(node, "trying to redefine a struct.");

            // Create the structure
            Structure building = new Structure(node.GetName(), node.GetFlags(), currentContainer);
            building.SetGenericPrototype(genProto);
            node.SetStructure(building);
            building.Position = node.GetPosition();

            // Use the prototype scope.
            if(protoScope != null)
                PushScope(protoScope);

            // Register type association.
            string fullName = building.GetFullName();
            IChelaType assoc;
            if(assocClasses.TryGetValue(fullName, out assoc))
                currentModule.RegisterAssociatedClass(assoc, building);

            // Add into the current scope.
            if(currentContainer.IsNamespace())
            {
                Namespace space = (Namespace)currentContainer;
                space.AddType(building);
            }
            else if(currentContainer.IsStructure() || currentContainer.IsInterface() || currentContainer.IsClass())
            {
                Structure parent = (Structure)currentContainer;
                parent.AddType(building);
            }
            else
            {
                Error(node, "unexpected place for a structure.");
            }

            // Push the building unsafe.
            if(building.IsUnsafe())
                PushUnsafe();

            // Update the scope.
            PushScope(building);

            // Visit the building children.
            VisitList(node.GetChildren());

            // Restore the scope.
            PopScope();

            // Pop the building unsafe.
            if(building.IsUnsafe())
                PopUnsafe();

            // Restore the prototype scope.
            if(protoScope != null)
                PopScope();

            return node;
        }
开发者ID:ronsaldo,项目名称:chela,代码行数:79,代码来源:ModuleTypeDeclaration.cs


注:本文中的Structure.IsUnsafe方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。