Example #1
0
        public static int Write(StringIO /*!*/ self, [NotNull] MutableString /*!*/ value)
        {
            var content      = self.GetWritableContent();
            int length       = content.GetByteCount();
            var bytesWritten = value.GetByteCount();
            int pos;

            if ((self._mode & IOMode.WriteAppends) != 0)
            {
                pos = length;
            }
            else
            {
                pos = self._position;
            }

            try {
                content.WriteBytes(pos, value, 0, bytesWritten);
            } catch (InvalidOperationException) {
                throw RubyExceptions.CreateIOError("not modifiable string");
            }

            content.TaintBy(value);
            self._position = pos + bytesWritten;
            return(bytesWritten);
        }
Example #2
0
        public static object SetLength(ConversionStorage <int> /*!*/ fixnumCast, StringIO /*!*/ self, object lengthObj)
        {
            int length = Protocols.CastToFixnum(fixnumCast, lengthObj);

            if (length < 0)
            {
                throw RubyExceptions.CreateEINVAL("negative length");
            }
            self.GetWritableContent().SetByteCount(length);
            return(lengthObj);
        }
Example #3
0
 public static void CloseWrite(StringIO /*!*/ self)
 {
     self.GetWritableContent();
     self._mode = self._mode.CloseWrite();
 }
Example #4
0
        public static int Write(StringIO/*!*/ self, [NotNull]MutableString/*!*/ value) {
            var content = self.GetWritableContent();
            int length = content.GetByteCount();
            var bytesWritten = value.GetByteCount();
            int pos;

            if ((self._mode & IOMode.WriteAppends) != 0) {
                pos = length;
            } else {
                pos = self._position;
            }

            try {
                content.WriteBytes(pos, value, 0, bytesWritten);
            } catch (InvalidOperationException) {
                throw RubyExceptions.CreateIOError("not modifiable string");
            }

            content.TaintBy(value);
            self._position = pos + bytesWritten;
            return bytesWritten;
        }
Example #5
0
 public static object SetLength(ConversionStorage<int>/*!*/ fixnumCast, StringIO/*!*/ self, object lengthObj) {
     int length = Protocols.CastToFixnum(fixnumCast, lengthObj);
     if (length < 0) {
         throw RubyExceptions.CreateEINVAL("negative length");
     }
     self.GetWritableContent().SetByteCount(length);
     return lengthObj;
 }
Example #6
0
 public static void CloseWrite(StringIO/*!*/ self) {
     self.GetWritableContent();
     self._mode = self._mode.CloseWrite();
 }