Commit 61e85596 authored by Akim Demaille's avatar Akim Demaille
Browse files

2006-08-04 Akim Demaille <akim@lrde.epita.fr>

	Many Doxygen fixes.
	Basically:
	- declare the macros it has to expand to do its job
	- use the same parameter names in declarations and implementations

	* include/vaucanson/misc/iomanip.hh: Fix @param/@arg inversion.
	* include/vaucanson/algebra/implementation/semiring/rational_number.hh,
	* include/vaucanson/algebra/implementation/semiring/rational_number.hxx:
	Make macro uses more local.
	(min, max): Declare them inline, as per the implementation file.
	* include/vaucanson/algebra/concept/series_base.hh,
	* include/vaucanson/algebra/concept/series_base.hxx:
	Use Self or S consistently between declaration and implementation.
	Formatting changes.
	* include/vaucanson/algebra/concept/alphabets_base.hh,
	* include/vaucanson/algebra/concept/alphabets_base.hxx:
	Ditto.
	* include/vaucanson/xml/xml_converter.hh,
	* include/vaucanson/xml/xml_chooser.hxx,
	* include/vaucanson/xml/xml_chooser.hh: 
	Name the formal arguments consistently with the implementation.
	* include/vaucanson/xml/node.hh,
	* include/vaucanson/xml/node.hxx: Likewise.
	Use macros more locally.
	Sort uses.
	Undefine where defined (not in the included file).
	* include/vaucanson/xml/xml_converter.hxx: Use the local typedefs
	instead of full length definitions.
	* include/vaucanson/xml/tools.hh, include/vaucanson/xml/tools.hxx:
	Qualify the @file, there is another tools.*.
	Document in the hh file, not the hxx.
	Name the formal arguments.
	* include/vaucanson/design_pattern/element_ops.hxx:
	Define operators as static, consistently with the declarations.
	Formatting changes.
	Use consistently the same formal argument names.
	* include/vaucanson/contexts/automaton_functions.thxx,
	* include/vaucanson/contexts/transducer_functions.thxx,
	* include/vaucanson/contexts/fmp_transducer_functions.thxx,
	* include/vaucanson/algorithms/normalized_composition.hxx:
	Don't use Doxygen comments when not talking to it.
	* include/vaucanson/algorithms/evaluation_fmp.hh: 
	Remove incomplete doc.
	* include/vaucanson/algorithms/normalized_composition.hh:
	Remove the documentation of imaginary arguments.
	* include/vaucanson/algorithms/eps_removal.hh:
	Update the doc to the use of direction_type.
	* include/vaucanson/algorithms/invert.hh,
	* include/vaucanson/algorithms/invert.hxx: Move most of the
	includes from the hh to the hxx.
	Formatting changes.
	Fix the CPP guards.
	* include/vaucanson/automata/implementation/graph.hh:
	Formatting changes.
	* include/vaucanson/automata/concept/handlers.hxx:
	Ditto.
	Remove useless includes.

	* doc/Makefile.am: Put ref in srcdir.
	Stop doing/shipping/installing ref.tar.gz.
	* doc/NEWS.txt: Update.
	* doc/doc.mk: Use an intermediate temp file.
	* doc/doc.doxy.in (EXPAND_AS_DEFINED): Define.
	* doc/manual/developer.tex: More dev guide.
 
	* include/vaucanson/algorithms/forward_realtime.hxx,
	* include/vaucanson/algorithms/eps_removal.hxx: Aesthetical changes.
parent fcf84adb
2006-08-04 Akim Demaille <akim@lrde.epita.fr>
Many Doxygen fixes.
Basically:
- declare the macros it has to expand to do its job
- use the same parameter names in declarations and implementations
* include/vaucanson/misc/iomanip.hh: Fix @param/@arg inversion.
* include/vaucanson/algebra/implementation/semiring/rational_number.hh,
* include/vaucanson/algebra/implementation/semiring/rational_number.hxx:
Make macro uses more local.
(min, max): Declare them inline, as per the implementation file.
* include/vaucanson/algebra/concept/series_base.hh,
* include/vaucanson/algebra/concept/series_base.hxx:
Use Self or S consistently between declaration and implementation.
Formatting changes.
* include/vaucanson/algebra/concept/alphabets_base.hh,
* include/vaucanson/algebra/concept/alphabets_base.hxx:
Ditto.
* include/vaucanson/xml/xml_converter.hh,
* include/vaucanson/xml/xml_chooser.hxx,
* include/vaucanson/xml/xml_chooser.hh:
Name the formal arguments consistently with the implementation.
* include/vaucanson/xml/node.hh,
* include/vaucanson/xml/node.hxx: Likewise.
Use macros more locally.
Sort uses.
Undefine where defined (not in the included file).
* include/vaucanson/xml/xml_converter.hxx: Use the local typedefs
instead of full length definitions.
* include/vaucanson/xml/tools.hh, include/vaucanson/xml/tools.hxx:
Qualify the @file, there is another tools.*.
Document in the hh file, not the hxx.
Name the formal arguments.
* include/vaucanson/design_pattern/element_ops.hxx:
Define operators as static, consistently with the declarations.
Formatting changes.
Use consistently the same formal argument names.
* include/vaucanson/contexts/automaton_functions.thxx,
* include/vaucanson/contexts/transducer_functions.thxx,
* include/vaucanson/contexts/fmp_transducer_functions.thxx,
* include/vaucanson/algorithms/normalized_composition.hxx:
Don't use Doxygen comments when not talking to it.
* include/vaucanson/algorithms/evaluation_fmp.hh:
Remove incomplete doc.
* include/vaucanson/algorithms/normalized_composition.hh:
Remove the documentation of imaginary arguments.
* include/vaucanson/algorithms/eps_removal.hh:
Update the doc to the use of direction_type.
* include/vaucanson/algorithms/invert.hh,
* include/vaucanson/algorithms/invert.hxx: Move most of the
includes from the hh to the hxx.
Formatting changes.
Fix the CPP guards.
* include/vaucanson/automata/implementation/graph.hh:
Formatting changes.
* include/vaucanson/automata/concept/handlers.hxx:
Ditto.
Remove useless includes.
* doc/Makefile.am: Put ref in srcdir.
Stop doing/shipping/installing ref.tar.gz.
* doc/NEWS.txt: Update.
* doc/doc.mk: Use an intermediate temp file.
* doc/doc.doxy.in (EXPAND_AS_DEFINED): Define.
* doc/manual/developer.tex: More dev guide.
* include/vaucanson/algorithms/forward_realtime.hxx,
* include/vaucanson/algorithms/eps_removal.hxx: Aesthetical changes.
2006-08-03 Michal Cadilhac <michael.cadilhac@lrde.epita.fr>
* include/vaucanson/algebra/implementation/series/krat_exp_parser.hxx:
......
......@@ -16,26 +16,32 @@ include $(srcdir)/doc.mk
SUBDIRS = makefiles manual xml
dist_doc_DATA = ref.tar.gz
ref: doc.doxy.in
rm -rf ref
## ----------------------- ##
## Doxygen documentation. ##
## ----------------------- ##
all: $(srcdir)/ref
$(srcdir)/ref: doc.doxy.in
rm -rf ref $(srcdir)/ref
mkdir -p ref
$(MAKE) $(AM_MAKEFLAGS) doc.doxy
$(DOXYGEN) doc.doxy
mv ref $(srcdir)
ref.tar.gz: doc.doxy.in
$(MAKE) $(AM_MAKEFLAGS) ref
$(TAR) -czf $@ `test -d ref || echo '$(srcdir)/'`ref
install-data-local:
rm -rf $(DESTDIR)$(htmldir)/ref
$(mkdir_p) $(DESTDIR)$(htmldir)
cp -r $(srcdir)/ref $(DESTDIR)$(htmldir)
dist_pdf_DATA = README.pdf FAQ.pdf NEWS.pdf
EXTRA_DIST = README.tex FAQ.tex NEWS.tex \
share
MAINTAINERCLEANFILES = $(dist_doc_DATA) $(dist_pdf_DATA)
MAINTAINERCLEANFILES = $(dist_pdf_DATA)
maintainer-clean-local:
rm -rf ref
rm -rf ref $(srcdir)/ref
## ---------------------------- ##
## Installing on LRDE servers. ##
......
......@@ -10,6 +10,15 @@ This document describes major updates to the Vaucanson_ project.
Vaucanson 1.1
=============
- Documentation
+ The Doxygen documentation is now installed expanded, rather than
compressed.
Vaucanson 1.0, July 28th, 2006
==============================
......
# doc.doxy.in: this file is part of the Vaucanson project.
#
# Vaucanson, a generic library for finite state machines.
#
# Copyright (C) 2004, 2006 The Vaucanson Group.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# The complete GNU General Public Licence Notice can be found as the
# `COPYING' file in the root directory.
#
# The Vaucanson Group consists of people listed in the `AUTHORS' file.
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
......@@ -24,6 +40,7 @@ ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
SUBGROUPING = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
......@@ -48,15 +65,17 @@ GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = YES
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = NO
WARN_IF_DOC_ERROR = YES
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
......@@ -74,6 +93,7 @@ EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
......@@ -83,12 +103,14 @@ STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
......@@ -109,6 +131,7 @@ DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
......@@ -124,6 +147,7 @@ PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
LATEX_BATCHMODE = YES
LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
......@@ -133,6 +157,7 @@ COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
......@@ -140,6 +165,7 @@ GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
......@@ -148,10 +174,12 @@ XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
......@@ -159,18 +187,72 @@ GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
# Macros found in design_pattern/elements_ops.hxx,
# automata/implementation/kind_adapter.hh, xml/node.hxx, xml/node.hh,
# graph.hh, graph.hxx, automata/implementation/transpose_view.hh,
# algebra/implementation/semiring/rational_number.hh.
EXPAND_AS_DEFINED = \
TParmFMP TParam AUTtype FMPtype \
\
ELEMENT_OP_PROTO_SYM \
ELEMENT_OP_PROTO_LEFT_FOREIGN \
ELEMENT_OP_PROTO_RIGHT_FOREIGN \
DELEGATE_SYM \
DELEGATE_LEFT_FOREIGN \
DELEGATE_RIGHT_FOREIGN \
BOOLEAN_DELEGATION \
BOOLEAN_CANONICAL_DELEGATION \
ELEMENT_OPERATOR \
\
ADAPT_ADD_LETTER_TRANSITION_TO_SERIES_LABEL \
ADAPT_LETTER_OF_TO_SERIES_LABEL \
ADAPT_WORD_OF_TO_SERIES_LABEL \
ADAPT_ADD_SERIE_TRANSITION_TO_LETTERS_LABEL \
ADAPT_WORD_OF_TO_LETTERS_LABEL \
ADAPT_SERIE_OF_TO_LETTERS_LABEL \
\
PROCESS_NODE \
PROCESS_ROOT_NODE \
PROCESS_TYPE_NODE \
\
CREATE_CLASSNODE \
CREATE_PARAM_CLASSNODE \
TParm \
TParmFMP \
AUTtype \
TRANStype \
FMPtype \
CREATE_SPEC_TYPE_NODE \
CREATE_SPEC_PARAM_NODE \
register_in_factory \
register_all_factory \
\
DECLARE_DELTA_FUNCTION \
DECLARE_DELTAF_BOOL_FUNCTION \
DECLARE_DELTAF_FUNCTION \
\
TParam GClass \
\
AutoType \
\
RATIONAL_NUMBER_OPERATOR \
RATIONAL_NUMBER_IN_PLACE_OPERATOR
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
......@@ -179,6 +261,7 @@ GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
......@@ -201,7 +284,12 @@ MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 0
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
# Local Variables:
# mode: Makefile
# End:
......@@ -16,10 +16,12 @@
# because we actually also provide the tex output, so in fact the path
# has the same length: tex -> html.
%.html: %.txt
$(RST2HTML) --halt=warning --input-encoding=iso-8859-1 $< >$@
$(RST2HTML) --halt=warning --input-encoding=iso-8859-1 $< >$@.tmp
mv $@.tmp $@
%.tex: %.txt
$(RST2LATEX) --halt=warning --input-encoding=iso-8859-1 $< >$@
$(RST2LATEX) --halt=warning --input-encoding=iso-8859-1 $< >$@.tmp
mv $@.tmp $@
share_dir = $(top_srcdir)/doc/share
# Cannot factor here because Automake needs to be able to read
......
......@@ -4,6 +4,21 @@ The chapter is work in progress. It is not meant for user of the
\Vauc library, but to developer and contributor who wish to include
code in \Vauc.
\section{Tools}
We use a number of tools during the development, so called
\Index{\dfn{maintainer tools}} because they are not required by the
end user.
\begin{description}
\item[Autoconf] Generates \command{configure} which probes the user
system to configure the compilation.
\item[Doxygen] Reference documentation generator. Available as
\code{doxygen} in most package systems.
\item[rst2latex, rst2html] These tools are used to convert
reStructuredText into more common formats. Available in the
DarwinPorts as \code{py-docutils}.
\end{description}
\section{Contributing Code}
\label{sec:contributing-code}
......@@ -79,6 +94,28 @@ Until this is written, please refer to
Emacs users should use the indentation style of \file{data/vaucanson.el}.
\paragraph{Be extremely conservative with header inclusions}
Do not include something that is not needed \strong{by the file
itself}. Do not include in a \file{*.hh} something that is required
by the \file{*.hxx} file itself.
\paragraph{Document in the \file{*.hh}}
Do not document in the implementation files, but in the declaration
files. Unless, of course, the function is private and not
``exported''.
\paragraph{Use the same signature in the declaration and in the
implementation}
It's a bad idea not to follow the same name on both sides, and it
confuses the reader. Even worse is not giving names to the argument
in the declarations, giving the impression that the argument is
ignored, while using it for real in the implementation.
Keep also the same template parameter names.
Inconsistency confuses users, peer developers, and... Doxygen too.
\subsubsection{Includes}
\index{\#include}
......
......@@ -2,7 +2,7 @@
//
// Vaucanson, a generic library for finite state machines.
//
// Copyright (C) 2001, 2002, 2003, 2004, 2005 The Vaucanson Group.
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 The Vaucanson Group.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
......@@ -140,13 +140,13 @@ namespace vcsn {
letter_t choose() const;
/// Select a random letter in all the possible letters in letter_t.
letter_t random_letter() const;
letter_t random_letter() const;
/// Retrieve the number of letters in the alphabet.
size_t size() const;
size_t size() const;
/// Retrieve the maximum number of letters the alphabet can contain.
size_t max_size() const;
size_t max_size() const;
/// Test for matching letters modulo the alphabet meta-symbols.
bool letter_equality(letter_t, letter_t) const;
......
......@@ -2,7 +2,7 @@
//
// Vaucanson, a generic library for finite state machines.
//
// Copyright (C) 2001, 2002, 2003, 2004 The Vaucanson Group.
// Copyright (C) 2001, 2002, 2003, 2004, 2006 The Vaucanson Group.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
......@@ -134,11 +134,11 @@ namespace vcsn {
return *it;
}
template <class Self, typename T>
typename algebra::alphabet_traits<Self, T>::letter_t
MetaElement<algebra::AlphabetSetBase<Self>, T>::random_letter() const
template <class S, typename T>
typename algebra::alphabet_traits<S, T>::letter_t
MetaElement<algebra::AlphabetSetBase<S>, T>::random_letter() const
{
return misc::random::generate<typename algebra::alphabet_traits<Self, T>::letter_t>();
return misc::random::generate<typename algebra::alphabet_traits<S, T>::letter_t>();
}
template<typename S, typename T>
......
......@@ -100,9 +100,9 @@ namespace vcsn {
: dynamic_traits<algebra::SemiringBase<Self> >
{};
template<typename S>
struct virtual_types<algebra::SeriesBase<S> >
: virtual_types<algebra::SemiringBase<S> >
template<typename Self>
struct virtual_types<algebra::SeriesBase<Self> >
: virtual_types<algebra::SemiringBase<Self> >
{
typedef undefined_type monoid_t;
typedef undefined_type semiring_t;
......@@ -201,17 +201,22 @@ namespace vcsn {
/** @} */
/** @} */
/*------.
| Ops. |
`------*/
template <typename S, typename T>
bool
op_is_finite_app(const algebra::SeriesBase<S>& s, const T& t);
template <typename S, typename T>
typename MetaElement<algebra::SeriesBase<S>, T>::monoid_elt_t
op_choose_from_supp(const algebra::SeriesBase<S>& s, const T& t);
template <class S, class T>
Element<S, T> op_series_choose(const algebra::SeriesBase<S>& s, SELECTOR(T));
Element<S, T>
op_series_choose(const algebra::SeriesBase<S>& s, SELECTOR(T));
template <typename S, typename T, typename M, typename W>
void
......@@ -228,10 +233,12 @@ namespace vcsn {
const algebra::FreeMonoidBase<M>&);
template <class S, class T>
T op_convert(const algebra::SeriesBase<S>& s, SELECTOR(T), const T& src_);
T
op_convert(const algebra::SeriesBase<S>& s, SELECTOR(T), const T& src_);
template <class S, class T, class U>
T op_convert(const algebra::SeriesBase<S>&, SELECTOR(T), U& src_);
T
op_convert(const algebra::SeriesBase<S>&, SELECTOR(T), U& src_);
} // vcsn
......
......@@ -72,79 +72,84 @@ namespace vcsn {
| MetaElement<SeriesBase<Self>, T> |
`---------------------------------*/
template<typename S, typename T>
typename MetaElement<algebra::SeriesBase<S>, T>::semiring_elt_value_t
MetaElement<algebra::SeriesBase<S>, T>::get(const monoid_elt_value_t& m) const
template<typename Self, typename T>
typename MetaElement<algebra::SeriesBase<Self>, T>::semiring_elt_value_t
MetaElement<algebra::SeriesBase<Self>, T>::get(const monoid_elt_value_t& m) const
{
// assertion(structure().monoid().contains(m));
return op_series_get(this->structure(), this->value(), m);
}
template<typename S, typename T>
typename MetaElement<algebra::SeriesBase<S>, T>::semiring_elt_t
MetaElement<algebra::SeriesBase<S>, T>::get(const monoid_elt_t& m) const
template<typename Self, typename T>
typename MetaElement<algebra::SeriesBase<Self>, T>::semiring_elt_t
MetaElement<algebra::SeriesBase<Self>, T>::get(const monoid_elt_t& m) const
{
return semiring_elt_t(this->structure().semiring(), get(m.value()));
}
template<typename S, typename T>
template<typename Self, typename T>
void
MetaElement<algebra::SeriesBase<S>, T>::assoc(const monoid_elt_value_t& m,
const semiring_elt_value_t& w)
MetaElement<algebra::SeriesBase<Self>, T>::assoc(const monoid_elt_value_t& m,
const semiring_elt_value_t& w)
{
// assertion(structure().monoid().contains(m));
// assertion(structure().semiring().contains(w));
return op_series_set(this->structure(), this->value(), m, w);
}
template<typename S, typename T>
template<typename Self, typename T>
void
MetaElement<algebra::SeriesBase<S>, T>::assoc(const monoid_elt_t& m,
const semiring_elt_t& w)
MetaElement<algebra::SeriesBase<Self>, T>::assoc(const monoid_elt_t& m,
const semiring_elt_t& w)
{
assoc(m.value(), w.value());
}
template<typename S, typename T>
template<typename Self, typename T>
bool
MetaElement<algebra::SeriesBase<S>, T>::is_finite_app() const
MetaElement<algebra::SeriesBase<Self>, T>::is_finite_app() const
{
return op_is_finite_app(this->structure(), this->value());
}
template <typename S, typename T>
typename MetaElement<algebra::SeriesBase<S>, T>::monoid_elt_t
MetaElement<algebra::SeriesBase<S>, T>::choose_from_supp() const
template <typename Self, typename T>
typename MetaElement<algebra::SeriesBase<Self>, T>::monoid_elt_t
MetaElement<algebra::SeriesBase<Self>, T>::choose_from_supp() const
{
return
typename MetaElement<algebra::SeriesBase<S>, T>::monoid_elt_t
typename MetaElement<algebra::SeriesBase<Self>, T>::monoid_elt_t
(this->structure().monoid(),
op_choose_from_supp(this->structure(), this->value()));
}
template <typename S, typename T>
template <typename Self, typename T>
void
MetaElement<algebra::SeriesBase<S>, T>::transpose()
MetaElement<algebra::SeriesBase<Self>, T>::transpose()
{
op_in_transpose(this->structure(), this->value());
}
template <typename S, typename T>
typename MetaElement<algebra::SeriesBase<S>, T>::support_t
MetaElement<algebra::SeriesBase<S>, T>::supp() const
template <typename Self, typename T>
typename MetaElement<algebra::SeriesBase<Self>, T>::support_t
MetaElement<algebra::SeriesBase<Self>, T>::supp() const
{
return op_support(this->structure(), this->value());
}
template<typename S, typename T>
MetaElement<algebra::SeriesBase<S>, T>::MetaElement()
template<typename Self, typename T>
MetaElement<algebra::SeriesBase<Self>, T>::MetaElement()
{}
template<typename S, typename T>
MetaElement<algebra::SeriesBase<S>, T>::MetaElement(const MetaElement& other) :
MetaElement<algebra::SemiringBase<S>, T>(other)
template<typename Self, typename T>
MetaElement<algebra::SeriesBase<Self>, T>::MetaElement(const MetaElement& other) :
MetaElement<algebra::SemiringBase<Self>, T>(other)
{}
/*------.
| Ops. |
`------*/
template<typename S, typename T>
bool op_is_finite_app(const algebra::SeriesBase<S>& s, const T& t)
{
......@@ -158,7 +163,8 @@ namespace vcsn {
}
template <class S, class T>
Element<S, T> op_series_choose(const algebra::SeriesBase<S>& s, SELECTOR(T))