void Reset() { if (fallback_buffer != null) { fallback_buffer.Reset(); } }
// for GetChars() static unsafe void Fallback (object provider, ref DecoderFallbackBuffer buffer, ref byte[] bufferArg, byte* bytes, long byteIndex, uint size, char* chars, ref int charIndex) { if (buffer == null) { var fallback = provider as DecoderFallback; if (fallback != null) buffer = fallback.CreateFallbackBuffer (); else buffer = ((Decoder) provider).FallbackBuffer; } if (bufferArg == null) bufferArg = new byte [1]; for (int i = 0; i < size; i++) { bufferArg [0] = bytes [byteIndex + i]; buffer.Fallback (bufferArg, 0); while (buffer.Remaining > 0) chars [charIndex++] = buffer.GetNextChar (); buffer.Reset (); } }
// for GetCharCount() static unsafe int Fallback (object provider, ref DecoderFallbackBuffer buffer, ref byte[] bufferArg, byte* bytes, long index, uint size) { if (buffer == null) { var fallback = provider as DecoderFallback; if (fallback != null) buffer = fallback.CreateFallbackBuffer (); else buffer = ((Decoder) provider).FallbackBuffer; } if (bufferArg == null) bufferArg = new byte [1]; int ret = 0; for (int i = 0; i < size; i++) { bufferArg [0] = bytes [(int) index + i]; buffer.Fallback (bufferArg, 0); ret += buffer.Remaining; buffer.Reset (); } return ret; }