예제 #1
0
파일: CStructInstance.java 프로젝트: JJ/nqp
 public void bind_attribute_boxed(
     ThreadContext tc, SixModelObject class_handle, String name, long hint, SixModelObject value) {
   CStructREPRData data = (CStructREPRData) class_handle.st.REPRData;
   AttrInfo info = data.fieldTypes.get(name);
   /* XXX: This'll break if we try to set a callback member. OTOH, it's
    * broken on Parrot too, so it's not a NativeCall regression as
    * such... */
   ArgType type = info.argType;
   Object o = NativeCallOps.toJNAType(tc, value, type, null);
   if (info.inlined == 0) {
     if (type == ArgType.CSTRUCT || type == ArgType.CPPSTRUCT) {
       type = ArgType.CPOINTER;
       o = (Object) ((Structure) o).getPointer();
     } else if (type == ArgType.CUNION) {
       type = ArgType.CPOINTER;
       o = (Object) ((Union) o).getPointer();
     }
   }
   storage.writeField(name, o);
   memberCache.put(name, value);
 }