CSharpSourceEmitter.SourceEmitter.TraverseChildren C# (CSharp) Method

TraverseChildren() public method

public TraverseChildren ( IAddition addition ) : void
addition IAddition
return void
    public override void TraverseChildren(IAddition addition) {

      var needsParen = LowerPrecedenceThanParentExpression(addition);
      var savedCurrentPrecedence = this.currentPrecedence;
      this.currentPrecedence = this.Precedence(addition);

      if (needsParen)
        this.sourceEmitterOutput.Write("(");

      if (addition.LeftOperand is ITargetExpression && ExpressionHelper.IsIntegralOne(addition.RightOperand)) {
        if (addition.ResultIsUnmodifiedLeftOperand) {
          this.Traverse(addition.LeftOperand);
          this.sourceEmitterOutput.Write("++");
        } else {
          this.sourceEmitterOutput.Write("++");
          this.Traverse(addition.LeftOperand);
        }
        goto Ret;
      }

      this.Traverse(addition.LeftOperand);
      if (addition.LeftOperand is ITargetExpression)
        this.sourceEmitterOutput.Write(" += ");
      else
        this.sourceEmitterOutput.Write(" + ");
      this.Traverse(addition.RightOperand);

    Ret:
      if (needsParen)
        this.sourceEmitterOutput.Write(")");

      this.currentPrecedence = savedCurrentPrecedence;
    }

Same methods

SourceEmitter::TraverseChildren ( IAddressDereference addressDereference ) : void
SourceEmitter::TraverseChildren ( IAddressOf addressOf ) : void
SourceEmitter::TraverseChildren ( IAddressableExpression addressableExpression ) : void
SourceEmitter::TraverseChildren ( IAliasForType aliasForType ) : void
SourceEmitter::TraverseChildren ( IAnonymousDelegate anonymousDelegate ) : void
SourceEmitter::TraverseChildren ( IArrayIndexer arrayIndexer ) : void
SourceEmitter::TraverseChildren ( IArrayTypeReference arrayTypeReference ) : void
SourceEmitter::TraverseChildren ( IAssembly assembly ) : void
SourceEmitter::TraverseChildren ( IAssemblyReference assemblyReference ) : void
SourceEmitter::TraverseChildren ( IAssertStatement assertStatement ) : void
SourceEmitter::TraverseChildren ( IAssignment assignment ) : void
SourceEmitter::TraverseChildren ( IAssumeStatement assumeStatement ) : void
SourceEmitter::TraverseChildren ( IBitwiseAnd bitwiseAnd ) : void
SourceEmitter::TraverseChildren ( IBitwiseOr bitwiseOr ) : void
SourceEmitter::TraverseChildren ( IBlockExpression blockExpression ) : void
SourceEmitter::TraverseChildren ( IBlockStatement block ) : void
SourceEmitter::TraverseChildren ( IBoundExpression boundExpression ) : void
SourceEmitter::TraverseChildren ( IBreakStatement breakStatement ) : void
SourceEmitter::TraverseChildren ( ICastIfPossible castIfPossible ) : void
SourceEmitter::TraverseChildren ( ICatchClause catchClause ) : void
SourceEmitter::TraverseChildren ( ICheckIfInstance checkIfInstance ) : void
SourceEmitter::TraverseChildren ( ICompileTimeConstant constant ) : void
SourceEmitter::TraverseChildren ( IConditional conditional ) : void
SourceEmitter::TraverseChildren ( IConditionalStatement conditionalStatement ) : void
SourceEmitter::TraverseChildren ( IContinueStatement continueStatement ) : void
SourceEmitter::TraverseChildren ( IConversion conversion ) : void
SourceEmitter::TraverseChildren ( ICopyMemoryStatement copyMemoryStatement ) : void
SourceEmitter::TraverseChildren ( ICreateArray createArray ) : void
SourceEmitter::TraverseChildren ( ICreateDelegateInstance createDelegateInstance ) : void
SourceEmitter::TraverseChildren ( ICreateObjectInstance createObjectInstance ) : void
SourceEmitter::TraverseChildren ( ICustomAttribute customAttribute ) : void
SourceEmitter::TraverseChildren ( ICustomModifier customModifier ) : void
SourceEmitter::TraverseChildren ( IDebuggerBreakStatement debuggerBreakStatement ) : void
SourceEmitter::TraverseChildren ( IDefaultValue defaultValue ) : void
SourceEmitter::TraverseChildren ( IDivision division ) : void
SourceEmitter::TraverseChildren ( IDoUntilStatement doUntilStatement ) : void
SourceEmitter::TraverseChildren ( IDupValue dupValue ) : void
SourceEmitter::TraverseChildren ( IEmptyStatement emptyStatement ) : void
SourceEmitter::TraverseChildren ( IEnumerable sizes ) : void
SourceEmitter::TraverseChildren ( IEquality equality ) : void
SourceEmitter::TraverseChildren ( IExclusiveOr exclusiveOr ) : void
SourceEmitter::TraverseChildren ( IExpression expression ) : void
SourceEmitter::TraverseChildren ( IExpressionStatement expressionStatement ) : void
SourceEmitter::TraverseChildren ( IFieldDefinition fieldDefinition ) : void
SourceEmitter::TraverseChildren ( IFieldReference fieldReference ) : void
SourceEmitter::TraverseChildren ( IFileReference fileReference ) : void
SourceEmitter::TraverseChildren ( IFillMemoryStatement fillMemoryStatement ) : void
SourceEmitter::TraverseChildren ( IForEachStatement forEachStatement ) : void
SourceEmitter::TraverseChildren ( IForStatement forStatement ) : void
SourceEmitter::TraverseChildren ( IFunctionPointerTypeReference functionPointerTypeReference ) : void
SourceEmitter::TraverseChildren ( IGenericMethodInstanceReference genericMethodInstanceReference ) : void
SourceEmitter::TraverseChildren ( IGenericMethodParameter genericMethodParameter ) : void
SourceEmitter::TraverseChildren ( IGenericMethodParameterReference genericMethodParameterReference ) : void
SourceEmitter::TraverseChildren ( IGenericTypeInstanceReference genericTypeInstanceReference ) : void
SourceEmitter::TraverseChildren ( IGenericTypeParameter genericTypeParameter ) : void
SourceEmitter::TraverseChildren ( IGenericTypeParameterReference genericTypeParameterReference ) : void
SourceEmitter::TraverseChildren ( IGetTypeOfTypedReference getTypeOfTypedReference ) : void
SourceEmitter::TraverseChildren ( IGetValueOfTypedReference getValueOfTypedReference ) : void
SourceEmitter::TraverseChildren ( IGotoStatement gotoStatement ) : void
SourceEmitter::TraverseChildren ( IGotoSwitchCaseStatement gotoSwitchCaseStatement ) : void
SourceEmitter::TraverseChildren ( IGreaterThan greaterThan ) : void
SourceEmitter::TraverseChildren ( IGreaterThanOrEqual greaterThanOrEqual ) : void
SourceEmitter::TraverseChildren ( ILabeledStatement labeledStatement ) : void
SourceEmitter::TraverseChildren ( ILeftShift leftShift ) : void
SourceEmitter::TraverseChildren ( ILessThan lessThan ) : void
SourceEmitter::TraverseChildren ( ILessThanOrEqual lessThanOrEqual ) : void
SourceEmitter::TraverseChildren ( ILocalDeclarationStatement localDeclarationStatement ) : void
SourceEmitter::TraverseChildren ( ILocalDefinition localDefinition ) : void
SourceEmitter::TraverseChildren ( ILockStatement lockStatement ) : void
SourceEmitter::TraverseChildren ( ILogicalNot logicalNot ) : void
SourceEmitter::TraverseChildren ( IMakeTypedReference makeTypedReference ) : void
SourceEmitter::TraverseChildren ( IManagedPointerTypeReference managedPointerTypeReference ) : void
SourceEmitter::TraverseChildren ( IMarshallingInformation marshallingInformation ) : void
SourceEmitter::TraverseChildren ( IMetadataConstant constant ) : void
SourceEmitter::TraverseChildren ( IMetadataCreateArray createArray ) : void
SourceEmitter::TraverseChildren ( IMetadataNamedArgument namedArgument ) : void
SourceEmitter::TraverseChildren ( IMetadataTypeOf typeOf ) : void
SourceEmitter::TraverseChildren ( IMethodCall methodCall ) : void
SourceEmitter::TraverseChildren ( IMethodImplementation methodImplementation ) : void
SourceEmitter::TraverseChildren ( IMethodReference methodReference ) : void
SourceEmitter::TraverseChildren ( IModifiedTypeReference modifiedTypeReference ) : void
SourceEmitter::TraverseChildren ( IModule module ) : void
SourceEmitter::TraverseChildren ( IModuleReference moduleReference ) : void
SourceEmitter::TraverseChildren ( IModulus modulus ) : void
SourceEmitter::TraverseChildren ( IMultiplication multiplication ) : void
SourceEmitter::TraverseChildren ( INamedArgument namedArgument ) : void
SourceEmitter::TraverseChildren ( INamespaceAliasForType namespaceAliasForType ) : void
SourceEmitter::TraverseChildren ( INamespaceTypeDefinition namespaceTypeDefinition ) : void
SourceEmitter::TraverseChildren ( INamespaceTypeReference namespaceTypeReference ) : void
SourceEmitter::TraverseChildren ( INestedTypeDefinition nestedTypeDefinition ) : void
SourceEmitter::TraverseChildren ( INestedTypeReference nestedTypeReference ) : void
SourceEmitter::TraverseChildren ( INotEquality notEquality ) : void
SourceEmitter::TraverseChildren ( IOldValue oldValue ) : void
SourceEmitter::TraverseChildren ( IOnesComplement onesComplement ) : void
SourceEmitter::TraverseChildren ( IOperation operation ) : void
SourceEmitter::TraverseChildren ( IOperationExceptionInformation operationExceptionInformation ) : void
SourceEmitter::TraverseChildren ( IOutArgument outArgument ) : void
SourceEmitter::TraverseChildren ( IParameterDefinition parameterDefinition ) : void
SourceEmitter::TraverseChildren ( IParameterTypeInformation parameterTypeInformation ) : void
SourceEmitter::TraverseChildren ( IPlatformInvokeInformation platformInvokeInformation ) : void
SourceEmitter::TraverseChildren ( IPointerCall pointerCall ) : void
SourceEmitter::TraverseChildren ( IPointerTypeReference pointerTypeReference ) : void
SourceEmitter::TraverseChildren ( IPopValue popValue ) : void
SourceEmitter::TraverseChildren ( IPropertyDefinition propertyDefinition ) : void
SourceEmitter::TraverseChildren ( IPushStatement pushStatement ) : void
SourceEmitter::TraverseChildren ( IRefArgument refArgument ) : void
SourceEmitter::TraverseChildren ( IResourceReference resourceReference ) : void
SourceEmitter::TraverseChildren ( IResourceUseStatement resourceUseStatement ) : void
SourceEmitter::TraverseChildren ( IRethrowStatement rethrowStatement ) : void
SourceEmitter::TraverseChildren ( IReturnStatement returnStatement ) : void
SourceEmitter::TraverseChildren ( IReturnValue returnValue ) : void
SourceEmitter::TraverseChildren ( IRightShift rightShift ) : void
SourceEmitter::TraverseChildren ( IRuntimeArgumentHandleExpression runtimeArgumentHandleExpression ) : void
SourceEmitter::TraverseChildren ( ISecurityAttribute securityAttribute ) : void
SourceEmitter::TraverseChildren ( ISizeOf sizeOf ) : void
SourceEmitter::TraverseChildren ( ISourceMethodBody methodBody ) : void
SourceEmitter::TraverseChildren ( IStackArrayCreate stackArrayCreate ) : void
SourceEmitter::TraverseChildren ( IStatement statement ) : void
SourceEmitter::TraverseChildren ( ISubtraction subtraction ) : void
SourceEmitter::TraverseChildren ( ISwitchCase switchCase ) : void
SourceEmitter::TraverseChildren ( ISwitchStatement switchStatement ) : void
SourceEmitter::TraverseChildren ( ITargetExpression targetExpression ) : void
SourceEmitter::TraverseChildren ( IThisReference thisReference ) : void
SourceEmitter::TraverseChildren ( IThrowStatement throwStatement ) : void
SourceEmitter::TraverseChildren ( ITokenOf tokenOf ) : void
SourceEmitter::TraverseChildren ( ITryCatchFinallyStatement tryCatchFilterFinallyStatement ) : void
SourceEmitter::TraverseChildren ( ITypeDefinitionMember typeMember ) : void
SourceEmitter::TraverseChildren ( ITypeOf typeOf ) : void
SourceEmitter::TraverseChildren ( ITypeReference typeReference ) : void
SourceEmitter::TraverseChildren ( IUnaryNegation unaryNegation ) : void
SourceEmitter::TraverseChildren ( IUnaryPlus unaryPlus ) : void
SourceEmitter::TraverseChildren ( IUnitNamespaceReference unitNamespaceReference ) : void
SourceEmitter::TraverseChildren ( IVectorLength vectorLength ) : void
SourceEmitter::TraverseChildren ( IWhileDoStatement whileDoStatement ) : void
SourceEmitter::TraverseChildren ( IWin32Resource win32Resource ) : void
SourceEmitter::TraverseChildren ( IYieldBreakStatement yieldBreakStatement ) : void
SourceEmitter::TraverseChildren ( IYieldReturnStatement yieldReturnStatement ) : void
SourceEmitter