public static RubyIO/*!*/ Reinitialize( ConversionStorage<int?>/*!*/ toInt, ConversionStorage<IDictionary<object, object>>/*!*/ toHash, ConversionStorage<MutableString>/*!*/ toStr, RubyIO/*!*/ self, object descriptor, [Optional]object optionsOrMode, [DefaultParameterValue(null), DefaultProtocol]IDictionary<object, object> options) { var context = self.Context; object _ = Missing.Value; Protocols.TryConvertToOptions(toHash, ref options, ref optionsOrMode, ref _); var toIntSite = toInt.GetSite(TryConvertToFixnumAction.Make(toInt.Context)); IOInfo info = new IOInfo(); if (optionsOrMode != Missing.Value) { int? m = toIntSite.Target(toIntSite, optionsOrMode); info = m.HasValue ? new IOInfo((IOMode)m) : IOInfo.Parse(context, Protocols.CastToString(toStr, optionsOrMode)); } if (options != null) { info = info.AddOptions(toStr, options); } int? desc = toIntSite.Target(toIntSite, descriptor); if (!desc.HasValue) { throw RubyExceptions.CreateTypeConversionError(context.GetClassDisplayName(descriptor), "Fixnum"); } Reinitialize(self, desc.Value, info); return self; }
public static RubyFile/*!*/ Reinitialize( ConversionStorage<int?>/*!*/ toInt, ConversionStorage<IDictionary<object, object>>/*!*/ toHash, ConversionStorage<MutableString>/*!*/ toPath, ConversionStorage<MutableString>/*!*/ toStr, RubyFile/*!*/ self, object descriptorOrPath, [Optional]object optionsOrMode, [Optional]object optionsOrPermissions, [DefaultParameterValue(null), DefaultProtocol]IDictionary<object, object> options) { var context = self.Context; Protocols.TryConvertToOptions(toHash, ref options, ref optionsOrMode, ref optionsOrPermissions); var toIntSite = toInt.GetSite(TryConvertToFixnumAction.Make(toInt.Context)); IOInfo info = new IOInfo(); if (optionsOrMode != Missing.Value) { int? m = toIntSite.Target(toIntSite, optionsOrMode); info = m.HasValue ? new IOInfo((IOMode)m) : IOInfo.Parse(context, Protocols.CastToString(toStr, optionsOrMode)); } int permissions = 0; if (optionsOrPermissions != Missing.Value) { int? p = toIntSite.Target(toIntSite, optionsOrPermissions); if (!p.HasValue) { throw RubyExceptions.CreateTypeConversionError(context.GetClassName(optionsOrPermissions), "Integer"); } permissions = p.Value; } if (options != null) { info = info.AddOptions(toStr, options); } // TODO: permissions // descriptor or path: int? descriptor = toIntSite.Target(toIntSite, descriptorOrPath); if (descriptor.HasValue) { RubyIOOps.Reinitialize(self, descriptor.Value, info); } else { Reinitialize(self, Protocols.CastToPath(toPath, descriptorOrPath), info, permissions); } return self; }