Exemple #1
0
 /// <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);
        }