% $Id: DEoptions.sty 574 2011-09-05 08:17:17Z herbert $
% Copyright 2011 by Herbert Voss
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
% See the file doc/licenses/LICENSE for more details.

\RequirePackage{keyval}[1997/11/10]

\def\ProcessOptionsExa{%
  \let\@tempa\@empty
  \ifx\@currext\@clsextension%
  \else
  \@for\CurrentOption:=\@classoptionslist\do{%
    \@ifundefined{KV@\@currname @\CurrentOption}%
    {}{\edef\@tempa{\@tempa,\CurrentOption,}}}%
  \fi
  \edef\@tempa{%
    \noexpand\setkeys{\@currname}{\@tempa\@ptionlist{\@currname.\@currext}}}%
  \let\exa@origkverr\KV@err%
  \ifx\@currext\@clsextension\let\KV@errx=\@gobble\fi% never mind
  \@tempa%
  \let\KV@err\exa@origkverr%
  \AtEndOfPackage{\let\@unprocessedoptions\relax}}

\def\ExecuteOptionsExa#1{\setkeys{\@currname}{#1}}
\def\DeclareOptionExa#1{\@ifnextchar[{\exa@dokv{#1}}{\exa@dokv{#1}[]}}
\long\def\exa@dokv#1[#2]#3{\define@key{\@currname}{#1}[{#2}]{#3}}

\def\exa@filterclassoptions{%
  \def\exa@filteredclassoptionslist{}
  \@for\CurrentOption:=\@classoptionslist\do{%
    \ifx\CurrentOption\@empty\else
    \@expandtwoargs\in@{=}{\CurrentOption}%
    \ifin@
    \else
    \edef\exa@filteredclassoptionslist{%
      \exa@filteredclassoptionslist,\CurrentOption}
    \fi
    \fi
  }%
  \let\@classoptionslist=\exa@filteredclassoptionslist%
}

\newcommand\defexaoption{\define@key{exa@option}}
\newcommand\setexaoption{\setkeys{exa@option}}

\endinput