Esempio n. 1
0
        /// <summary>
        /// Skip n input bytes.
        /// </summary>
        /// <param name="u">TODO u.</param>
        /// <param name="n">TODO n.</param>
        private static void UdInputSkip(ref Ud u, Int32 n)
        {
            if (u.InputEnd > 0)
            {
                return;
            }

            if (u.InputBuffer == null)
            {
                while (n-- > 0)
                {
                    Int32 c = u.InputHook(ref u);
                    if (c == Decode.UdEoi)
                    {
                        goto eoi;
                    }
                }

                return;
            }
            else
            {
                if (n > u.InputBufferSize ||
                    u.InputBufferIndex > u.InputBufferSize - n)
                {
                    u.InputBufferIndex = u.InputBufferSize;
                    goto eoi;
                }

                u.InputBufferIndex += n;
                return;
            }

eoi:
            u.InputEnd     = 1;
            u.Error        = 1;
            u.ErrorMessage = "cannot skip, eoi received\b";
        }