本文整理汇总了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;
}