def doSetMember(self, context, attrName, value, allowSetter): decl = context.getRegisteredDeclaration(AttributeDeclaration, attrName) setter = self.declaration.findSetter(context, attrName) if allowSetter else None if setter is not None: activeSetters.__dict__[attrName] = context # use attribute name as parameter name for incoming value context = context.newInstanceContext(self, None).newChildContext() from prompto.runtime.Variable import Variable context.registerValue(Variable(attrName, decl.getType())) context.setValue(attrName, value) value = setter.interpret(context) setattr(self.instance, attrName, value.convertToPython()) if self.storable is not None: decl = context.getRegisteredDeclaration(AttributeDeclaration, attrName) if decl.storable: # TODO convert object graph if(value instanceof IInstance) self.storable.setData(attrName, value.getStorableData())
def registerArrowArgs(self, context, itemType): for arg in self.args: context.registerValue(Variable(arg, itemType)) return context
def checkFilter(self, context, itemType): if self.args is None or len(self.args) != 1: raise SyntaxError("Expecting 1 parameter only!") context = context.newChildContext() context.registerValue(Variable(self.args[0], itemType)) return self.statements.check(context, None)
def check(self, context): elemType = self.source.check(context).checkIterator(context) child = context.newChildContext() context.registerValue(Variable(self.name, elemType)) itemType = self.expression.check(child) return IteratorType(itemType)
def callback(text): local = context.newChildContext() local.registerValue( Variable(self.thenWith.name, TextType.instance)) local.setValue(self.thenWith.name, TextValue(text)) self.thenWith.statements.interpret(local)
def checkFilter(self, context, itemType): child = context.newChildContext() child.registerValue(Variable(self.itemName, itemType)) return self.predicate.check(child)
def assign(self, context, expression): value = expression.interpret(context) if context.getRegisteredValue(INamedInstance, self.name) is None: itype = expression.check(context) context.registerValue(Variable(self.name, itype)) context.setValue(self.name, value)
def check(self, context): super(FetchManyStatement, self).check(context) context = context.newChildContext() context.registerValue(Variable(self.name, CursorType(self.typ))) self.stmts.check(context, None) return VoidType.instance
def interpret(self, context): if context.getRegisteredValue(INamedInstance, self.parameter.getName()) is None: context.registerValue(Variable(self.parameter.getName(), self.getExpression())) context.setValue(self.parameter.getName(), self.getExpression().interpret(context)) return None
def interpret(self, context, value): context = context.newChildContext() context.registerValue(Variable(self.name, value.GetType(context))) context.setValue(self.name, value) self.statements.interpret(context) return None
def check(self, context, typ): context = context.newChildContext() context.registerValue(Variable(self.name, typ)) self.statements.check(context, None) return VoidType.instance
def interpret(self, context): if context.getRegisteredValue(INamedInstance, self.name)is None: actualType = self.expression.check(context) context.registerValue(Variable(self.name, actualType)) context.setValue(self.name, self.expression.interpret(context)) return None
def check(self, context): super(ReadStatement, self).check(context) context = context.newChildContext() context.registerValue(Variable(self.name, TextType.instance)) self.stmts.check(context, None) return VoidType.instance
def toDialectExplicit(self, writer): writer = writer.newChildWriter() sourceType = self.source.check(writer.context) itemType = sourceType.itemType writer.context.registerValue(Variable(self.itemName, itemType)) super(FilteredExpression, self).toDialect(writer)