/// <summary> /// Constructs a new view variable. /// </summary> /// <param name="viewType">The view type.</param> /// <param name="pointer">The pointer variable.</param> /// <param name="length">The length variable.</param> internal ViewVariable( ViewType viewType, PointerVariable pointer, PrimitiveVariable length) { Type = viewType; Pointer = pointer; Length = length; }
/// <summary> /// Creates a set of operations to realize a generic lea operation. /// </summary> /// <param name="elementIndex">The current element index (the offset).</param> /// <param name="target">The allocated target variable to write to.</param> /// <param name="address">The source address.</param> private void MakeLoadElementAddress( PrimitiveVariable elementIndex, PointerVariable target, PointerVariable address) { using (var statement = BeginStatement(target)) { statement.AppendCommand(CLInstructions.AddressOfOperation); statement.Append(address); statement.AppendIndexer(elementIndex); } }
private Variable ParceType(UHeaderParser.TypeContext context) { var typeName = context.typeName().GetText(); Variable variable; if (PrimitiveVariable.PrimitiveTypes.Contains(typeName)) { variable = new PrimitiveVariable(typeName); } else { var type = GetType(context); if (type is Class) { variable = new ClassVariable((Class)type); } else if (type is Delegate) { variable = new DelegateVariable((Delegate)type); } else if (type is Enum) { variable = new EnumVariable((Enum)type); } else { throw new InvalidOperationException(); } } variable.IsConst = context.FoundChild <UHeaderParser.IsConstContext>(); variable.IsPointer = context.FoundChild <UHeaderParser.IsPtrQuantContext>(); variable.IsReference = context.FoundChild <UHeaderParser.IsRefQuantContext>(); variable.IsInterface = typeName.StartsWith("I"); return(variable); }