Mono.VisualC.Interop.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)
 {
     switch (n.Type) {
     case "ArrayType":
         return GetType (GetTypeNode (n), modifiers.Modify (CppModifiers.Array));
     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":
     case "Struct":
         if (!NodeToClass.ContainsKey (n)) {
             if (modifiers.Modifiers.Count () == 1 && modifiers.Modifiers [0] == CppModifiers.Pointer)
                 // Map these to void*
                 return modifiers.CopyTypeFrom (CppTypes.Void);
             else
                 return CppTypes.Unknown;
         }
         return modifiers.CopyTypeFrom (new CppType (CppTypes.Class, NodeToClass [n].Name));
     default:
         return CppTypes.Unknown;
     }
 }