def _decideIntegerSubscript(subscript): if subscript.isExpressionConstantRef(): constant = subscript.getConstant() if isIndexConstant(constant): constant_value = int(constant) if abs(constant_value) < 2**31: return constant_value, True return None, False
def _decideIntegerSubscript(subscript): if subscript.isExpressionConstantRef(): constant = subscript.getConstant() if isIndexConstant(constant): constant_value = int(constant) if abs(constant_value) < 2 ** 31: return constant_value, True return None, False
def generateAssignmentSubscriptCode(statement, emit, context): subscribed = statement.getSubscribed() subscript = statement.getSubscript() value = statement.getAssignSource() integer_subscript = False if subscript.isExpressionConstantRef(): constant = subscript.getConstant() if isIndexConstant(constant): constant_value = int(constant) if abs(constant_value) < 2**31: integer_subscript = True value_name = context.allocateTempName("ass_subvalue") generateExpressionCode(to_name=value_name, expression=value, emit=emit, context=context) subscribed_name = context.allocateTempName("ass_subscribed") generateExpressionCode(to_name=subscribed_name, expression=subscribed, emit=emit, context=context) subscript_name = context.allocateTempName("ass_subscript") generateExpressionCode(to_name=subscript_name, expression=subscript, emit=emit, context=context) old_source_ref = context.setCurrentSourceCodeReference( value.getSourceReference() if Options.isFullCompat( ) else statement.getSourceReference()) if integer_subscript: getIntegerSubscriptAssignmentCode(subscribed_name=subscribed_name, subscript_name=subscript_name, subscript_value=constant_value, value_name=value_name, emit=emit, context=context) else: getSubscriptAssignmentCode(target_name=subscribed_name, subscript_name=subscript_name, value_name=value_name, emit=emit, context=context) context.setCurrentSourceCodeReference(old_source_ref)
def isIndexConstant(self): return isIndexConstant(self.constant)
def isIndexConstant(self): return isIndexConstant( self.constant )
def generateAssignmentSubscriptCode(statement, emit, context): subscribed = statement.getSubscribed() subscript = statement.getSubscript() value = statement.getAssignSource() integer_subscript = False if subscript.isExpressionConstantRef(): constant = subscript.getConstant() if isIndexConstant(constant): constant_value = int(constant) if abs(constant_value) < 2**31: integer_subscript = True value_name = context.allocateTempName("ass_subvalue") generateExpressionCode( to_name = value_name, expression = value, emit = emit, context = context ) subscribed_name = context.allocateTempName("ass_subscribed") generateExpressionCode( to_name = subscribed_name, expression = subscribed, emit = emit, context = context ) subscript_name = context.allocateTempName("ass_subscript") generateExpressionCode( to_name = subscript_name, expression = subscript, emit = emit, context = context ) old_source_ref = context.setCurrentSourceCodeReference( value.getSourceReference() if Options.isFullCompat() else statement.getSourceReference() ) if integer_subscript: getIntegerSubscriptAssignmentCode( subscribed_name = subscribed_name, subscript_name = subscript_name, subscript_value = constant_value, value_name = value_name, emit = emit, context = context ) else: getSubscriptAssignmentCode( target_name = subscribed_name, subscript_name = subscript_name, value_name = value_name, emit = emit, context = context ) context.setCurrentSourceCodeReference(old_source_ref)