public Object access(ComplexNumbersA complexNumbers, Number index) { int idx = TckLanguage.checkBounds(index.intValue(), complexNumbers.getData().length / 2); return new ComplexNumberAEntry(complexNumbers, idx); } }
@Override public Object execute(VirtualFrame frame) { Env env = getLanguage(TckLanguage.class).getContextReference().get(); Object[] arguments = frame.getArguments(); return parseAndEval(env, arguments); }
public Object access(ComplexNumbersA complexNumbers, Number index, TruffleObject value) { if (readReal == null || readImag == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); this.readReal = insert(Message.READ.createNode()); this.readImag = insert(Message.READ.createNode()); } try { Number realPart = TckLanguage.expectNumber(ForeignAccess.sendRead(readReal, value, new Object[]{ComplexNumber.REAL_IDENTIFIER})); Number imagPart = TckLanguage.expectNumber(ForeignAccess.sendRead(readImag, value, new Object[]{ComplexNumber.IMAGINARY_IDENTIFIER})); int idx = TckLanguage.checkBounds(index.intValue(), complexNumbers.getData().length / 2); complexNumbers.getData()[idx * 2] = realPart.doubleValue(); complexNumbers.getData()[idx * 2 + 1] = imagPart.doubleValue(); return value; } catch (UnknownIdentifierException | UnsupportedMessageException e) { return null; } }
public Object access(VirtualFrame frame, ComplexNumbersB complexNumbers, Number index, TruffleObject value) { if (readReal == null || readImag == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); this.readReal = insert(Message.READ.createNode()); this.readImag = insert(Message.READ.createNode()); } try { Number realPart = TckLanguage.expectNumber(ForeignAccess.sendRead(readReal, value, ComplexNumber.REAL_IDENTIFIER)); Number imagPart = TckLanguage.expectNumber(ForeignAccess.sendRead(readImag, value, ComplexNumber.IMAGINARY_IDENTIFIER)); complexNumbers.getReals()[index.intValue()] = realPart.doubleValue(); complexNumbers.getImags()[index.intValue()] = imagPart.doubleValue(); return value; } catch (UnknownIdentifierException | UnsupportedMessageException e) { return null; } }
@Override public Object execute(VirtualFrame frame) { Env env = getLanguage(TckLanguage.class).getContextReference().get(); Object[] arguments = frame.getArguments(); return parseAndEval(env, arguments); }
public Object access(StructuredData data, Number index) { int idx = TckLanguage.checkBounds(index.intValue(), data.getSchema().length()); return new StructuredDataEntry(data.getBuffer(), data.getSchema(), idx); }