class CharDet::SJISProber

def feed(aBuf)

def feed(aBuf)
  aLen = aBuf.length
  for i in (0...aLen)
    codingState = @codingSM.next_state(aBuf[i,1])
    if codingState == EError
      $stderr << "#{get_charset_name} prober hit error at byte #{i}\n" if $debug
      @state = ENotMe
      break
    elsif codingState == EItsMe
      @state = EFoundIt
      break
    elsif codingState == EStart
      charLen = @codingSM.get_current_charlen()
      if i == 0
        @lastChar[1] = aBuf[0, 1]
        @contextAnalyzer.feed(@lastChar[2-charLen, 1], charLen)
        @distributionAnalyzer.feed(@lastChar, charLen)
      else
        @contextAnalyzer.feed(aBuf[i+1-charLen, 2], charLen)
        @distributionAnalyzer.feed(aBuf[i-1, 2], charLen)
      end
    end
  end
  @lastChar[0] = aBuf[aLen-1, 1]
  if get_state() == EDetecting
    if @contextAnalyzer.got_enough_data() and (get_confidence() > SHORTCUT_THRESHOLD)
      @state = EFoundIt
    end
  end
  return get_state()
end

def get_charset_name

def get_charset_name
  return "SHIFT_JIS"
end

def get_confidence

def get_confidence
  l = [@contextAnalyzer.get_confidence(), @distributionAnalyzer.get_confidence()]
  return l.max
end

def initialize

def initialize
  super()
  @codingSM = CodingStateMachine.new(SJISSMModel)
  @distributionAnalyzer = SJISDistributionAnalysis.new()
  @contextAnalyzer = SJISContextAnalysis.new()
  reset()
end

def reset

def reset
  super()
  @contextAnalyzer.reset()
end