Mono.Cxxi.CppType.Parse C# (CSharp) Méthode

Parse() private méthode

private Parse ( object parts ) : void
parts object
Résultat void
		private void Parse (object [] parts)
		{
			foreach (object part in parts) {

				if (part is CppModifiers) {
					Modifiers.Add ((CppModifiers)part);
					continue;
				}

				if (part is CppModifiers [] || part is IEnumerable<CppModifiers>) {
					Modifiers.AddRange ((IEnumerable<CppModifiers>)part);
					continue;
				}

				if (part is CppTypes) {
					ElementType = (CppTypes)part;
					continue;
				}

				Type managedType = part as Type;
				if (managedType != null) {
					CppType mapped = CppType.ForManagedType (managedType);
					CopyTypeFrom (mapped);
					continue;
				}

				string strPart = part as string;
				if (strPart != null) {
					var parsed = CppModifiers.Parse (strPart);
					if (parsed.Count > 0) {
						if (internalModifiers == null)
							internalModifiers = parsed;
						else
							internalModifiers.AddRange (parsed);

						strPart = CppModifiers.Remove (strPart);
					}

					// if we have something left, it must be a type name
					strPart = strPart.Trim ();
					if (strPart != "") {
						string [] qualifiedName = strPart.Split (new string [] { "::" }, StringSplitOptions.RemoveEmptyEntries);
						int numNamespaces = qualifiedName.Length - 1;
						if (numNamespaces > 0) {
							Namespaces = new string [numNamespaces];
							for (int i = 0; i < numNamespaces; i++)
								Namespaces [i] = qualifiedName [i];
						}
						strPart = qualifiedName [numNamespaces];

						// FIXME: Fix this mess
						switch (strPart) {
						case "void":
							ElementType = CppTypes.Void;
							break;
						case "bool":
							ElementType = CppTypes.Bool;
							break;
						case "char":
							ElementType = CppTypes.Char;
							break;
						case "int":
							ElementType = CppTypes.Int;
							break;
						case "float":
							ElementType = CppTypes.Float;
							break;
						case "double":
							ElementType = CppTypes.Double;
							break;
						default:
							// otherwise it is the element type name...
							ElementTypeName = strPart;
							break;
						}
					}
				}
			}
		}