package body MATCHCSCI is
  procedure RESET  ( STATE: out STATETYPE ) is
    begin
     STATE := s ;
    end RESET ;

  procedure APPEND ( STATE: in out STATETYPE ; NEXT: in CHARACTER ) is
    begin
     case STATE is
     when s | sCSCI    => 
        if NEXT = 'C' then
           STATE := sC ;
        else
           STATE := s ;
        end if ;
     when sC    =>
        if NEXT = 'S' then
           STATE := sCS ;
        elsif NEXT /= 'C' then
           STATE := s ;
        end if ;
     when sCS   =>
	if NEXT = 'C' then
           STATE := sCSC ;
        else
           STATE := s ;
        end if ;
     when sCSC  =>
        if NEXT = 'I' then
           STATE := sCSCI ;
        elsif NEXT = 'C' then
           STATE := sC ;
        elsif NEXT = 'S' then
           STATE := sCS ;
        else
           STATE := s ;
        end if ;
     end case ;
    end APPEND ;

  function MATCHED ( STATE: in STATETYPE ) return BOOLEAN is
    begin
     return STATE = sCSCI ;
    end MATCHED ;
end MATCHCSCI ;
