org.jruby.RubyModule.defineClassUnder()方法的使用及代码示例

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

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

RubyModule.defineClassUnder介绍

[英]rb_define_class_under this method should be used only as an API to define/open nested classes
[中]rb_define_class_在这个方法下,应该只作为定义/打开嵌套类的API使用

代码示例

代码示例来源:origin: bazelbuild/bazel

public static void createRubyMessageBuilderContext(Ruby runtime) {
  RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cMessageBuilderContext = protobuf.defineClassUnder("MessageBuilderContext", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
      return new RubyMessageBuilderContext(runtime, klazz);
    }
  });
  cMessageBuilderContext.defineAnnotatedMethods(RubyMessageBuilderContext.class);
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyFileDescriptor(Ruby runtime) {
  RubyModule mProtobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cFieldDescriptor = mProtobuf.defineClassUnder("FieldDescriptor", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
      return new RubyFieldDescriptor(runtime, klazz);
    }
  });
  cFieldDescriptor.defineAnnotatedMethods(RubyFieldDescriptor.class);
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyEnumBuilderContext(Ruby runtime) {
  RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cMessageBuilderContext = protobuf.defineClassUnder("EnumBuilderContext", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
      return new RubyEnumBuilderContext(runtime, klazz);
    }
  });
  cMessageBuilderContext.defineAnnotatedMethods(RubyEnumBuilderContext.class);
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyBuilder(Ruby runtime) {
  RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cBuilder = protobuf.defineClassUnder("Builder", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
      return new RubyBuilder(runtime, klazz);
    }
  });
  cBuilder.defineAnnotatedMethods(RubyBuilder.class);
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyOneofBuilderContext(Ruby runtime) {
  RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyModule internal = protobuf.defineModuleUnder("Internal");
  RubyClass cRubyOneofBuidlerContext = internal.defineClassUnder("OneofBuilderContext", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby ruby, RubyClass rubyClass) {
      return new RubyOneofBuilderContext(ruby, rubyClass);
    }
  });
  cRubyOneofBuidlerContext.defineAnnotatedMethods(RubyOneofBuilderContext.class);
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyDescriptorPool(Ruby runtime) {
  RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cDescriptorPool = protobuf.defineClassUnder("DescriptorPool", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
      return new RubyDescriptorPool(runtime, klazz);
    }
  });
  cDescriptorPool.defineAnnotatedMethods(RubyDescriptorPool.class);
  descriptorPool = (RubyDescriptorPool) cDescriptorPool.newInstance(runtime.getCurrentContext(), Block.NULL_BLOCK);
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyOneofDescriptor(Ruby runtime) {
  RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cRubyOneofDescriptor = protobuf.defineClassUnder("OneofDescriptor", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby ruby, RubyClass rubyClass) {
      return new RubyOneofDescriptor(ruby, rubyClass);
    }
  });
  cRubyOneofDescriptor.defineAnnotatedMethods(RubyOneofDescriptor.class);
  cRubyOneofDescriptor.includeModule(runtime.getEnumerable());
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyDescriptor(Ruby runtime) {
  RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cDescriptor = protobuf.defineClassUnder("Descriptor", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
      return new RubyDescriptor(runtime, klazz);
    }
  });
  cDescriptor.includeModule(runtime.getEnumerable());
  cDescriptor.defineAnnotatedMethods(RubyDescriptor.class);
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyEnumDescriptor(Ruby runtime) {
  RubyModule mProtobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cEnumDescriptor = mProtobuf.defineClassUnder("EnumDescriptor", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
      return new RubyEnumDescriptor(runtime, klazz);
    }
  });
  cEnumDescriptor.includeModule(runtime.getEnumerable());
  cEnumDescriptor.defineAnnotatedMethods(RubyEnumDescriptor.class);
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyRepeatedField(Ruby runtime) {
  RubyModule mProtobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cRepeatedField = mProtobuf.defineClassUnder("RepeatedField", runtime.getObject(),
      new ObjectAllocator() {
        @Override
        public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
          return new RubyRepeatedField(runtime, klazz);
        }
      });
  cRepeatedField.defineAnnotatedMethods(RubyRepeatedField.class);
  cRepeatedField.includeModule(runtime.getEnumerable());
}

代码示例来源:origin: bazelbuild/bazel

public static void createRubyMap(Ruby runtime) {
  RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
  RubyClass cMap = protobuf.defineClassUnder("Map", runtime.getObject(), new ObjectAllocator() {
    @Override
    public IRubyObject allocate(Ruby ruby, RubyClass rubyClass) {
      return new RubyMap(ruby, rubyClass);
    }
  });
  cMap.includeModule(runtime.getEnumerable());
  cMap.defineAnnotatedMethods(RubyMap.class);
}

代码示例来源:origin: asciidoctor/asciidoctorj

public static RubyClass defineProcessorClass(Ruby rubyRuntime, String baseClassName, JRubyAsciidoctorObjectAllocator objectAllocator) {
  RubyClass baseClass = getExtensionBaseClass(rubyRuntime, baseClassName);
  final String rubyClassName = "JavaExtensionProxy_" + extensionCounter.getAndIncrement();
  return getExtensionsModule(baseClass.getRuntime()).defineClassUnder(rubyClassName, baseClass, objectAllocator);
}

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

public static RubyClass createVariadicInvokerClass(Ruby runtime, RubyModule module) {
  RubyClass result = module.defineClassUnder("VariadicInvoker",
      runtime.getObject(),
      ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  result.defineAnnotatedMethods(VariadicInvoker.class);
  result.defineAnnotatedConstants(VariadicInvoker.class);
  return result;
}

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

public static RubyClass createJavaProxyMethodClass(Ruby runtime, RubyModule Java) {
  RubyClass JavaProxyMethod = Java.defineClassUnder("JavaProxyMethod",
    runtime.getObject(), ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  JavaProxyReflectionObject.registerRubyMethods(runtime, JavaProxyMethod);
  JavaProxyMethod.defineAnnotatedMethods(ProxyMethodImpl.class);
  return JavaProxyMethod;
}

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

static void createWeakMap(Ruby runtime) {
  RubyClass weakMap = runtime.getObjectSpaceModule().defineClassUnder("WeakMap", runtime.getObject(), new ObjectAllocator() {
    public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
      return new WeakMap(runtime, klazz);
    }
  });
  weakMap.defineAnnotatedMethods(WeakMap.class);
}

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

public static RubyClass createStructByValueClass(Ruby runtime, RubyModule ffiModule) {
  final RubyClass Type = ffiModule.getClass("Type");
  RubyClass sbvClass = ffiModule.defineClassUnder("StructByValue", Type, ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  sbvClass.defineAnnotatedMethods(StructByValue.class);
  sbvClass.defineAnnotatedConstants(StructByValue.class);
  Type.setConstant("Struct", sbvClass);
  return sbvClass;
}

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

public static RubyClass createInvokerClass(Ruby runtime, RubyModule module) {
  RubyClass result = module.defineClassUnder("Invoker",
      module.getClass("AbstractInvoker"),
      ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  result.defineAnnotatedMethods(AbstractInvoker.class);
  result.defineAnnotatedMethods(JFFIInvoker.class);
  result.defineAnnotatedConstants(JFFIInvoker.class);
  return result;
}

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

public static RubyClass createEnumsClass(Ruby runtime, RubyModule ffiModule) {
  RubyClass enumsClass = ffiModule.defineClassUnder("Enums", runtime.getObject(),
      Allocator.INSTANCE);
  enumsClass.defineAnnotatedMethods(Enums.class);
  enumsClass.defineAnnotatedConstants(Enums.class);
  enumsClass.includeModule(ffiModule.getConstant("DataConverter"));
  return enumsClass;
}

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

public static RubyClass createStructByReferenceClass(Ruby runtime, RubyModule ffiModule) {
  RubyClass sbrClass = ffiModule.defineClassUnder("StructByReference", runtime.getObject(),
      ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  sbrClass.defineAnnotatedMethods(StructByReference.class);
  sbrClass.defineAnnotatedConstants(StructByReference.class);
  sbrClass.includeModule(ffiModule.getConstant("DataConverter"));
  return sbrClass;
}

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

public static void createDigestRMD160(Ruby runtime) {
  runtime.getLoadService().require("digest");
  if(provider == null) {
    throw runtime.newLoadError("RMD160 not supported without BouncyCastle");
  }
  RubyModule Digest = runtime.getModule("Digest");
  RubyClass Base = Digest.getClass("Base");
  RubyClass RMD160 = Digest.defineClassUnder("RMD160", Base, Base.getAllocator());
  RMD160.setInternalVariable("metadata", new Metadata("RIPEMD160", 64));
}

相关文章

微信公众号

最新文章

更多

RubyModule类方法