本文整理汇总了C#中TypeNode.GetNumComponents方法的典型用法代码示例。如果您正苦于以下问题:C# TypeNode.GetNumComponents方法的具体用法?C# TypeNode.GetNumComponents怎么用?C# TypeNode.GetNumComponents使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TypeNode
的用法示例。
在下文中一共展示了TypeNode.GetNumComponents方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Visit
public override AstNode Visit(TypeNode node)
{
// Evaluate the type.
IChelaType nodeType = null;
switch(node.GetKind())
{
case TypeKind.Void:
nodeType = ChelaType.GetVoidType();
break;
case TypeKind.Bool:
nodeType = ChelaType.GetBoolType();
break;
case TypeKind.Byte:
nodeType = ChelaType.GetByteType();
break;
case TypeKind.SByte:
nodeType = ChelaType.GetSByteType();
break;
case TypeKind.Char:
nodeType = ChelaType.GetCharType();
break;
case TypeKind.Double:
nodeType = ChelaType.GetDoubleType();
break;
case TypeKind.Float:
nodeType = ChelaType.GetFloatType();
break;
case TypeKind.Int:
nodeType = ChelaType.GetIntType();
break;
case TypeKind.UInt:
nodeType = ChelaType.GetUIntType();
break;
case TypeKind.Long:
nodeType = ChelaType.GetLongType();
break;
case TypeKind.ULong:
nodeType = ChelaType.GetULongType();
break;
case TypeKind.Short:
nodeType = ChelaType.GetShortType();
break;
case TypeKind.UShort:
nodeType = ChelaType.GetUShortType();
break;
case TypeKind.String:
nodeType = ChelaType.GetStringType();
break;
case TypeKind.Object:
nodeType = ChelaType.GetObjectType();
break;
case TypeKind.Size:
nodeType = ChelaType.GetSizeType();
break;
case TypeKind.PtrDiff:
nodeType = ChelaType.GetPtrDiffType();
break;
case TypeKind.Other:
nodeType = node.GetOtherType();
break;
case TypeKind.Reference:
nodeType = ReferenceType.Create(currentModule.TypeMap(node.GetOtherType()));
break;
default:
throw new System.NotSupportedException();
}
// Vectorial type check.
if(node.GetNumComponents() > 1)
{
if(!nodeType.IsPrimitive())
Error(node, "invalid vectorial type.");
nodeType = VectorType.Create(nodeType, node.GetNumComponents());
}
else if(node.GetNumRows() > 1 || node.GetNumColumns() > 1)
{
if(!nodeType.IsPrimitive())
Error(node, "invalid matrix type.");
nodeType = MatrixType.Create(nodeType, node.GetNumRows(), node.GetNumColumns());
}
// Set the node type.
node.SetNodeType(MetaType.Create(currentModule.TypeMap(nodeType)));
return node;
}