private VariableAccessor verifyAccessor(RubyClass cls) { VariableAccessor localAccessor = accessor; if (localAccessor.getClassId() != cls.id) { localAccessor = cls.getVariableAccessorForRead(name); accessor = localAccessor; } return localAccessor; }
/** * Produce a string representation of this VariableAccessor. * * @return a string representation of this VariableAccessor */ @Override public String toString() { return "ivar:" + getName() + ":" + index; }
int idIndex = otherRealClass.getObjectIdAccessorField().getVariableAccessorForRead().getIndex(); for (Map.Entry<String, VariableAccessor> entry : otherRealClass.getVariableAccessorsForRead().entrySet()) { VariableAccessor accessor = entry.getValue(); Object value = accessor.get(other); accessor.set(self, value); } else { realClass.getVariableAccessorForWrite(accessor.getName()).set(self, value);
setValue = insertArguments(setValue, 1, accessor.getIndex()); test = insertArguments(test, 0, accessor.getClassId()); test = dropArguments(test, 1, IRubyObject.class);
private final IRubyObject getValue(ThreadContext context, int index, String name, IRubyObject object) { VariableAccessor variableAccessor = variableReaders[index]; RubyClass cls = object.getMetaClass().getRealClass(); if (variableAccessor.getClassId() != cls.hashCode()) { variableReaders[index] = variableAccessor = cls.getVariableAccessorForRead(name); } return (IRubyObject)variableAccessor.get(object); }
public final IRubyObject setVariable(int index, String name, IRubyObject object, IRubyObject value) { VariableAccessor variableAccessor = variableWriters[index]; RubyClass cls = object.getMetaClass().getRealClass(); if (variableAccessor.getClassId() != cls.hashCode()) { variableWriters[index] = variableAccessor = cls.getVariableAccessorForWrite(name); } variableAccessor.set(object, value); return value; }
/** * Set the FFI handle for the given object. * * @param self the object * @param self the object's FFI handle */ public final void setFFIHandle(RubyBasicObject self, Object value) { int index = getFFIHandleAccessorForWrite().getIndex(); setVariableInternal(realClass, self, index, value); }
/** * Retrieve the FFI ext handle for the given object. * * @param self the object * @return the object's FFI handle */ public final Object getFFIHandle(RubyBasicObject self) { return getFFIHandleAccessorForRead().get(self); }
@Override public final void dataWrapStruct(Object object) { objectAccessor.set(this, object); }
/** * Retrieve the variable's value from the given object. * * @param object the object from which to retrieve this variable * @return the variable's value */ public Object get(Object object) { return getVariable((RubyBasicObject)object, index); }
int idIndex = otherRealClass.getObjectIdAccessorField().getVariableAccessorForRead().getIndex(); for (Map.Entry<String, VariableAccessor> entry : otherRealClass.getVariableAccessorsForRead().entrySet()) { VariableAccessor accessor = entry.getValue(); Object value = accessor.get(other); accessor.set(self, value); } else { realClass.getVariableAccessorForWrite(accessor.getName()).set(self, value);
setValue = insertArguments(setValue, 1, accessor.getIndex()); test = insertArguments(test, 0, accessor.getClassId()); test = dropArguments(test, 1, IRubyObject.class);
private final IRubyObject getValue(ThreadContext context, int index, String name, IRubyObject object) { VariableAccessor variableAccessor = variableReaders[index]; RubyClass cls = object.getMetaClass().getRealClass(); if (variableAccessor.getClassId() != cls.hashCode()) { variableReaders[index] = variableAccessor = cls.getVariableAccessorForRead(name); } return (IRubyObject)variableAccessor.get(object); }
public final IRubyObject setVariable(int index, String name, IRubyObject object, IRubyObject value) { VariableAccessor variableAccessor = variableWriters[index]; RubyClass cls = object.getMetaClass().getRealClass(); if (variableAccessor.getClassId() != cls.hashCode()) { variableWriters[index] = variableAccessor = cls.getVariableAccessorForWrite(name); } variableAccessor.set(object, value); return value; }
/** * Set the FFI handle for the given object. * * @param self the object * @param self the object's FFI handle */ public final void setFFIHandle(RubyBasicObject self, Object value) { int index = getFFIHandleAccessorForWrite().getIndex(); setVariableInternal(realClass, self, index, value); }
/** * Checks if the variable table contains a variable of the * specified name. */ protected boolean variableTableContains(String name) { return metaClass.getVariableAccessorForRead(name).get(this) != null; }
public void deserializeVariables(RubyBasicObject object, ObjectInputStream ois) throws IOException, ClassNotFoundException { int varCount = ois.readInt(); for (int i = 0; i < varCount; i++) { String name = ois.readUTF(); Object value = ois.readObject(); getVariableAccessorForWrite(name).set(object, value); } }
/** * Retrieve the variable's value from the given object. * * @param object the object from which to retrieve this variable * @return the variable's value */ public Object get(Object object) { return getVariable((RubyBasicObject)object, index); }
int idIndex = otherRealClass.getObjectIdAccessorField().getVariableAccessorForRead().getIndex(); for (Map.Entry<String, VariableAccessor> entry : otherRealClass.getVariableAccessorsForRead().entrySet()) { VariableAccessor accessor = entry.getValue(); Object value = accessor.get(other); accessor.set(self, value); } else { realClass.getVariableAccessorForWrite(accessor.getName()).set(self, value);