Esempio n. 1
0
        public virtual void DataEnd()
        {
            if (!mGotData)
            {
                // we haven't got any data yet, return immediately
                // caller program sometimes call DataEnd before anything has been sent to detector
                return;
            }

            if (mDetectedCharset != null)
            {
                mDone = true;
                Report(mDetectedCharset);
                return;
            }

            switch (mInputState)
            {
            case InputState.Highbyte:
            {
                AbstractCSProber maxProber = null;
                foreach (AbstractCSProber prober in mCharSetProbers)
                {
                    if (prober == null)
                    {
                        continue;
                    }
                    if (maxProber == null || (prober.GetConfidence() > maxProber.GetConfidence()))
                    {
                        maxProber = prober;
                    }
                }
                //do not report anything because we are not confident of it, that's in fact a negative answer
                if (maxProber != null && (maxProber.GetConfidence() > MINIMUM_THRESHOLD))
                {
                    Report(maxProber.CharSetName);
                }
            }
            break;

            case InputState.EscAscii:
                break;

            default:
                break;
            }
            return;
        }