protected static final int calculateTypeSize(ThreadContext context, IRubyObject sizeArg) { if (sizeArg instanceof RubyFixnum) { return (int) ((RubyFixnum) sizeArg).getLongValue(); } else if (sizeArg instanceof RubySymbol) { return TypeSizeMapper.getTypeSize(context, (RubySymbol) sizeArg); } else if (sizeArg instanceof Type) { return ((Type) sizeArg).getNativeSize(); } else { DynamicMethod sizeMethod; if (sizeArg instanceof RubyClass && Struct.isStruct(context.runtime, (RubyClass) sizeArg)) { return Struct.getStructSize(context.runtime, sizeArg); } else if (!(sizeMethod = sizeArg.getMetaClass().searchMethod("size")).isUndefined()) { return (int) RubyFixnum.num2long(sizeMethod.call(context, sizeArg, sizeArg.getMetaClass(), "size")); } else { throw context.runtime.newArgumentError("Invalid size argument"); } } }
protected static final int calculateTypeSize(ThreadContext context, IRubyObject sizeArg) { if (sizeArg instanceof RubyFixnum) { return (int) ((RubyFixnum) sizeArg).getLongValue(); } else if (sizeArg instanceof RubySymbol) { return TypeSizeMapper.getTypeSize(context, (RubySymbol) sizeArg); } else if (sizeArg instanceof Type) { return ((Type) sizeArg).getNativeSize(); } else { DynamicMethod sizeMethod; if (sizeArg instanceof RubyClass && Struct.isStruct(context.runtime, (RubyClass) sizeArg)) { return Struct.getStructSize(context.runtime, sizeArg); } else if (!(sizeMethod = sizeArg.getMetaClass().searchMethod("size")).isUndefined()) { return (int) RubyFixnum.num2long(sizeMethod.call(context, sizeArg, sizeArg.getMetaClass(), "size")); } else { throw context.runtime.newArgumentError("Invalid size argument"); } } }
protected static final int calculateTypeSize(ThreadContext context, IRubyObject sizeArg) { if (sizeArg instanceof RubyFixnum) { return (int) ((RubyFixnum) sizeArg).getLongValue(); } else if (sizeArg instanceof RubySymbol) { return TypeSizeMapper.getTypeSize(context, (RubySymbol) sizeArg); } else if (sizeArg instanceof Type) { return ((Type) sizeArg).getNativeSize(); } else { DynamicMethod sizeMethod; if (sizeArg instanceof RubyClass && Struct.isStruct(context.runtime, (RubyClass) sizeArg)) { return Struct.getStructSize(context.runtime, sizeArg); } else if (!(sizeMethod = sizeArg.getMetaClass().searchMethod("size")).isUndefined()) { return (int) RubyFixnum.num2long(sizeMethod.call(context, sizeArg, sizeArg.getMetaClass(), "size")); } else { throw context.runtime.newArgumentError("Invalid size argument"); } } }
protected static final int calculateTypeSize(ThreadContext context, IRubyObject sizeArg) { if (sizeArg instanceof RubyFixnum) { return (int) ((RubyFixnum) sizeArg).getLongValue(); } else if (sizeArg instanceof RubySymbol) { return TypeSizeMapper.getTypeSize(context, (RubySymbol) sizeArg); } else if (sizeArg instanceof Type) { return ((Type) sizeArg).getNativeSize(); } else { DynamicMethod sizeMethod; if (sizeArg instanceof RubyClass && Struct.isStruct(context.runtime, (RubyClass) sizeArg)) { return Struct.getStructSize(context.runtime, sizeArg); } else if (!(sizeMethod = sizeArg.getMetaClass().searchMethod("size")).isUndefined()) { return (int) RubyFixnum.num2long(sizeMethod.call(context, sizeArg, sizeArg.getMetaClass(), "size")); } else { throw context.runtime.newArgumentError("Invalid size argument"); } } }