IronRuby.Builtins.RubyIOOps.Reinitialize C# (CSharp) Method

Reinitialize() private method

private Reinitialize ( ConversionStorage toInt, object>.ConversionStorage toHash, ConversionStorage toStr, RubyIO self, object descriptor, [ optionsOrMode, [ options ) : RubyIO
toInt ConversionStorage
toHash object>.ConversionStorage
toStr ConversionStorage
self RubyIO
descriptor object
optionsOrMode [
options [
return RubyIO
        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;
        }

Same methods

RubyIOOps::Reinitialize ( RubyIO io, int descriptor, IronRuby.Builtins.IOInfo info ) : RubyIO