Mono.Cxxi.CppType.Modify C# (CSharp) Method

Modify() public method

public Modify ( CppModifiers modifier ) : CppType
modifier CppModifiers
return CppType
		public CppType Modify (CppModifiers modifier)
		{
			CppType newType = this;
			var newModifier = new CppModifiers [] { modifier };

			if (newType.internalModifiers != null)
				newType.internalModifiers.AddFirst (newModifier);
			else
				newType.internalModifiers = new List<CppModifiers> (newModifier);

			return newType;
		}

Usage Example

Example #1
0
	CppType GetType (Node n, CppType modifiers) {
		var fundamental = CppTypes.Unknown;

		switch (n.Type) {
		case "Typedef":
			return GetType (GetTypeNode (n), modifiers);
		case "ArrayType":
			CppModifiers mod = null;
			if (n.Attributes ["max"] != null && n.Attributes ["min"] != null)
				mod = new CppModifiers.ArrayModifier (int.Parse (n.Attributes ["max"].TrimEnd ('u')) - int.Parse (n.Attributes ["min"].TrimEnd ('u')) + 1);
			else
				mod = CppModifiers.Array;
			return GetType (GetTypeNode (n), modifiers.Modify (mod));
		case "PointerType":
			return GetType (GetTypeNode (n), modifiers.Modify (CppModifiers.Pointer));
		case "ReferenceType":
			return GetType (GetTypeNode (n), modifiers.Modify (CppModifiers.Reference));
		case "FundamentalType":
			return modifiers.CopyTypeFrom (new CppType (n.Name));
		case "CvQualifiedType":
			if (n.IsTrue ("const"))
				return GetType (GetTypeNode (n), modifiers.Modify (CppModifiers.Const));
			else
				throw new NotImplementedException ();
		case "Class":
			fundamental = CppTypes.Class;
			break;
		case "Struct":
			fundamental = CppTypes.Struct;
			break;
		case "Enumeration":
			fundamental = CppTypes.Enum;
			break;
		default:
			return CppTypes.Unknown;
		}

		if (!NodeToNamespace.ContainsKey (n)) {
			// FIXME: Do something better
			return CppTypes.Unknown;
		}

		return modifiers.CopyTypeFrom (new CppType (fundamental, string.Join ("::", NodeToNamespace [n].FullyQualifiedName)));
	}
All Usage Examples Of Mono.Cxxi.CppType::Modify