Mono.AssemblyLocationProvider.RuntimeFormatElementType C# (CSharp) Method

RuntimeFormatElementType() static private method

static private RuntimeFormatElementType ( TypeReference tr, StringBuilder builder ) : void
tr Mono.Cecil.TypeReference
builder StringBuilder
return void
		static void RuntimeFormatElementType (TypeReference tr, StringBuilder builder)
		{
			var ts = tr as TypeSpecification;
			if (ts != null) {
				if (ts.IsByReference) {
					RuntimeFormatElementType (ts.ElementType, builder);
					builder.Append ("&");
					return;
				}
			}

			switch (tr.MetadataType) {
			case MetadataType.Void:
				builder.Append ("void");
				break;
			case MetadataType.Boolean:
				builder.Append ("bool");
				break;
			case MetadataType.Char:
				builder.Append ("char");
				break;
			case MetadataType.SByte:
				builder.Append ("sbyte");
				break;
			case MetadataType.Byte:
				builder.Append ("byte");
				break;
			case MetadataType.Int16:
				builder.Append ("int16");
				break;
			case MetadataType.UInt16:
				builder.Append ("uint16");
				break;
			case MetadataType.Int32:
				builder.Append ("int");
				break;
			case MetadataType.UInt32:
				builder.Append ("uint");
				break;
			case MetadataType.Int64:
				builder.Append ("long");
				break;
			case MetadataType.UInt64:
				builder.Append ("ulong");
				break;
			case MetadataType.Single:
				builder.Append ("single");
				break;
			case MetadataType.Double:
				builder.Append ("double");
				break;
			case MetadataType.String:
				builder.Append ("string");
				break;
			case MetadataType.Pointer:
				builder.Append (((TypeSpecification)tr).ElementType);
				builder.Append ("*");
				break;
			case MetadataType.ValueType:
			case MetadataType.Class:
			case MetadataType.GenericInstance: {
				FormatName (tr, builder, '/');
				break;
			}
			case MetadataType.Var:
			case MetadataType.MVar:
				builder.Append (tr.Name);
				builder.Append ("_REF");
				break;
			case MetadataType.Array: {
				var array = (ArrayType)tr;
				RuntimeFormatElementType (array.ElementType, builder);
				builder.Append ("[");

				for (int i = 0; i < array.Rank - 1; ++i)
					builder.Append (",");

				builder.Append ("]");
				break;
			}

			case MetadataType.TypedByReference:
				builder.Append ("typedbyref");
				break;
			case MetadataType.IntPtr:
				builder.Append ("intptr");
				break;
			case MetadataType.UIntPtr:
				builder.Append ("uintptr");
				break;
			case MetadataType.FunctionPointer:
				builder.Append ("*()");
				break;
			case MetadataType.Object:
				builder.Append ("object");
				break;
			default:
				builder.Append ("-unknown-");
				break;
			}
		}