/// <summary> /// Begins a new statement. /// </summary> /// <param name="target">The target variable to assign to.</param> /// <param name="command">The initial command to emit.</param> /// <returns>The created statement emitter.</returns> public StatementEmitter BeginStatement(IntrinsicVariable target, string command) { var emitter = BeginStatement(target); emitter.AppendCommand(command); return(emitter); }
/// <summary> /// Begins a new statement. /// </summary> /// <param name="target">The target variable to assign to.</param> /// <param name="indexer">The indexer variable to use.</param> /// <returns>The created statement emitter.</returns> public StatementEmitter BeginStatement(IntrinsicVariable target, IntrinsicVariable indexer) { var emitter = new StatementEmitter(this, Indent); emitter.AppendIndexedTarget(target, indexer); return(emitter); }
/// <summary> /// Starts a target assignment. /// </summary> /// <param name="target">The target.</param> private void BeginAppendTarget(IntrinsicVariable target) { var variableType = CodeGenerator.GetVariableType(target); stringBuilder.Append(variableType); stringBuilder.Append(' '); stringBuilder.Append(target.ToString()); }
/// <summary> /// Appends an indexer target. /// </summary> /// <param name="target">The target.</param> /// <param name="indexer">The indexer variable.</param> internal void AppendIndexedTarget(IntrinsicVariable target, IntrinsicVariable indexer) { BeginAppendTarget(target); AppendIndexer(indexer); stringBuilder.Append(" = "); }
/// <summary> /// Appends a target. /// </summary> /// <param name="target">The target.</param> internal void AppendTarget(IntrinsicVariable target) { BeginAppendTarget(target); stringBuilder.Append(" = "); }
/// <summary> /// Appends the given register argument. /// </summary> /// <param name="argument">The argument to append.</param> public void AppendArgument(IntrinsicVariable argument) { AppendArgument(); Append(argument); }
/// <summary> /// Appends the given variable directly. /// </summary> /// <param name="variable">The variable to append.</param> public void Append(IntrinsicVariable variable) { stringBuilder.Append(variable.ToString()); }
/// <summary> /// Appends an indexer. /// </summary> /// <param name="indexer">The indexer variable.</param> public void AppendIndexer(IntrinsicVariable indexer) { stringBuilder.Append('['); stringBuilder.Append(indexer.ToString()); stringBuilder.Append(']'); }
/// <summary> /// Appends a field target. /// </summary> /// <param name="target">The target.</param> /// <param name="fieldIndex">The field index.</param> internal void AppendFieldTarget(IntrinsicVariable target, int fieldIndex) { BeginAppendTarget(target); AppendField(fieldIndex); stringBuilder.Append(" = "); }