コード例 #1
0
 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())
コード例 #2
0
 def registerArrowArgs(self, context, itemType):
     for arg in self.args:
         context.registerValue(Variable(arg, itemType))
     return context
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
 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)
コード例 #6
0
 def checkFilter(self, context, itemType):
     child = context.newChildContext()
     child.registerValue(Variable(self.itemName, itemType))
     return self.predicate.check(child)
コード例 #7
0
 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)
コード例 #8
0
 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
コード例 #9
0
 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
コード例 #10
0
 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
コード例 #11
0
 def check(self, context, typ):
     context = context.newChildContext()
     context.registerValue(Variable(self.name, typ))
     self.statements.check(context, None)
     return VoidType.instance
コード例 #12
0
 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
コード例 #13
0
 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
コード例 #14
0
 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)