org.jruby.RubyClass.setInstanceVariable()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(7.3k)|赞(0)|评价(0)|浏览(77)

本文整理了Java中org.jruby.RubyClass.setInstanceVariable方法的一些代码示例,展示了RubyClass.setInstanceVariable的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyClass.setInstanceVariable方法的具体详情如下:
包路径:org.jruby.RubyClass
类名称:RubyClass
方法名:setInstanceVariable

RubyClass.setInstanceVariable介绍

暂无

代码示例

代码示例来源:origin: org.jruby/jruby-complete

private static JavaProxyClass getProxyClass(final IRubyObject self) {
  final RubyClass metaClass = self.getMetaClass();
  IRubyObject proxyClass = metaClass.getInstanceVariable("@java_proxy_class");
  if (proxyClass == null || proxyClass.isNil()) { // lazy (proxy) class generation ... on JavaSubClass.new
    proxyClass = JavaProxyClass.getProxyClass(self.getRuntime(), metaClass);
    metaClass.setInstanceVariable("@java_proxy_class", proxyClass);
  }
  return (JavaProxyClass) proxyClass;
}

代码示例来源:origin: org.jruby/jruby-core

private static JavaProxyClass getProxyClass(final IRubyObject self) {
  final RubyClass metaClass = self.getMetaClass();
  IRubyObject proxyClass = metaClass.getInstanceVariable("@java_proxy_class");
  if (proxyClass == null || proxyClass.isNil()) { // lazy (proxy) class generation ... on JavaSubClass.new
    proxyClass = JavaProxyClass.getProxyClass(self.getRuntime(), metaClass);
    metaClass.setInstanceVariable("@java_proxy_class", proxyClass);
  }
  return (JavaProxyClass) proxyClass;
}

代码示例来源:origin: org.jruby/jruby-complete

private static void setupJavaSubclass(final ThreadContext context, final RubyClass subclass) {
  subclass.setInstanceVariable("@java_proxy_class", context.nil);
  // Subclasses of Java classes can safely use ivars, so we set this to silence warnings
  subclass.setCacheProxy(true);
  final RubyClass subclassSingleton = subclass.getSingletonClass();
  subclassSingleton.addReadWriteAttribute(context, "java_proxy_class");
  subclassSingleton.addMethod("java_interfaces", new JavaMethodZero(subclassSingleton, PUBLIC, "java_interfaces") {
    @Override
    public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name) {
      IRubyObject javaInterfaces = self.getInstanceVariables().getInstanceVariable("@java_interfaces");
      if (javaInterfaces != null) return javaInterfaces.dup();
      return context.nil;
    }
  });
  subclass.addMethod("__jcreate!", new JCreateMethod(subclassSingleton));
}

代码示例来源:origin: org.jruby/jruby-complete

@JRubyMethod(name = { "layout=" }, meta = true)
public static IRubyObject set_layout(ThreadContext context, IRubyObject structClass, IRubyObject layout) {
  if (!(structClass instanceof RubyClass)) {
    throw context.runtime.newTypeError(structClass, context.runtime.getClassClass());
  }
  if (!(layout instanceof StructLayout)) {
    throw context.runtime.newTypeError(layout,
        context.runtime.getModule("FFI").getClass("StructLayout"));
  }
  RubyClass klass = (RubyClass) structClass;
  klass.setFFIHandle(layout);
  klass.setInstanceVariable("@layout", layout);
  return structClass;
}

代码示例来源:origin: org.jruby/jruby-core

private static void setupJavaSubclass(final ThreadContext context, final RubyClass subclass) {
  subclass.setInstanceVariable("@java_proxy_class", context.nil);
  // Subclasses of Java classes can safely use ivars, so we set this to silence warnings
  subclass.setCacheProxy(true);
  final RubyClass subclassSingleton = subclass.getSingletonClass();
  subclassSingleton.addReadWriteAttribute(context, "java_proxy_class");
  subclassSingleton.addMethod("java_interfaces", new JavaMethodZero(subclassSingleton, PUBLIC, "java_interfaces") {
    @Override
    public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name) {
      IRubyObject javaInterfaces = self.getInstanceVariables().getInstanceVariable("@java_interfaces");
      if (javaInterfaces != null) return javaInterfaces.dup();
      return context.nil;
    }
  });
  subclass.addMethod("__jcreate!", new JCreateMethod(subclassSingleton));
}

代码示例来源:origin: org.jruby/jruby-core

@JRubyMethod(name = { "layout=" }, meta = true)
public static IRubyObject set_layout(ThreadContext context, IRubyObject structClass, IRubyObject layout) {
  if (!(structClass instanceof RubyClass)) {
    throw context.runtime.newTypeError(structClass, context.runtime.getClassClass());
  }
  if (!(layout instanceof StructLayout)) {
    throw context.runtime.newTypeError(layout,
        context.runtime.getModule("FFI").getClass("StructLayout"));
  }
  RubyClass klass = (RubyClass) structClass;
  klass.setFFIHandle(layout);
  klass.setInstanceVariable("@layout", layout);
  return structClass;
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

@JRubyMethod(name = { "layout=" }, meta = true)
public static IRubyObject set_layout(ThreadContext context, IRubyObject structClass, IRubyObject layout) {
  if (!(structClass instanceof RubyClass)) {
    throw context.runtime.newTypeError(structClass, context.runtime.getClassClass());
  }
  if (!(layout instanceof StructLayout)) {
    throw context.runtime.newTypeError(layout,
        context.runtime.getModule("FFI").getClass("StructLayout"));
  }
  RubyClass klass = (RubyClass) structClass;
  klass.setFFIHandle(layout);
  klass.setInstanceVariable("@layout", layout);
  return structClass;
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

@JRubyMethod(name = { "layout=" }, meta = true)
public static IRubyObject set_layout(ThreadContext context, IRubyObject structClass, IRubyObject layout) {
  if (!(structClass instanceof RubyClass)) {
    throw context.runtime.newTypeError(structClass, context.runtime.getClassClass());
  }
  if (!(layout instanceof StructLayout)) {
    throw context.runtime.newTypeError(layout,
        context.runtime.getModule("FFI").getClass("StructLayout"));
  }
  RubyClass klass = (RubyClass) structClass;
  klass.setFFIHandle(layout);
  klass.setInstanceVariable("@layout", layout);
  return structClass;
}

代码示例来源:origin: org.jruby/jruby-complete

private static void appendFeaturesToClass(ThreadContext context, final IRubyObject self, final RubyClass clazz) {
  final Ruby runtime = context.runtime;
  checkAlreadyReified(clazz, runtime);
  final JavaClass javaClass = getJavaClassForInterface(self);
  RubyArray javaInterfaces;
  if ( ! clazz.hasInstanceVariable("@java_interfaces") ) {
    javaInterfaces = RubyArray.newArray(runtime, javaClass);
    clazz.setInstanceVariable("@java_interfaces", javaInterfaces);
    initInterfaceImplMethods(context, clazz);
  }
  else {
    javaInterfaces = (RubyArray) clazz.getInstanceVariable("@java_interfaces");
    // we've already done the above priming logic, just add another interface
    // to the list of intentions unless we're past the point of no return or
    // already intend to implement the given interface
    if ( ! ( javaInterfaces.isFrozen() || javaInterfaces.includes(context, javaClass) ) ) {
      javaInterfaces.append(javaClass);
    }
  }
}

代码示例来源:origin: org.jruby/jruby-core

private static void appendFeaturesToClass(ThreadContext context, final IRubyObject self, final RubyClass clazz) {
  final Ruby runtime = context.runtime;
  checkAlreadyReified(clazz, runtime);
  final JavaClass javaClass = getJavaClassForInterface(self);
  RubyArray javaInterfaces;
  if ( ! clazz.hasInstanceVariable("@java_interfaces") ) {
    javaInterfaces = RubyArray.newArray(runtime, javaClass);
    clazz.setInstanceVariable("@java_interfaces", javaInterfaces);
    initInterfaceImplMethods(context, clazz);
  }
  else {
    javaInterfaces = (RubyArray) clazz.getInstanceVariable("@java_interfaces");
    // we've already done the above priming logic, just add another interface
    // to the list of intentions unless we're past the point of no return or
    // already intend to implement the given interface
    if ( ! ( javaInterfaces.isFrozen() || javaInterfaces.includes(context, javaClass) ) ) {
      javaInterfaces.append(javaClass);
    }
  }
}

相关文章

微信公众号

最新文章

更多

RubyClass类方法