def feed(aBuf)
aLen = aBuf.length
for i in 0...aLen
codingState = @_mCodingSM.next_state(aBuf[i])
if codingState == :Error
if DEBUG
p(get_charset_name() + ' prober hit error at byte ' + i.to_s + '\n')
end
@_mState = :NotMe
break
elsif codingState == :ItsMe
@_mState = :FoundIt
break
elsif codingState == :Start
charLen = @_mCodingSM.get_current_charlen()
if i == 0
@_mLastChar[1] = aBuf[0]
@_mContextAnalyzer.feed(@_mLastChar[2 - charLen..@_mLastChar.length], charLen)
@_mDistributionAnalyzer.feed(@_mLastChar, charLen)
else
@_mContextAnalyzer.feed(aBuf[i + 1 - charLen .. i + 3 - charLen], charLen)
@_mDistributionAnalyzer.feed(aBuf[i - 1 .. i + 1], charLen)
end
end
end
@_mLastChar[0] = aBuf[aLen - 1]
if get_state() == :Detecting
if @_mContextAnalyzer.got_enough_data() and \
(get_confidence() > SHORTCUT_THRESHOLD)
@_mState = :FoundIt
end
end
return get_state()
end