%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% $Id: UseOverloading.tex,v 1.1.1.4 2004/10/04 17:25:13 nthiery Exp $
% File:		lib/DOMAINS/CATEGORY/DOC/UseOverloading.tex
% Authors:	Nicolas M. Thiéry <nthiery@users.sourceforge.net>
% Purpose:	Documentation for the category Cat::UseOverloading
% Created:	Wed Sep  3 14:48:28 2003
% License:	LGPL
% Project:	MuPAD-Combinat, http://mupad-combinat.sf.net
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{Mhelppage}{UseOverloading}{Nicolas M. Thiéry}
  [ImplState=stable,TestState=stable,DocState=stable]
%\Mproofread{...}{...}{...}

\begin{MInfo}
  \eng{helper category for domains using the conversion/overloading mechanism}
  \de{}
\end{MInfo}

\Mproofread{nthiery}{23/09/2003}{relatively complete definition; not proofread}

\begin{MIntro}
  \eng{\Mthis{} is a helper category for domains using the conversion
    and overloading mechanisms of \Mup{operators::overloaded}.}
  \de{}%
\end{MIntro}

\begin{MCatConst}
  \MCall{}
\end{MCatConst}

\begin{MCategories}
  \Mup{Cat::BaseCategory}
\end{MCategories}

\begin{MDetails}
  \eng{\Mthis{} is a purely technical category built above
    \Mex{Cat::BaseCategory} which provides some basic support for
    those domains that uses the conversion and overloading mechanisms
    of the library \Mup{operators::overloaded}.}
  \de{}%
  \eng{It redefines the constructor \Mslot{new} and the methods
    \Mslot{convert} and \Mex{convert_to} to use
    \Mup{operators::overloaded::convert}.}
  \de{}%
  \eng{It also provides a \Mslot{initDomain} method which allows super
    domains and super categories to provide initialization code
    (recall that the \Mslot{initDomain} method is a special method
    which is called automatically once by the system just after the
    creation of the domain). This is typically used for declaring new
    conversions and new signatures for overloaded operators. }
  \de{}
\end{MDetails}

\begin{MMethodDetails}{initDomain}
  \infoEng{domain initialization}
  \infoDe{}
  \call{}
  \eng{Look for \Mslot{initDomainAdd} methods in the domain itself, in
    all its super domains (as listed by \Mslot{allSuperDomains}), and
    in all its categories (as listed by \Mslot{allCategories}), and
    executes them one-by-one starting from the last one. }
  \de{}%
  \eng{This method is not intended to be called directly by the user.
    In fact, it should not be called anymore after the creation of the
    domain.}
\end{MMethodDetails}

\begin{MMethodDetails}{initDomainAdd}
  \infoEng{extra domain initialization}
  \infoDe{}
  \call{}%
  \eng{Extra code to be executed by the system after the domain is
    created. Note that this method does not follow the usual
    inheritance rules!}
\end{MMethodDetails}

\begin{MChanges}
  \version{3.0}
  \eng[New category]{\Mthis{} is a new category} %
\end{MChanges}

\end{Mhelppage}
