URL: https://svn.lrde.epita.fr/svn/oln/trunk/milena
ChangeLog:
2007-12-12 Guillaume Duhamel <guillaume.duhamel(a)lrde.epita.fr>
Add generation of user documentation.
Update creation of documentation.
* doc/Doxyfile.in,
* doc/Makefile.am: Update for generation of internal or user documentation.
* doc/Doxyfile_user.in: New template file for generate the user documentation.
Update source for distinction between the user and developper documentation.
* mln/accu/all.hh,
* mln/accu/internal/base.hh,
* mln/arith/all.hh,
* mln/border/all.hh,
* mln/canvas/all.hh,
* mln/convert/all.hh,
* mln/core/cast_image.hh,
* mln/core/concept/object.hh,
* mln/core/decorated_image.hh,
* mln/core/dpoint.hh,
* mln/core/fi_adaptor.hh,
* mln/core/image1d.hh,
* mln/core/image2d.hh,
* mln/core/image3d.hh,
* mln/core/image_if.hh,
* mln/core/image_if_interval.hh,
* mln/core/image_if_value.hh,
* mln/core/internal/box_impl.hh,
* mln/core/internal/check/image_all.hh,
* mln/core/internal/check/image_fastest.hh,
* mln/core/internal/coord_impl.hh,
* mln/core/internal/dpoints_base.hh,
* mln/core/internal/fixme.hh,
* mln/core/internal/force_exact.hh,
* mln/core/internal/image_base.hh,
* mln/core/internal/image_domain_morpher.hh,
* mln/core/internal/image_identity.hh,
* mln/core/internal/image_if_base.hh,
* mln/core/internal/image_morpher.hh,
* mln/core/internal/image_primary.hh,
* mln/core/internal/image_value_morpher.hh,
* mln/core/internal/piter_adaptor.hh,
* mln/core/internal/pixel_impl.hh,
* mln/core/internal/pixel_iterator_base.hh,
* mln/core/internal/point_iterator_base.hh,
* mln/core/internal/point_set_base.hh,
* mln/core/internal/run_image.hh,
* mln/core/internal/set_of.hh,
* mln/core/t_image.hh,
* mln/debug/all.hh,
* mln/display/all.hh,
* mln/fun/all.hh,
* mln/fun/x2x/all.hh,
* mln/fun/x2x/composed.hh,
* mln/geom/all.hh,
* mln/geom/chamfer.hh,
* mln/histo/all.hh,
* mln/io/all.hh,
* mln/io/pbm/all.hh,
* mln/io/pfm/all.hh,
* mln/io/pnm/all.hh,
* mln/labeling/all.hh,
* mln/level/all.hh,
* mln/level/approx/all.hh,
* mln/level/naive/all.hh,
* mln/level/naive/median.hh,
* mln/linear/all.hh,
* mln/logical/all.hh,
* mln/metal/all.hh,
* mln/metal/math/all.hh,
* mln/morpho/all.hh,
* mln/morpho/minus.hh,
* mln/morpho/plus.hh,
* mln/pw/image.hh,
* mln/test/all.hh,
* mln/value/all.hh,
* mln/value/float01_.hh,
* mln/value/graylevel.hh,
* mln/value/internal/convert.hh,
* mln/value/internal/encoding.hh,
* mln/value/internal/iterable_set.hh,
* mln/value/internal/value_like.hh,
* mln/value/label.hh,
* mln/value/stack.hh: Update (add command internal in Doxygen comment).
---
doc/Doxyfile.in | 1054 ------------------------------
doc/Doxyfile_user.in | 252 +++++++
doc/Makefile.am | 21
mln/accu/all.hh | 4
mln/accu/internal/base.hh | 3
mln/arith/all.hh | 4
mln/border/all.hh | 4
mln/canvas/all.hh | 2
mln/convert/all.hh | 2
mln/core/cast_image.hh | 2
mln/core/concept/object.hh | 6
mln/core/decorated_image.hh | 8
mln/core/fi_adaptor.hh | 1
mln/core/image1d.hh | 4
mln/core/image2d.hh | 3
mln/core/image3d.hh | 1
mln/core/image_if.hh | 8
mln/core/image_if_interval.hh | 7
mln/core/image_if_value.hh | 6
mln/core/internal/box_impl.hh | 16
mln/core/internal/check/image_all.hh | 4
mln/core/internal/check/image_fastest.hh | 3
mln/core/internal/coord_impl.hh | 32
mln/core/internal/dpoints_base.hh | 4
mln/core/internal/fixme.hh | 3
mln/core/internal/force_exact.hh | 17
mln/core/internal/image_base.hh | 13
mln/core/internal/image_domain_morpher.hh | 4
mln/core/internal/image_identity.hh | 4
mln/core/internal/image_if_base.hh | 12
mln/core/internal/image_morpher.hh | 7
mln/core/internal/image_primary.hh | 3
mln/core/internal/image_value_morpher.hh | 4
mln/core/internal/piter_adaptor.hh | 3
mln/core/internal/pixel_impl.hh | 6
mln/core/internal/pixel_iterator_base.hh | 2
mln/core/internal/point_iterator_base.hh | 4
mln/core/internal/point_set_base.hh | 4
mln/core/internal/run_image.hh | 3
mln/core/internal/set_of.hh | 10
mln/core/t_image.hh | 2
mln/debug/all.hh | 2
mln/display/all.hh | 4
mln/fun/all.hh | 2
mln/fun/x2x/all.hh | 2
mln/fun/x2x/composed.hh | 17
mln/geom/all.hh | 2
mln/geom/chamfer.hh | 4
mln/histo/all.hh | 2
mln/io/all.hh | 2
mln/io/pbm/all.hh | 4
mln/io/pfm/all.hh | 4
mln/io/pnm/all.hh | 2
mln/labeling/all.hh | 2
mln/level/all.hh | 4
mln/level/approx/all.hh | 12
mln/level/naive/all.hh | 4
mln/level/naive/median.hh | 2
mln/linear/all.hh | 4
mln/logical/all.hh | 4
mln/metal/all.hh | 2
mln/metal/math/all.hh | 2
mln/morpho/all.hh | 14
mln/morpho/minus.hh | 15
mln/morpho/plus.hh | 15
mln/pw/image.hh | 2
mln/test/all.hh | 2
mln/value/all.hh | 2
mln/value/float01_.hh | 1
mln/value/graylevel.hh | 4
mln/value/internal/convert.hh | 3
mln/value/internal/encoding.hh | 2
mln/value/internal/iterable_set.hh | 3
mln/value/internal/value_like.hh | 16
mln/value/label.hh | 1
mln/value/stack.hh | 2
76 files changed, 442 insertions(+), 1275 deletions(-)
Index: trunk/milena/doc/Doxyfile_user.in
===================================================================
--- trunk/milena/doc/Doxyfile_user.in (revision 0)
+++ trunk/milena/doc/Doxyfile_user.in (revision 1606)
@@ -0,0 +1,252 @@
+# Doxyfile 1.5.1
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME = "Milena (@PACKAGE_NAME@)"
+PROJECT_NUMBER = "@PACKAGE_VERSION@ @ID@ User Doc"
+OUTPUT_DIRECTORY = ./user/
+CREATE_SUBDIRS = YES
+OUTPUT_LANGUAGE = English
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = YES
+ABBREVIATE_BRIEF =
+ALWAYS_DETAILED_SEC = YES
+INLINE_INHERITED_MEMB = YES
+FULL_PATH_NAMES = YES
+STRIP_FROM_PATH = @top_srcdir@/milena \
+ @top_builddir@/milena
+STRIP_FROM_INC_PATH =
+SHORT_NAMES = NO
+JAVADOC_AUTOBRIEF = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP = NO
+INHERIT_DOCS = YES
+SEPARATE_MEMBER_PAGES = NO
+TAB_SIZE = 8
+ALIASES =
+OPTIMIZE_OUTPUT_FOR_C = NO
+OPTIMIZE_OUTPUT_JAVA = NO
+BUILTIN_STL_SUPPORT = YES
+DISTRIBUTE_GROUP_DOC = NO
+SUBGROUPING = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL = NO
+EXTRACT_PRIVATE = NO
+EXTRACT_STATIC = NO
+EXTRACT_LOCAL_CLASSES = NO
+EXTRACT_LOCAL_METHODS = NO
+HIDE_UNDOC_MEMBERS = YES
+HIDE_UNDOC_CLASSES = YES
+HIDE_FRIEND_COMPOUNDS = YES
+HIDE_IN_BODY_DOCS = YES
+INTERNAL_DOCS = NO
+CASE_SENSE_NAMES = YES
+HIDE_SCOPE_NAMES = NO
+SHOW_INCLUDE_FILES = YES
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = YES
+SORT_BRIEF_DOCS = NO
+SORT_BY_SCOPE_NAME = NO
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS =
+MAX_INITIALIZER_LINES = 30
+SHOW_USED_FILES = YES
+SHOW_DIRECTORIES = YES
+FILE_VERSION_FILTER =
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET = YES
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = YES
+WARN_IF_DOC_ERROR = YES
+WARN_NO_PARAMDOC = NO
+WARN_FORMAT = "$file:$line: $text"
+WARN_LOGFILE =
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT = @top_srcdir@/milena \
+ @top_builddir@/milena
+FILE_PATTERNS = *.cc \
+ *.hh \
+ *.hxx \
+ *.hcc
+RECURSIVE = YES
+EXCLUDE = @top_srcdir@/milena/sandbox
+EXCLUDE_SYMLINKS = YES
+EXCLUDE_PATTERNS = *spe.hh
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS =
+EXAMPLE_RECURSIVE = NO
+IMAGE_PATH =
+INPUT_FILTER =
+FILTER_PATTERNS =
+FILTER_SOURCE_FILES = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+STRIP_CODE_COMMENTS = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION = YES
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS = NO
+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
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = html
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_ALIGN_MEMBERS = YES
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+BINARY_TOC = NO
+TOC_EXPAND = NO
+DISABLE_INDEX = NO
+ENUM_VALUES_PER_LINE = 4
+GENERATE_TREEVIEW = YES
+TREEVIEW_WIDTH = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX = NO
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4wide
+EXTRA_PACKAGES =
+LATEX_HEADER =
+PDF_HYPERLINKS = YES
+USE_PDFLATEX = YES
+LATEX_BATCHMODE = YES
+LATEX_HIDE_INDICES = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN = NO
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_LINKS = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML = NO
+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
+#---------------------------------------------------------------------------
+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 = YES
+SEARCH_INCLUDES = YES
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED = "mlc_unqualif(T)=typename mln::metal::unqualif<T>::ret" \
+ "mln_piter(T)=typename T::piter" \
+ "mln_fwd_piter(T)=typename T::fwd_piter" \
+ "mln_bkd_piter(T)=typename T::bkd_piter" \
+ "mln_qiter(T)=typename T::qiter" \
+ "mln_fwd_qiter(T)=typename T::fwd_qiter" \
+ "mln_bkd_qiter(T)=typename T::bkd_qiter" \
+ "mln_niter(T)=typename T::niter" \
+ "mln_fwd_niter(T)=typename T::fwd_niter" \
+ "mln_bkd_niter(T)=typename T::bkd_niter" \
+ "mln_viter(T)=typename T::viter" \
+ "mln_fwd_viter(T)=typename T::fwd_viter" \
+ "mln_bkd_viter(T)=typename T::bkd_viter" \
+ "mln_result(T)=typename T::result" \
+ "mln_enc(T)=typename T::enc" \
+ "mln_value(T)=typename T::value" \
+ "mln_qlf_value(T)=typename T::qlf_value" \
+ "mln_pset(T)=typename T::pset" \
+ "mln_sum(T)=typename mln::value::props<T>::sum" \
+ "mln_vset(T)=typename T::vset" \
+ "mln_rvalue(T)=typename T::rvalue" \
+ "mln_lvalue(T)=typename T::lvalue" \
+ "mln_mesh(T)=typename T::mesh" \
+ "mln_coord(T)=typename T::coord" \
+ "mln_point(T)=typename T::point" \
+ "mln_dpoint(T)=typename T::dpoint"
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+PERL_PATH = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS = YES
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = YES
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+GROUP_GRAPHS = YES
+UML_LOOK = NO
+TEMPLATE_RELATIONS = YES
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+CALL_GRAPH = NO
+CALLER_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DOT_IMAGE_FORMAT = png
+DOT_PATH =
+DOTFILE_DIRS =
+MAX_DOT_GRAPH_DEPTH = 1000
+DOT_TRANSPARENT = NO
+DOT_MULTI_TARGETS = NO
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
Index: trunk/milena/doc/Doxyfile.in
===================================================================
--- trunk/milena/doc/Doxyfile.in (revision 1605)
+++ trunk/milena/doc/Doxyfile.in (revision 1606)
@@ -1,1048 +1,191 @@
-# Doxyfile 1.5.2 -*- Makefile -*-
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
+# Doxyfile 1.5.1
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the
-# config file that follow. The default is UTF-8 which is also the
-# encoding used for all text before the first occurrence of this
-# tag. Doxygen uses libiconv (or the iconv built into libc) for the
-# transcoding. See http://www.gnu.org/software/libiconv for the list
-# of possible encodings.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
PROJECT_NAME = "Milena (@PACKAGE_NAME@)"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
PROJECT_NUMBER = "@PACKAGE_VERSION@ @ID@"
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
OUTPUT_DIRECTORY = .
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
CREATE_SUBDIRS = YES
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
-# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
-# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
-# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-
OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will
-# prepend the brief description of a member or function before the
-# detailed description. Note: if both HIDE_UNDOC_MEMBERS and
-# BRIEF_MEMBER_DESC are set to NO, the brief descriptions will be
-# completely suppressed.
-
REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
ALWAYS_DETAILED_SEC = YES
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
INLINE_INHERITED_MEMB = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
FULL_PATH_NAMES = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
STRIP_FROM_PATH = @top_srcdir@/milena \
@top_builddir@/milena
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explicit @brief command for a brief description.
-
JAVADOC_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
DETAILS_AT_TOP = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of
-# Java sources only. Doxygen will then generate output that is more
-# tailored for Java. For instance, namespaces will be presented as
-# packages, qualified scopes will look different, etc.
-
OPTIMIZE_OUTPUT_JAVA = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do
-# not want to include (a tag file for) the STL sources as input, then
-# you should set this tag to YES in order to let doxygen match
-# functions declarations and definitions whose arguments contain STL
-# classes (e.g. func(std::string); v.s. func(std::string) {}). This
-# also make the inheritance and collaboration diagrams that involve
-# STL classes more complete and accurate.
-
BUILTIN_STL_SUPPORT = YES
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT = NO
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
SUBGROUPING = YES
-
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
EXTRACT_PRIVATE = YES
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
EXTRACT_LOCAL_METHODS = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
+INTERNAL_DOCS = YES
CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
SORT_BRIEF_DOCS = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple
-# directories then setting the SHOW_DIRECTORIES tag to YES will show
-# the directory hierarchy in the documentation. The default is NO.
-
SHOW_DIRECTORIES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or
-# script that doxygen should invoke to get the current version for
-# each file (typically from the version control system). Doxygen will
-# invoke the program by executing (via popen()) the command <command>
-# <input-file>, where <command> is the value of the
-# FILE_VERSION_FILTER tag, and <input-file> is the name of an input
-# file provided by doxygen. Whatever the program writes to standard
-# output is used as the file version. See the manual for examples.
-
FILE_VERSION_FILTER =
-
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
QUIET = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
WARN_LOGFILE =
-
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories
-# that contain documented source files. You may enter file names like
-# "myfile.cpp" or directories like "/usr/src/myproject". Separate the
-# files or directories with spaces.
-
INPUT = @top_srcdir@/milena \
@top_builddir@/milena
-
-# This tag can be used to specify the character encoding of the source
-# files that doxygen parses. Internally doxygen uses the UTF-8
-# encoding, which is also the default input encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible
-# encodings.
-
-INPUT_ENCODING = ISO-8859-1
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
-
FILE_PATTERNS = *.cc \
*.hh \
*.hxx \
*.hcc
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
EXCLUDE = @top_srcdir@/milena/sandbox
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
EXCLUDE_SYMLINKS = YES
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
EXCLUDE_PATTERNS = *spe.hh
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol
-# names (namespaces, classes, functions, etc.) that should be excluded
-# from the output. The symbol name can be a fully qualified name, a
-# word, or if the wildcard * is used, a substring. Examples:
-# ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
FILTER_SOURCE_FILES = NO
-
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files
-# will be generated. Documented entities will be cross-referenced with
-# these sources. Note: To get rid of all source code in the generated
-# output, make sure also VERBATIM_HEADERS is set to NO.
-
SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
-
REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
VERBATIM_HEADERS = YES
-
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
ALPHABETICAL_INDEX = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
IGNORE_PREFIX =
-
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
GENERATE_TREEVIEW = YES
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
TREEVIEW_WIDTH = 250
-
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
PDF_HYPERLINKS = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
LATEX_BATCHMODE = YES
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
LATEX_HIDE_INDICES = NO
-
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
RTF_EXTENSIONS_FILE =
-
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
MAN_LINKS = NO
-
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
XML_PROGRAMLISTING = YES
-
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
GENERATE_AUTOGEN_DEF = NO
-
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
PERLMOD_MAKEVAR_PREFIX =
-
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
MACRO_EXPANSION = YES
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
EXPAND_ONLY_PREDEF = YES
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED = \
- "mlc_unqualif(T)=typename mln::metal::unqualif<T>::ret" \
+PREDEFINED = "mlc_unqualif(T)=typename mln::metal::unqualif<T>::ret" \
"mln_piter(T)=typename T::piter" \
"mln_fwd_piter(T)=typename T::fwd_piter" \
"mln_bkd_piter(T)=typename T::bkd_piter" \
@@ -1068,231 +211,42 @@
"mln_coord(T)=typename T::coord" \
"mln_point(T)=typename T::point" \
"mln_dpoint(T)=typename T::dpoint"
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES
-# then this tag can be used to specify a list of macro names that
-# should be expanded. The macro definition that is found in the
-# sources will be used. Use the PREDEFINED tag if you want to use a
-# different macro definition.
-
EXPAND_AS_DEFINED =
-
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
SKIP_FUNCTION_MACROS = YES
-
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
PERL_PATH = /usr/bin/perl
-
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using
-# the \msc command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert
-# it in the documentation. The MSCGEN_PATH tag allows you to specify
-# the directory where the mscgen tool resides. If left empty the tool
-# is assumed to be found in the default search path.
-
-MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
HAVE_DOT = YES
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
TEMPLATE_RELATIONS = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a caller dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-
CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen will always
-# show the root nodes and its direct children regardless of this setting.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, which results in a white background.
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-
+MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
DOT_CLEANUP = YES
-
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
SEARCHENGINE = NO
Index: trunk/milena/doc/Makefile.am
===================================================================
--- trunk/milena/doc/Makefile.am (revision 1605)
+++ trunk/milena/doc/Makefile.am (revision 1606)
@@ -1,19 +1,29 @@
DOXYGEN = doxygen
-.PHONY: doc html
+.PHONY: doc user-doc internal-doc html html_user
doc: html
+internal-doc: html
+
+user-doc: html_user
+
+
html-local: Doxyfile
$(DOXYGEN)
+html_user: Doxyfile_user
+ $(DOXYGEN)
+
+
edit = sed -e "s|@ID@|$$Id|" \
-e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \
-e 's,@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g' \
-e 's,@top_builddir\@,$(top_builddir),g' \
-e 's,@top_srcdir\@,$(top_srcdir),g'
-EXTRA_DIST = Doxyfile.in
+EXTRA_DIST = Doxyfile.in \
+ Doxyfile_user.in
CLEANFILES = Doxyfile
# Sed is used to generate Doxyfile from Doxyfile.in instead of
# configure, because the former is way faster than the latter.
@@ -23,5 +33,10 @@
Id=`grep '^\$$Id' $(top_srcdir)/ChangeLog`; \
$(edit) $(srcdir)/Doxyfile.in >Doxyfile
+Doxyfile_user: $(top_srcdir)/ChangeLog $(srcdir)/Doxyfile_user.in
+ Id=`grep '^\$$Id' $(top_srcdir)/ChangeLog`; \
+ $(edit) $(srcdir)/Doxyfile_user.in >Doxyfile
+
clean-local:
- rm -rf html latex
+ rm -rf html latex user
+
Index: trunk/milena/mln/histo/all.hh
===================================================================
--- trunk/milena/mln/histo/all.hh (revision 1605)
+++ trunk/milena/mln/histo/all.hh (revision 1606)
@@ -40,7 +40,7 @@
/// Namespace of histograms.
namespace histo
{
- /// Implementation namespace of histo namespace.
+ /// \internal Implementation namespace of histo namespace.
namespace impl {}
}
Index: trunk/milena/mln/debug/all.hh
===================================================================
--- trunk/milena/mln/debug/all.hh (revision 1605)
+++ trunk/milena/mln/debug/all.hh (revision 1606)
@@ -40,7 +40,7 @@
/// Namespace of routines that help to debug.
namespace debug
{
- /// Implementation namespace of debug namespace.
+ /// \internal Implementation namespace of debug namespace.
namespace impl {}
}
Index: trunk/milena/mln/core/decorated_image.hh
===================================================================
--- trunk/milena/mln/core/decorated_image.hh (revision 1605)
+++ trunk/milena/mln/core/decorated_image.hh (revision 1606)
@@ -47,6 +47,7 @@
namespace internal
{
+ /// \internal
template <typename I, typename E>
struct decorated_image_impl_
{
@@ -54,12 +55,14 @@
void write_(const mln_psite(I)& p, const mln_value(I)& v);
};
+ /// \internal
template <typename I, typename E>
struct decorated_image_impl_< const I, E >
{
typedef mln::value::proxy<const E> lvalue;
};
+ /// \internal
template <typename I, typename D>
struct data_< decorated_image<I,D> >
{
@@ -130,8 +133,7 @@
namespace internal
{
- // internal::data_< decorated_image<I,S> >
-
+ // \internal internal::data_< decorated_image<I,S> >
template <typename I, typename D>
inline
data_< decorated_image<I,D> >::data_(I& ima, const D& deco)
@@ -170,7 +172,7 @@
namespace internal
{
-
+ /// \internal
template <typename I, typename E>
inline
void
Index: trunk/milena/mln/core/image_if.hh
===================================================================
--- trunk/milena/mln/core/image_if.hh (revision 1605)
+++ trunk/milena/mln/core/image_if.hh (revision 1606)
@@ -49,7 +49,7 @@
template <typename I, typename F> struct image_if;
- // internal::data_.
+ /// \internal internal::data_.
namespace internal
{
@@ -120,20 +120,20 @@
/// ima | f creates an image_if with the image ima and the function
/// f.
- /// {{{
template <typename I, typename F>
image_if<I,F>
operator | (Image<I>& ima, const Function_p2b<F>& f);
+ /// ima | f creates an image_if with the image ima and the function
+ /// f.
template <typename I, typename F>
image_if<const I,F>
operator | (const Image<I>& ima, const Function_p2b<F>& f);
- /// }}}
# ifndef MLN_INCLUDE_ONLY
- // internal::data_
+ /// \internal internal::data_
namespace internal
{
Index: trunk/milena/mln/core/internal/force_exact.hh
===================================================================
--- trunk/milena/mln/core/internal/force_exact.hh (revision 1605)
+++ trunk/milena/mln/core/internal/force_exact.hh (revision 1606)
@@ -32,7 +32,6 @@
*
* \brief Definition of a violent cast for internal use only.
*
- * \internal
*/
@@ -43,16 +42,12 @@
namespace internal
{
- /*! \brief Violent cast.
- *
- * \internal
- *
- * This cast is an alternative to the mln::exact cast. It is used
- * for objects than do not derive from mln::Object.
- *
- * \warning Do not to use this cast!
- *
- * \see mln::exact
+ /*! \internal Violent cast.
+ * This cast is an alternative to the mln::exact cast.
+ * It is used for objects than do not derive from
+ * mln::Object.
+ * Warning Do not to use this cast!
+ * see mln::exact
*/
template <typename E, typename T>
E& force_exact(const T& ref)
Index: trunk/milena/mln/core/internal/pixel_iterator_base.hh
===================================================================
--- trunk/milena/mln/core/internal/pixel_iterator_base.hh (revision 1605)
+++ trunk/milena/mln/core/internal/pixel_iterator_base.hh (revision 1606)
@@ -45,7 +45,7 @@
{
- /*! \brief A base class for pixel iterators.
+ /*! \internal A base class for pixel iterators.
*
*/
template <typename I, typename E>
Index: trunk/milena/mln/core/internal/image_primary.hh
===================================================================
--- trunk/milena/mln/core/internal/image_primary.hh (revision 1605)
+++ trunk/milena/mln/core/internal/image_primary.hh (revision 1606)
@@ -43,9 +43,8 @@
{
- /*! \brief A base class for primary images.
+ /*! \internal A base class for primary images.
*
- * \internal
*/
template <typename S, typename E>
struct image_primary_ : public image_base_<S, E>
Index: trunk/milena/mln/core/internal/coord_impl.hh
===================================================================
--- trunk/milena/mln/core/internal/coord_impl.hh (revision 1605)
+++ trunk/milena/mln/core/internal/coord_impl.hh (revision 1606)
@@ -42,16 +42,18 @@
namespace internal
{
- // coord_impl
- /*! \brief Implementation class to equip generalized points with
+ /// \internal coord_impl
+
+
+ /* \internal Implementation class to equip generalized points with
* explicit access to their coordinates.
*
- * \internal
*/
template <unsigned n, typename C, typename E>
struct coord_impl_;
+ /// \internal
template <typename C, typename E>
struct coord_impl_<1, C, E>
{
@@ -61,6 +63,7 @@
};
+ /// \internal
template <typename C, typename E>
struct coord_impl_<2, C, E>
{
@@ -68,6 +71,7 @@
C col() const;
};
+ /// \internal
template <typename C, typename E>
struct coord_impl_<3, C, E>
{
@@ -77,11 +81,13 @@
};
- // mutable_coord_impl
+ // \internal mutable_coord_impl
+ /// \internal
template <unsigned n, typename C, typename E>
struct mutable_coord_impl_;
+ /// \internal
template <typename C, typename E>
struct mutable_coord_impl_<1, C, E>
{
@@ -89,6 +95,7 @@
C& ind();
};
+ /// \internal
template <typename C, typename E>
struct mutable_coord_impl_<2, C, E>
{
@@ -98,6 +105,7 @@
C& col();
};
+ /// \internal
template <typename C, typename E>
struct mutable_coord_impl_<3, C, E>
{
@@ -112,9 +120,9 @@
# ifndef MLN_INCLUDE_ONLY
- // coord_impl
+ // \internal coord_impl
- // 1
+ // \internal 1
template <typename C, typename E>
inline
@@ -123,7 +131,7 @@
return internal::force_exact<E>(*this)[0];
}
- // 2
+ // \internal 2
template <typename C, typename E>
inline
@@ -139,7 +147,7 @@
return internal::force_exact<E>(*this)[1];
}
- // 3
+ // \internal 3
template <typename C, typename E>
inline
@@ -163,9 +171,9 @@
}
- // mutable_coord_impl
+ // \internal mutable_coord_impl
- // 1
+ // \internal 1
template <typename C, typename E>
inline
@@ -181,7 +189,7 @@
return internal::force_exact<E>(*this)[0];
}
- // 2
+ // \internal 2
template <typename C, typename E>
inline
@@ -211,7 +219,7 @@
return internal::force_exact<E>(*this)[1];
}
- // 3
+ // \internal 3
template <typename C, typename E>
inline
Index: trunk/milena/mln/core/internal/image_if_base.hh
===================================================================
--- trunk/milena/mln/core/internal/image_if_base.hh (revision 1605)
+++ trunk/milena/mln/core/internal/image_if_base.hh (revision 1606)
@@ -46,10 +46,10 @@
namespace internal
{
- // Fwd decl.
+ // \internal Fwd decl.
template <typename I, typename F, typename E> struct image_if_base_;
- // data_.
+ // \internal data_.
template <typename I, typename F, typename E>
struct data_< image_if_base_<I,F,E> >
@@ -95,7 +95,7 @@
namespace internal
{
- /*! \brief An base image class for image_if_'something.
+ /*! \internal An base image class for image_if_'something.
*
*/
template <typename I, typename F, typename E>
@@ -123,7 +123,7 @@
# ifndef MLN_INCLUDE_ONLY
-// // init_
+// // \internal init_
// template <typename I, typename F, typename E>
// void init_(tag::function_t, F& f, const image_if_base_<I,F,E>& model)
@@ -141,7 +141,7 @@
// target.init_(ima, f);
// }
- // internal::data_< image_if_base_<I,S> >
+ // \internal internal::data_< image_if_base_<I,S> >
template <typename I, typename F, typename E>
inline
@@ -151,7 +151,7 @@
{
}
- // image_if_base_<I,F,E>
+ // \internal image_if_base_<I,F,E>
template <typename I, typename F, typename E>
inline
Index: trunk/milena/mln/core/internal/image_identity.hh
===================================================================
--- trunk/milena/mln/core/internal/image_identity.hh (revision 1605)
+++ trunk/milena/mln/core/internal/image_identity.hh (revision 1606)
@@ -43,11 +43,9 @@
{
- /*! \brief A base class for image morphers w.r.t. identity.
- *
+ /*! \internal A base class for image morphers w.r.t. identity.
* Parameter \p S is a point set type.
*
- * \internal
*/
template <typename I, typename S, typename E>
class image_identity_ : public image_morpher_<I, S, E>
Index: trunk/milena/mln/core/internal/point_iterator_base.hh
===================================================================
--- trunk/milena/mln/core/internal/point_iterator_base.hh (revision 1605)
+++ trunk/milena/mln/core/internal/point_iterator_base.hh (revision 1606)
@@ -44,11 +44,9 @@
{
- /*! \brief A base class for point iterators.
- *
+ /*! \internal A base class for point iterators.
* Parameter \c P is a point site type.
*
- * \internal
*/
template <typename P, typename E>
struct point_iterator_base_ : public Point_Iterator<E>
Index: trunk/milena/mln/core/internal/piter_adaptor.hh
===================================================================
--- trunk/milena/mln/core/internal/piter_adaptor.hh (revision 1605)
+++ trunk/milena/mln/core/internal/piter_adaptor.hh (revision 1606)
@@ -43,8 +43,7 @@
namespace internal
{
- /*! \brief A base class for point iterator adaptors.
- *
+ /*! \internal A base class for point iterator adaptors.
* Parameter \c Pi is the type of the point iterator adaptee;
* parameter E is the exact type.
*/
Index: trunk/milena/mln/core/internal/point_set_base.hh
===================================================================
--- trunk/milena/mln/core/internal/point_set_base.hh (revision 1605)
+++ trunk/milena/mln/core/internal/point_set_base.hh (revision 1606)
@@ -43,11 +43,9 @@
namespace internal
{
- /*! \brief A base class for point set classes.
- *
+ /*! \internal A base class for point set classes.
* \p P is a point site type.
*
- * \internal
*/
template <typename P, typename E>
struct point_set_base_ : public Point_Set<E>
Index: trunk/milena/mln/core/internal/pixel_impl.hh
===================================================================
--- trunk/milena/mln/core/internal/pixel_impl.hh (revision 1605)
+++ trunk/milena/mln/core/internal/pixel_impl.hh (revision 1606)
@@ -43,10 +43,9 @@
namespace internal
{
- /*! \brief Implementation class to equip generalized pixel
+ /*! \internal Implementation class to equip generalized pixel
* classes based on mutable images.
*
- * \internal
*/
template <typename I, typename E>
class pixel_impl_
@@ -96,10 +95,9 @@
};
- /*! \brief Implementation class to equip generalized pixel
+ /*! \internal Implementation class to equip generalized pixel
* classes based on constant images.
*
- * \internal
*/
template <typename I, typename E>
class pixel_impl_< const I, E >
Index: trunk/milena/mln/core/internal/image_domain_morpher.hh
===================================================================
--- trunk/milena/mln/core/internal/image_domain_morpher.hh (revision 1605)
+++ trunk/milena/mln/core/internal/image_domain_morpher.hh (revision 1606)
@@ -43,11 +43,9 @@
{
- /*! \brief A base class for image morphers w.r.t. domain.
- *
+ /*! \internal A base class for image morphers w.r.t. domain.
* Parameter \p S is a point set type.
*
- * \internal
*/
template <typename I, typename S, typename E>
class image_domain_morpher_ : public image_morpher_<I, S, E>
Index: trunk/milena/mln/core/internal/run_image.hh
===================================================================
--- trunk/milena/mln/core/internal/run_image.hh (revision 1605)
+++ trunk/milena/mln/core/internal/run_image.hh (revision 1606)
@@ -43,8 +43,7 @@
namespace internal
{
- /*! \brief Factorization class for run_image.
- *
+ /*! \internal Factorization class for run_image.
* Parameter \c T is the type of the image value.
* Parameter \c P is the type of the image point.
* Parameter \c E is the Exact type of the image.
Index: trunk/milena/mln/core/internal/fixme.hh
===================================================================
--- trunk/milena/mln/core/internal/fixme.hh (revision 1605)
+++ trunk/milena/mln/core/internal/fixme.hh (revision 1606)
@@ -40,10 +40,9 @@
namespace internal
{
- /*! \brief A FIXME class to make explicit in code that a type is
+ /*! \internal A FIXME class to make explicit in code that a type is
* not yet implemented.
*
- * \internal
*/
struct fixme
{};
Index: trunk/milena/mln/core/internal/box_impl.hh
===================================================================
--- trunk/milena/mln/core/internal/box_impl.hh (revision 1605)
+++ trunk/milena/mln/core/internal/box_impl.hh (revision 1606)
@@ -43,16 +43,16 @@
namespace internal
{
- // box_impl
+ // \internal box_impl
- /*! \brief Implementation class to equip objects having a bounding
+ /*! \internal Implementation class to equip objects having a bounding
* box.
*
- * \internal
*/
template <unsigned n, typename C, typename E>
struct box_impl_;
+ /// \internal
template <typename C, typename E> // FIXME: Add an extra param to replace 'unsigned'.
struct box_impl_<3, C, E>
{
@@ -84,6 +84,7 @@
C max_col() const;
};
+ /// \internal
template <typename C, typename E> // FIXME: Add an extra param to replace 'unsigned'.
struct box_impl_<2, C, E>
{
@@ -106,6 +107,7 @@
C max_col() const;
};
+ /// \internal
template <typename C, typename E> // FIXME: Add an extra param to replace 'unsigned'.
struct box_impl_<1, C, E>
{
@@ -122,9 +124,9 @@
# ifndef MLN_INCLUDE_ONLY
- // box_impl
+ // \internal box_impl
- // 3
+ // \internal 3
template <typename C, typename E>
inline
@@ -190,7 +192,7 @@
}
- // 2
+ // \internal 2
template <typename C, typename E>
inline
@@ -234,7 +236,7 @@
return internal::force_exact<E>(*this).bbox().pmax()[1];
}
- // 1
+ // \internal 1
template <typename C, typename E>
inline
Index: trunk/milena/mln/core/internal/dpoints_base.hh
===================================================================
--- trunk/milena/mln/core/internal/dpoints_base.hh (revision 1605)
+++ trunk/milena/mln/core/internal/dpoints_base.hh (revision 1606)
@@ -44,8 +44,8 @@
namespace internal
{
-
- /*! \brief FIXME.
+ /*! \internal FIXME.
+ *
*/
template <typename D, typename E>
class dpoints_base_ : protected internal::set_of_<D>
Index: trunk/milena/mln/core/internal/image_value_morpher.hh
===================================================================
--- trunk/milena/mln/core/internal/image_value_morpher.hh (revision 1605)
+++ trunk/milena/mln/core/internal/image_value_morpher.hh (revision 1606)
@@ -43,11 +43,9 @@
{
- /*! \brief A base class for image morphers w.r.t. value.
- *
+ /*! \internal A base class for image morphers w.r.t. value.
* Parameter \p S is a point set type.
*
- * \internal
*/
template <typename I, typename E>
class image_value_morpher_ : public image_morpher_<I, mln_pset(I), E>
Index: trunk/milena/mln/core/internal/image_base.hh
===================================================================
--- trunk/milena/mln/core/internal/image_base.hh (revision 1605)
+++ trunk/milena/mln/core/internal/image_base.hh (revision 1606)
@@ -48,12 +48,12 @@
namespace internal
{
- /// Class of image internal data.
+ /// \internal Class of image internal data.
+ /// FIXME: Say more about it!
+
template <typename I>
struct data_;
- // FIXME: Say more about it!
-
} // end of namespace mln::internal
@@ -61,10 +61,9 @@
namespace internal
{
- /*! \brief Return the lvalue type when an image with type \c I is
+ /*! \internal Return the lvalue type when an image with type \c I is
* morphed.
*
- * \internal
*/
template <typename I>
struct morpher_lvalue_
@@ -88,11 +87,9 @@
};
- /*! \brief A base class for images.
- *
+ /*! \internal A base class for images.
* Parameter \p S is a point set type.
*
- * \internal
*/
template <typename S, typename E>
struct image_base_
Index: trunk/milena/mln/core/internal/image_morpher.hh
===================================================================
--- trunk/milena/mln/core/internal/image_morpher.hh (revision 1605)
+++ trunk/milena/mln/core/internal/image_morpher.hh (revision 1606)
@@ -44,11 +44,9 @@
namespace internal
{
- /*! \brief A base class for images that are morphers.
+ /*! \internal A base class for images that are morphers. Parameter
+ * \c I is the underlying-morphed image type.
*
- * Parameter \c I is the underlying-morphed image type.
- *
- * \internal
*/
template <typename I, typename S, typename E>
class image_morpher_ : public image_base_<S, E>
@@ -94,6 +92,7 @@
// FIXME: Lines above have been inactivated because they are either
// prioritary or ambiguous.
+ /// \internal
template <typename Subject, typename T,
typename J>
void init_(Subject s, T& target, const Image<J>& model);
Index: trunk/milena/mln/core/internal/set_of.hh
===================================================================
--- trunk/milena/mln/core/internal/set_of.hh (revision 1605)
+++ trunk/milena/mln/core/internal/set_of.hh (revision 1606)
@@ -47,17 +47,11 @@
namespace internal
{
- /*! \brief An "efficient" mathematical set class.
- *
- * \internal
- *
+ /*! \internal An "efficient" mathematical set class.
* This set class is designed to store a mathematical set and to
* present it to the user as a linear array (std::vector).
- *
* Elements are stored by copy. Implementation is lazy.
- *
* \invariant \a v_.size() == s_.size()
- *
* The parameter \c E is the element type, which shall not be
* const-qualified.
*
@@ -171,7 +165,7 @@
};
- /*! \brief Print a set \p s into the output stream \p
+ /*! \internal Print a set \p s into the output stream \p
* ostr.
*
* \param[in,out] ostr An output stream.
Index: trunk/milena/mln/core/internal/check/image_all.hh
===================================================================
--- trunk/milena/mln/core/internal/check/image_all.hh (revision 1605)
+++ trunk/milena/mln/core/internal/check/image_all.hh (revision 1606)
@@ -44,17 +44,17 @@
namespace internal
{
- /*! Namespace of all image-related internal checks.
+ /*! \internal Namespace of all image-related internal checks.
*/
namespace check
{
+ /// \internal
template <typename E>
struct image_all_
:
public image_fastest_< E, typename mlc_equal(mln_trait_image_speed(E),
trait::image::speed::fastest)::eval >
- // , ...
{
};
Index: trunk/milena/mln/core/internal/check/image_fastest.hh
===================================================================
--- trunk/milena/mln/core/internal/check/image_fastest.hh (revision 1605)
+++ trunk/milena/mln/core/internal/check/image_fastest.hh (revision 1606)
@@ -46,7 +46,7 @@
namespace check
{
- /*! \brief FIXME
+ /*! \internal FIXME
*/
template < typename E, typename B = metal::true_ >
struct image_fastest_
@@ -70,6 +70,7 @@
};
+ /// \internal
template <typename E>
struct image_fastest_< E, metal::false_ >
{
Index: trunk/milena/mln/core/image_if_value.hh
===================================================================
--- trunk/milena/mln/core/image_if_value.hh (revision 1605)
+++ trunk/milena/mln/core/image_if_value.hh (revision 1606)
@@ -49,7 +49,7 @@
template <typename I> struct image_if_value;
- // internal::data_.
+ /// \internal internal::data_.
namespace internal
{
@@ -126,15 +126,15 @@
/// ima | v creates an image_if_value with the image ima and the
/// value v.
- /// {{{
template <typename I>
image_if_value<I>
operator | (Image<I>& ima, const mln_value(I)& v);
+ /// ima | v creates an image_if_value with the image ima and the
+ /// value v.
template <typename I>
image_if_value<const I>
operator | (const Image<I>& ima, const mln_value(I)& v);
- /// }}}
# ifndef MLN_INCLUDE_ONLY
Index: trunk/milena/mln/core/image_if_interval.hh
===================================================================
--- trunk/milena/mln/core/image_if_interval.hh (revision 1605)
+++ trunk/milena/mln/core/image_if_interval.hh (revision 1606)
@@ -57,8 +57,7 @@
template <typename I> struct image_if_interval;
- // internal::data_.
-
+ /// \internal internal::data_.
namespace internal
{
@@ -111,15 +110,15 @@
/// ima | vv creates an image_if_interval with the image ima and the
/// interval vv.
- /// {{{
template <typename I>
image_if_interval<I>
operator | (Image<I>& ima, const value::interval_<mln_value(I)>& vv);
+ /// ima | vv creates an image_if_interval with the image ima and the
+ /// interval vv.
template <typename I>
image_if_interval<const I>
operator | (const Image<I>& ima, const value::interval_<mln_value(I)>& vv);
- /// }}}
Index: trunk/milena/mln/core/cast_image.hh
===================================================================
--- trunk/milena/mln/core/cast_image.hh (revision 1605)
+++ trunk/milena/mln/core/cast_image.hh (revision 1606)
@@ -50,7 +50,7 @@
namespace internal
{
-
+ /// \internal
template <typename T, typename I>
struct data_< cast_image_<T,I> >
{
Index: trunk/milena/mln/core/dpoint.hh
===================================================================
Index: trunk/milena/mln/core/concept/object.hh
===================================================================
--- trunk/milena/mln/core/concept/object.hh (revision 1605)
+++ trunk/milena/mln/core/concept/object.hh (revision 1606)
@@ -61,13 +61,13 @@
*/
namespace mln
{
- /// Implementation namespace of mln namespace.
+ /// \internal Implementation namespace of mln namespace.
namespace impl {}
- /// Internal namespace of mln namespace.
+ /// \internal Internal namespace of mln namespace.
namespace internal
{
- /// FIXME : doc
+ /// \internal FIXME : doc
namespace check {}
}
Index: trunk/milena/mln/core/t_image.hh
===================================================================
--- trunk/milena/mln/core/t_image.hh (revision 1605)
+++ trunk/milena/mln/core/t_image.hh (revision 1606)
@@ -46,7 +46,7 @@
namespace internal
{
- /// Data held by a mln::t_image.
+ /// \internal Data held by a mln::t_image.
template <typename I>
struct data_< t_image<I> >
{
Index: trunk/milena/mln/core/image1d.hh
===================================================================
--- trunk/milena/mln/core/image1d.hh (revision 1605)
+++ trunk/milena/mln/core/image1d.hh (revision 1606)
@@ -59,7 +59,7 @@
namespace internal
{
- /// Data structure for \c mln::image1d<T>.
+ /// \internal Data structure for \c mln::image1d<T>.
template <typename T>
struct data_< image1d<T> >
{
@@ -239,7 +239,7 @@
target.init_(b, bdr);
}
- // internal::data_< image1d<T> >
+ // \internal internal::data_< image1d<T> >
namespace internal
{
Index: trunk/milena/mln/core/image2d.hh
===================================================================
--- trunk/milena/mln/core/image2d.hh (revision 1605)
+++ trunk/milena/mln/core/image2d.hh (revision 1606)
@@ -56,9 +56,10 @@
template <typename T> struct image2d;
-
namespace internal
{
+
+ /// \internal
template <typename T>
struct data_< image2d<T> >
{
Index: trunk/milena/mln/core/fi_adaptor.hh
===================================================================
--- trunk/milena/mln/core/fi_adaptor.hh (revision 1605)
+++ trunk/milena/mln/core/fi_adaptor.hh (revision 1606)
@@ -61,6 +61,7 @@
namespace internal
{
+ /// \internal
template <typename I>
struct data_< fi_adaptor<I> >
{
Index: trunk/milena/mln/core/image3d.hh
===================================================================
--- trunk/milena/mln/core/image3d.hh (revision 1605)
+++ trunk/milena/mln/core/image3d.hh (revision 1606)
@@ -60,6 +60,7 @@
namespace internal
{
+ /// \internal
template <typename T>
struct data_< image3d<T> >
{
Index: trunk/milena/mln/metal/math/all.hh
===================================================================
--- trunk/milena/mln/metal/math/all.hh (revision 1605)
+++ trunk/milena/mln/metal/math/all.hh (revision 1606)
@@ -43,7 +43,7 @@
/// Namespace of static mathematical functions.
namespace math
{
- /// Implementation namespace of metal::math namespace.
+ /// \internal Implementation namespace of metal::math namespace.
namespace impl {}
}
Index: trunk/milena/mln/metal/all.hh
===================================================================
--- trunk/milena/mln/metal/all.hh (revision 1605)
+++ trunk/milena/mln/metal/all.hh (revision 1606)
@@ -39,7 +39,7 @@
/// Namespace of meta-programming tools.
namespace metal
{
- /// Implementation namespace of metal namespace.
+ /// \internal Implementation namespace of metal namespace.
namespace impl {}
}
Index: trunk/milena/mln/arith/all.hh
===================================================================
--- trunk/milena/mln/arith/all.hh (revision 1605)
+++ trunk/milena/mln/arith/all.hh (revision 1606)
@@ -40,10 +40,10 @@
/// Namespace of arithmetic.
namespace arith
{
- /// Implementation namespace of arith namespace.
+ /// \internal Implementation namespace of arith namespace.
namespace impl {
- /// Generic implementation namespace of arith namespace.
+ /// \internal Generic implementation namespace of arith namespace.
namespace generic {
}
Index: trunk/milena/mln/level/naive/all.hh
===================================================================
--- trunk/milena/mln/level/naive/all.hh (revision 1605)
+++ trunk/milena/mln/level/naive/all.hh (revision 1606)
@@ -42,11 +42,11 @@
namespace level
{
- /// Namespace of image processing routines related to pixel levels
+ /// \brief Namespace of image processing routines related to pixel levels
/// with naive approach.
namespace naive
{
- /// Implementation namespace of level::naive namespace.
+ /// \internal Implementation namespace of level::naive namespace.
namespace impl {}
}
Index: trunk/milena/mln/level/naive/median.hh
===================================================================
--- trunk/milena/mln/level/naive/median.hh (revision 1605)
+++ trunk/milena/mln/level/naive/median.hh (revision 1606)
@@ -91,7 +91,7 @@
}
- } // end of namespace mln::level::impl
+ } // end of namespace mln::level::naive::impl
Index: trunk/milena/mln/level/all.hh
===================================================================
--- trunk/milena/mln/level/all.hh (revision 1605)
+++ trunk/milena/mln/level/all.hh (revision 1606)
@@ -41,10 +41,10 @@
namespace level
{
- /// Implementation namespace of level namespace.
+ /// \internal Implementation namespace of level namespace.
namespace impl {
- /// Generic implementation namespace of level namespace.
+ /// \internal Generic implementation namespace of level namespace.
namespace generic {}
}
Index: trunk/milena/mln/level/approx/all.hh
===================================================================
--- trunk/milena/mln/level/approx/all.hh (revision 1605)
+++ trunk/milena/mln/level/approx/all.hh (revision 1606)
@@ -38,22 +38,18 @@
namespace mln
{
-
namespace level
{
- /*! \namespace approx
- *
- * \brief Namespace of image processing routines related to pixel
- * levels with approximation.
- */
+ /// \brief Namespace of image processing routines related to pixel
+ /// levels with approximation.
namespace approx
{
- /// Implementation namespace of level::approx namespace.
+ /// \internal Implementation namespace of level::approx namespace.
namespace impl {}
}
- } // end of namespace level
+ } // end of namespace mln::level
} // end of namespace mln
Index: trunk/milena/mln/linear/all.hh
===================================================================
--- trunk/milena/mln/linear/all.hh (revision 1605)
+++ trunk/milena/mln/linear/all.hh (revision 1606)
@@ -41,7 +41,7 @@
namespace linear
{
- /// Namespace of linear image processing routines implementation details.
+ /// \internal Namespace of linear image processing routines implementation details.
namespace impl
{
}
@@ -50,7 +50,7 @@
namespace local
{
- /// Namespace of local linear routines implementation details.
+ /// \internal Namespace of local linear routines implementation details.
namespace impl
{
}
Index: trunk/milena/mln/accu/all.hh
===================================================================
--- trunk/milena/mln/accu/all.hh (revision 1605)
+++ trunk/milena/mln/accu/all.hh (revision 1606)
@@ -44,9 +44,9 @@
/// Namespace of accumulators.
namespace accu
{
- /// Implementation namespace of accumulator namespace.
+ /// \internal Implementation namespace of accumulator namespace.
namespace impl {}
- /// Internal namespace of accumulators.
+ /// \internal Internal namespace of accumulators.
namespace internal {}
}
Index: trunk/milena/mln/accu/internal/base.hh
===================================================================
--- trunk/milena/mln/accu/internal/base.hh (revision 1605)
+++ trunk/milena/mln/accu/internal/base.hh (revision 1606)
@@ -48,8 +48,7 @@
namespace internal
{
- /*! Generic min accumulator class.
- *
+ /*! \internal Generic min accumulator class.
* Base class for implementation of accumulator classes.
*/
template <typename R, typename E>
Index: trunk/milena/mln/value/graylevel.hh
===================================================================
--- trunk/milena/mln/value/graylevel.hh (revision 1605)
+++ trunk/milena/mln/value/graylevel.hh (revision 1606)
@@ -248,10 +248,10 @@
namespace internal
{
- // Fwd decl;
+ // \internal Fwd decl;
template <typename T> struct convert_;
- // convert for graylevel
+ // \internal convert for graylevel
template <unsigned n>
struct convert_< graylevel<n> >
{
Index: trunk/milena/mln/value/float01_.hh
===================================================================
--- trunk/milena/mln/value/float01_.hh (revision 1605)
+++ trunk/milena/mln/value/float01_.hh (revision 1606)
@@ -118,6 +118,7 @@
namespace internal
{
+ /// \internal
template <unsigned n>
struct convert_< float01_<n> >
{
Index: trunk/milena/mln/value/all.hh
===================================================================
--- trunk/milena/mln/value/all.hh (revision 1605)
+++ trunk/milena/mln/value/all.hh (revision 1606)
@@ -40,7 +40,7 @@
/// Namespace of materials related to pixel value types.
namespace value
{
- /// Implementation namespace of value namespace.
+ /// \internal Implementation namespace of value namespace.
namespace impl {}
}
Index: trunk/milena/mln/value/internal/iterable_set.hh
===================================================================
--- trunk/milena/mln/value/internal/iterable_set.hh (revision 1605)
+++ trunk/milena/mln/value/internal/iterable_set.hh (revision 1606)
@@ -53,8 +53,7 @@
namespace internal
{
- /*! Class that defines the set of values of type \c T.
- *
+ /*! \internal Class that defines the set of values of type \c T.
* This is the exhaustive iterable_set of values obtainable from type \c T.
*/
template <typename T, typename E>
Index: trunk/milena/mln/value/internal/encoding.hh
===================================================================
--- trunk/milena/mln/value/internal/encoding.hh (revision 1605)
+++ trunk/milena/mln/value/internal/encoding.hh (revision 1606)
@@ -40,9 +40,11 @@
namespace value
{
+ /// \internal
namespace internal
{
+
template <unsigned n> struct encoding_unsigned_;
template <> struct encoding_unsigned_<8> { typedef unsigned char ret; };
Index: trunk/milena/mln/value/internal/value_like.hh
===================================================================
--- trunk/milena/mln/value/internal/value_like.hh (revision 1605)
+++ trunk/milena/mln/value/internal/value_like.hh (revision 1606)
@@ -48,13 +48,9 @@
namespace internal
{
- /*! \brief Base class for value classes defined over another
- * type.
- *
- * \internal
- *
- * Parameters are \c V the equivalent value type and \c E the
- * exact value type.
+ /*! \internal Base class for value classes defined over another
+ * type. Parameters are \c V the equivalent value type and
+ * \c E the exact value type.
*/
template < typename V, // Equivalent.
typename C, // Encoding.
@@ -89,19 +85,17 @@
};
- /*! \brief General definition of the "equal to" operator between
+ /*! \internal General definition of the "equal to" operator between
* value-like types.
*
- * \relates value_like_
*/
template <typename V, typename C, typename N, typename E>
bool operator==(const value_like_<V,C,N,E>& lhs, const value_like_<V,C,N,E>& rhs);
- /*! \brief General definition of the "less than" operator
+ /*! \internal General definition of the "less than" operator
* between value-like types.
*
- * \relates value_like_
*/
template <typename V, typename C, typename N, typename E>
bool operator<(const value_like_<V,C,N,E>& lhs, const value_like_<V,C,N,E>& rhs);
Index: trunk/milena/mln/value/internal/convert.hh
===================================================================
--- trunk/milena/mln/value/internal/convert.hh (revision 1605)
+++ trunk/milena/mln/value/internal/convert.hh (revision 1606)
@@ -44,7 +44,7 @@
namespace internal
{
-
+ /// \internal
template <typename T>
struct convert_
{
@@ -54,6 +54,7 @@
static unsigned index_of_value(const T& v);
};
+ /// \internal
template <>
struct convert_<bool>
{
Index: trunk/milena/mln/value/stack.hh
===================================================================
--- trunk/milena/mln/value/stack.hh (revision 1605)
+++ trunk/milena/mln/value/stack.hh (revision 1606)
@@ -50,7 +50,7 @@
{
- /*! \brief data structure for stack_image.
+ /*! \internal data structure for stack_image.
*
*/
template <unsigned n, typename I>
Index: trunk/milena/mln/value/label.hh
===================================================================
--- trunk/milena/mln/value/label.hh (revision 1605)
+++ trunk/milena/mln/value/label.hh (revision 1606)
@@ -127,6 +127,7 @@
namespace internal
{
+ /// \internal
template <unsigned n>
struct convert_< label<n> >
{
Index: trunk/milena/mln/border/all.hh
===================================================================
--- trunk/milena/mln/border/all.hh (revision 1605)
+++ trunk/milena/mln/border/all.hh (revision 1606)
@@ -40,10 +40,10 @@
/// Namespace of routines related to image virtual (outer) border.
namespace border
{
- /// Implementation namespace of border namespace.
+ /// \internal Implementation namespace of border namespace.
namespace impl {
- /// Generic implementation namespace of border namespace.
+ /// \internal Generic implementation namespace of border namespace.
namespace generic {}
}
Index: trunk/milena/mln/test/all.hh
===================================================================
--- trunk/milena/mln/test/all.hh (revision 1605)
+++ trunk/milena/mln/test/all.hh (revision 1606)
@@ -40,7 +40,7 @@
/// Namespace of image processing routines related to pixel tests.
namespace test
{
- /// Implementation namespace of test namespace.
+ /// \internal Implementation namespace of test namespace.
namespace impl {}
}
Index: trunk/milena/mln/convert/all.hh
===================================================================
--- trunk/milena/mln/convert/all.hh (revision 1605)
+++ trunk/milena/mln/convert/all.hh (revision 1606)
@@ -36,7 +36,7 @@
namespace mln
{
- /// Namespace of convertion routines.
+ /// \internal Namespace of convertion routines.
namespace convert {}
}
Index: trunk/milena/mln/pw/image.hh
===================================================================
--- trunk/milena/mln/pw/image.hh (revision 1605)
+++ trunk/milena/mln/pw/image.hh (revision 1606)
@@ -59,7 +59,7 @@
namespace internal
{
- /// Data structure for mln::pw::image
+ /// \internal Data structure for mln::pw::image
template <typename F, typename S>
struct data_< mln::pw::image<F,S> >
{
Index: trunk/milena/mln/geom/chamfer.hh
===================================================================
--- trunk/milena/mln/geom/chamfer.hh (revision 1605)
+++ trunk/milena/mln/geom/chamfer.hh (revision 1606)
@@ -59,7 +59,7 @@
namespace impl
{
- // Functors.
+ // \internal Functors.
template <typename I_, typename W_>
struct chamfer_t
@@ -94,7 +94,7 @@
{}
};
- // Routines.
+ /// \internal Routines.
template <typename I, typename W>
inline
Index: trunk/milena/mln/geom/all.hh
===================================================================
--- trunk/milena/mln/geom/all.hh (revision 1605)
+++ trunk/milena/mln/geom/all.hh (revision 1606)
@@ -40,7 +40,7 @@
/// Namespace of all things related to geometry.
namespace geom
{
- /// Implementation namespace of geom namespace.
+ /// \internal Implementation namespace of geom namespace.
namespace impl {}
}
Index: trunk/milena/mln/fun/x2x/all.hh
===================================================================
--- trunk/milena/mln/fun/x2x/all.hh (revision 1605)
+++ trunk/milena/mln/fun/x2x/all.hh (revision 1606)
@@ -44,7 +44,7 @@
namespace x2x
{
- /// Internal namespace of functions form vector to vector.
+ /// \internal Internal namespace of functions form vector to vector.
namespace internal
{
}
Index: trunk/milena/mln/fun/x2x/composed.hh
===================================================================
--- trunk/milena/mln/fun/x2x/composed.hh (revision 1605)
+++ trunk/milena/mln/fun/x2x/composed.hh (revision 1606)
@@ -56,11 +56,12 @@
namespace internal
{
+ /// \internal
template <typename F, typename G, typename E, bool is_bij>
struct helper_composed_;
- /// Helper for describing a bijective composition.
+ /// \internal Helper for describing a bijective composition.
template <typename F, typename G, typename E>
struct helper_composed_< F, G, E, true>
: public fun::internal::x2x_linear_impl_<mln_result(F), E >,
@@ -93,7 +94,7 @@
G g_;
};
- /// Helper for describing a non bijective composition.
+ /// \internal Helper for describing a non bijective composition.
template <typename F, typename G, typename E>
struct helper_composed_< F, G, E, false>
: public fun::internal::x2x_linear_impl_<mln_result(F), E >,
@@ -174,7 +175,7 @@
namespace internal
{
- // Implementation of the bijective version.
+ // \internal Implementation of the bijective version.
template <typename F, typename G, typename E>
inline
@@ -191,6 +192,7 @@
this->m_ = f_.mat() * g_.mat();
}
+ /// \internal
template <typename F, typename G, typename E>
inline
typename helper_composed_<F,G,E,true>::invert
@@ -199,7 +201,7 @@
return compose(g_.inv(), f_.inv());
}
-
+ /// \internal
template <typename F, typename G, typename E>
inline
void
@@ -209,6 +211,7 @@
this->m_ = this->f_.mat() * this->g_.mat();
}
+ /// \internal
template <typename F, typename G, typename E>
inline
void
@@ -218,14 +221,14 @@
this->m_ = this->f_.mat() * this->g_.mat();
}
- // Implementation of the non bijective version.
-
+ // \internal Implementation of the non bijective version.
template <typename F, typename G, typename E>
inline
helper_composed_<F,G,E,false>::helper_composed_()
{
}
+ /// \internal
template <typename F, typename G, typename E>
inline
helper_composed_<F,G,E,false>::helper_composed_(const F& f, const G& g)
@@ -235,6 +238,7 @@
this->m_ = f_.mat() * g_.mat();
}
+ /// \internal
template <typename F, typename G, typename E>
inline
void
@@ -244,6 +248,7 @@
this->m_ = this->f_.mat() * this->g_.mat();
}
+ /// \internal
template <typename F, typename G, typename E>
inline
void
Index: trunk/milena/mln/fun/all.hh
===================================================================
--- trunk/milena/mln/fun/all.hh (revision 1605)
+++ trunk/milena/mln/fun/all.hh (revision 1606)
@@ -41,7 +41,7 @@
namespace fun
{
- /// Internal namespace of functions.
+ /// \internal Internal namespace of functions.
namespace internal
{
}
Index: trunk/milena/mln/morpho/plus.hh
===================================================================
--- trunk/milena/mln/morpho/plus.hh (revision 1605)
+++ trunk/milena/mln/morpho/plus.hh (revision 1606)
@@ -53,14 +53,6 @@
mln_concrete(I) plus(const Image<I>& lhs, const Image<J>& rhs);
-// /*! Morphological plus, inplace version: either a "logical or" (if
-// * morpho on sets) or an "arithmetical plus" (if morpho on
-// * functions).
-// */
-// template <typename I, typename J>
-// void plus_inplace(Image<I>& lhs, const Image<J>& rhs);
-
-
# ifndef MLN_INCLUDE_ONLY
namespace impl
@@ -105,13 +97,6 @@
return output;
}
-// template <typename I, typename J>
-// void plus_inplace(Image<I>& lhs, const Image<J>& rhs)
-// {
-// mln_precondition(exact(rhs).domain() == exact(lhs).domain());
-// morpho::plus(lhs, rhs, lhs); // Calls the previous version.
-// }
-
# endif // ! MLN_INCLUDE_ONLY
} // end of namespace mln::morpho
Index: trunk/milena/mln/morpho/minus.hh
===================================================================
--- trunk/milena/mln/morpho/minus.hh (revision 1605)
+++ trunk/milena/mln/morpho/minus.hh (revision 1606)
@@ -53,14 +53,6 @@
mln_concrete(I) minus(const Image<I>& lhs, const Image<J>& rhs);
-// /*! Morphological minus, inplace version: either a logical "and
-// * not" (if morpho on sets) or an arithmetical minus (if morpho
-// * on functions).
-// */
-// template <typename I, typename J>
-// void minus_inplace(Image<I>& lhs, const Image<J>& rhs);
-
-
# ifndef MLN_INCLUDE_ONLY
namespace impl
@@ -106,13 +98,6 @@
return output;
}
-// template <typename I, typename J>
-// void minus_inplace(Image<I>& lhs, const Image<J>& rhs)
-// {
-// mln_precondition(exact(rhs).domain() == exact(lhs).domain());
-// morpho::minus(lhs, rhs, lhs); // Calls the previous version.
-// }
-
# endif // ! MLN_INCLUDE_ONLY
} // end of namespace mln::morpho
Index: trunk/milena/mln/morpho/all.hh
===================================================================
--- trunk/milena/mln/morpho/all.hh (revision 1605)
+++ trunk/milena/mln/morpho/all.hh (revision 1606)
@@ -41,19 +41,13 @@
namespace morpho
{
- /*! \namespace impl
- *
- * \brief Namespace of morphological image processing routines
- * implementation details.
- */
+ /// \internal Namespace of morphological image processing routines
+ /// implementation details.
namespace impl
{
- /*! \namespace generic
- *
- * \brief Namespace of morphological image processing routines
- * generic implementations.
- */
+ /// \internal Namespace of morphological image processing routines
+ /// generic implementations.
namespace generic
{
}
Index: trunk/milena/mln/display/all.hh
===================================================================
--- trunk/milena/mln/display/all.hh (revision 1605)
+++ trunk/milena/mln/display/all.hh (revision 1606)
@@ -40,10 +40,10 @@
/// Namespace of routines that help to display images.
namespace display
{
- /// Implementation namespace of display namespace.
+ /// \internal Implementation namespace of display namespace.
namespace impl {
- /// Generic implementation namespace of display namespace.
+ /// \internal Generic implementation namespace of display namespace.
namespace generic {}
}
Index: trunk/milena/mln/io/pfm/all.hh
===================================================================
--- trunk/milena/mln/io/pfm/all.hh (revision 1605)
+++ trunk/milena/mln/io/pfm/all.hh (revision 1606)
@@ -42,10 +42,10 @@
/// Namespace of pfm input/output handling.
namespace pfm
{
- /// Implementation namespace of pfm namespace.
+ /// \internal Implementation namespace of pfm namespace.
namespace impl {}
- /// Internal namespace of pfm namespace.
+ /// \internal Internal namespace of pfm namespace.
namespace internal {}
}
}
Index: trunk/milena/mln/io/all.hh
===================================================================
--- trunk/milena/mln/io/all.hh (revision 1605)
+++ trunk/milena/mln/io/all.hh (revision 1606)
@@ -40,7 +40,7 @@
/// Namespace of input/output handling.
namespace io
{
- /// Internal namespace of io namespace.
+ /// \internal Internal namespace of io namespace.
namespace internal {}
}
Index: trunk/milena/mln/io/pnm/all.hh
===================================================================
--- trunk/milena/mln/io/pnm/all.hh (revision 1605)
+++ trunk/milena/mln/io/pnm/all.hh (revision 1606)
@@ -42,7 +42,7 @@
/// Namespace of pnm input/output handling.
namespace pnm
{
- /// Namespace of pnm's implementation details.
+ /// \internal Namespace of pnm's implementation details.
namespace impl {}
}
}
Index: trunk/milena/mln/io/pbm/all.hh
===================================================================
--- trunk/milena/mln/io/pbm/all.hh (revision 1605)
+++ trunk/milena/mln/io/pbm/all.hh (revision 1606)
@@ -42,10 +42,10 @@
/// Namespace of pbm input/output handling.
namespace pbm
{
- /// Namespace of pbm's implementation details.
+ /// \internal Namespace of pbm's implementation details.
namespace impl {}
- /// Internal namespace of pbm namespace.
+ /// \internal Internal namespace of pbm namespace.
namespace internal {}
}
}
Index: trunk/milena/mln/logical/all.hh
===================================================================
--- trunk/milena/mln/logical/all.hh (revision 1605)
+++ trunk/milena/mln/logical/all.hh (revision 1606)
@@ -40,10 +40,10 @@
/// Namespace of logic.
namespace logical
{
- /// Implementation namespace of logical namespace.
+ /// \internal Implementation namespace of logical namespace.
namespace impl {
- /// Generic implementation namespace of logical namespace.
+ /// \internal Generic implementation namespace of logical namespace.
namespace generic {}
}
Index: trunk/milena/mln/canvas/all.hh
===================================================================
--- trunk/milena/mln/canvas/all.hh (revision 1605)
+++ trunk/milena/mln/canvas/all.hh (revision 1606)
@@ -40,7 +40,7 @@
/// Namespace of canvas.
namespace canvas
{
- /// Implementation namespace of canvas namespace.
+ /// \internal Implementation namespace of canvas namespace.
namespace impl {}
}
Index: trunk/milena/mln/labeling/all.hh
===================================================================
--- trunk/milena/mln/labeling/all.hh (revision 1605)
+++ trunk/milena/mln/labeling/all.hh (revision 1606)
@@ -40,7 +40,7 @@
/// Namespace of labeling routines.
namespace labeling
{
- /// Implementation namespace of labeling namespace.
+ /// \internal Implementation namespace of labeling namespace.
namespace impl {}
}
URL: https://svn.lrde.epita.fr/svn/oln/trunk/milena
ChangeLog:
2007-12-12 Matthieu Garrigues <garrigues(a)lrde.epita.fr>
gl16 and gl8 headers.
* mln/value/gl8.hh: New, Definition of a graylevel 8 bits.
* mln/value/gl16.hh: New, Definition of a graylevel 16 bits.
---
gl16.hh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
gl8.hh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 110 insertions(+)
Index: trunk/milena/mln/value/gl8.hh
===================================================================
--- trunk/milena/mln/value/gl8.hh (revision 0)
+++ trunk/milena/mln/value/gl8.hh (revision 1604)
@@ -0,0 +1,55 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_VALUE_GL8_HH
+# define MLN_VALUE_GL8_HH
+
+/*! \file mln/value/gl8.hh
+ *
+ * \brief Define the alias value::gl8.
+ */
+
+# include <mln/value/graylevel.hh>
+
+
+namespace mln
+{
+
+ namespace value
+ {
+
+
+ /// Alias for 8 bit graylevel.
+ typedef graylevel<8> gl8;
+
+
+ } // end of namespace mln::value
+
+} // end of namespace mln
+
+
+#endif // ! MLN_VALUE_GL8_HH
Index: trunk/milena/mln/value/gl16.hh
===================================================================
--- trunk/milena/mln/value/gl16.hh (revision 0)
+++ trunk/milena/mln/value/gl16.hh (revision 1604)
@@ -0,0 +1,55 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_VALUE_GL16_HH
+# define MLN_VALUE_GL16_HH
+
+/*! \file mln/value/gl16.hh
+ *
+ * \brief Define the alias value::gl16.
+ */
+
+# include <mln/value/graylevel.hh>
+
+
+namespace mln
+{
+
+ namespace value
+ {
+
+
+ /// Alias for 16 bit graylevel.
+ typedef graylevel<16> gl16;
+
+
+ } // end of namespace mln::value
+
+} // end of namespace mln
+
+
+#endif // ! MLN_VALUE_GL16_HH
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Roland Levillain <roland(a)lrde.epita.fr>
More on general-purpose graph-based images, improperly called
mesh-based images.
* mln/util/graph.hh: Migrate C-styled constructs to C++ ones.
(graph::nodes, graph::edges): New typedefs.
Use them...
(nodes_, edges_): ...here.
* mln/core/mesh_p.hh (graph): New typedef.
Use it...
(gr_): ...here.
Aesthetic changes.
* mln/core/mesh_psite.hh
(m_ptr_): Turn this non-const pointer on mesh_p<P> into...
(mesh_): ...a const reference on mesh_p<P>.
(mesh_psite::mesh_psite(unsigned, mesh_p<P>*)): Adjust ctor
and swap the arguments of this ctor to get...
(mesh_psite::mesh_psite(const mesh_p<P>&, unsigned)): ...this much
natural signature.
(mesh_psite::mesh_psite(const self_& rhs)): New copy ctor.
(operator= (const self_& rhs)): New assignment operator.
* mln/core/mesh_p_piter.hh: Adjust forward declarations.
(psite, point): New typedefs.
(update_, to_psite, operator psite): New methods.
(loc_): Remove attribute.
(psite_set_, psite_): New attributes.
(mesh_p_piter_::mesh_p_piter_): Adjust ctor.
(is_valid invalidate, start, next_): Adjust methods.
* mln/core/mesh_image.hh (mln::trait::image_< mesh_image<P, V> >):
New traits.
(operator()(const mesh_psite<P>& p) const)
(operator()(const mesh_psite<P>& p)):
Catch up with the new interface of mln::mesh_psite.
* mln/trait/image/props.hh (mln::trait::image::space_from_point):
New function on types mapping points types to the corresponding
images space trait.
* mln/core/mesh_elt_window.hh,
* mln/core/mesh_window_piter.hh:
New files.
* mln/draw/mesh.hh,
* mln/trait/images.hh:
Add a FIXME.
* mln/core/box_piter.hh,
* tests/value/Makefile.am:
Typos.
* tests/core/mesh_image.cc: New tests
* tests/core/mesh_elt_window.cc: New file.
* tests/core/Makefile.am (check_PROGRAMS): Add mesh_elt_window and
mesh_image.
(mesh_elt_window_SOURCES, mesh_image_SOURCES): New.
* tests/draw/mesh.cc: Revamp this test.
* TODO: Update.
TODO | 3
mln/core/box_piter.hh | 6 -
mln/core/mesh_elt_window.hh | 169 +++++++++++++++++++++++++++++++++
mln/core/mesh_image.hh | 38 ++++++-
mln/core/mesh_p.hh | 15 +-
mln/core/mesh_p_piter.hh | 92 ++++++++++++++----
mln/core/mesh_psite.hh | 56 ++++++++---
mln/core/mesh_window_piter.hh | 211 ++++++++++++++++++++++++++++++++++++++++++
mln/draw/mesh.hh | 3
mln/trait/image/props.hh | 41 ++++++++
mln/trait/images.hh | 3
mln/util/graph.hh | 37 +++----
tests/core/Makefile.am | 4
tests/core/mesh_elt_window.cc | 82 ++++++++++++++++
tests/core/mesh_image.cc | 115 ++++++++++++++++++++++
tests/draw/mesh.cc | 101 +++++++++++++++++---
tests/value/Makefile.am | 10 +
17 files changed, 904 insertions(+), 82 deletions(-)
Index: tests/value/Makefile.am
--- tests/value/Makefile.am (revision 1602)
+++ tests/value/Makefile.am (working copy)
@@ -2,6 +2,10 @@
include $(top_srcdir)/milena/tests/tests.mk
+## FIXME: To be added to milena/tests/tests.mk.
+full-check: check
+## ...
+
SUBDIRS = \
concept \
builtin
@@ -24,7 +28,7 @@
scalar \
set
-# FIXME: activate when make check_full will work.
+# FIXME: Enable when make check_full works.
# check_full_PROGRAMS = \
# rgb_full
@@ -45,9 +49,9 @@
scalar_SOURCES = scalar.cc
set_SOURCES = set.cc
-# FIXME: activate when make check_full will work.
+# FIXME: Enable when make check_full works.
# rgb_full_SOURCES = rgb_full.cc
TESTS = $(check_PROGRAMS)
-# FIXME: activate when make check_full will work.
+# FIXME: Enable when make check_full works.
# TESTS_FULL = $(check_full_PROGRAMS)
Index: tests/core/mesh_image.cc
--- tests/core/mesh_image.cc (revision 0)
+++ tests/core/mesh_image.cc (revision 0)
@@ -0,0 +1,115 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/*! \file tests/mesh_image.cc
+ *
+ * \brief Tests on mln::mesh_image.
+ */
+
+#include <vector>
+
+#include <mln/core/point2d.hh>
+#include <mln/core/mesh_image.hh>
+#include <mln/core/mesh_elt_window.hh>
+#include <mln/core/mesh_window_piter.hh>
+
+#include <mln/debug/iota.hh>
+#include <mln/debug/println.hh>
+
+
+int main()
+{
+ using namespace mln;
+
+ /*--------.
+ | Graph. |
+ `--------*/
+
+ // Points associated to nodes.
+ std::vector<point2d> points;
+ points.push_back(make::point2d(0,0)); // Point associated to node 0.
+ points.push_back(make::point2d(2,2)); // Point associated to node 1.
+ points.push_back(make::point2d(0,4)); // Point associated to node 2.
+ points.push_back(make::point2d(4,3)); // Point associated to node 3.
+ points.push_back(make::point2d(4,4)); // Point associated to node 4.
+
+ // Edges.
+ util::graph<void> g;
+ // Populate the graph with nodes.
+ for (unsigned i = 0; i < points.size(); ++i)
+ g.add_node ();
+ // Populate the graph with edges.
+ g.add_edge(0, 1);
+ g.add_edge(1, 2);
+ g.add_edge(1, 3);
+ g.add_edge(3, 4);
+ g.add_edge(4, 2);
+
+ /*-------.
+ | Mesh. |
+ `-------*/
+
+ mesh_p<point2d> mesh(g, points);
+
+ /*-------------.
+ | Mesh image. |
+ `-------------*/
+
+ // Values ("empty" vector).
+ std::vector<int> values(5);
+ // Mesh image.
+ typedef mesh_image<point2d, int> ima_t;
+ ima_t ima(mesh, values);
+ // Initialize values.
+ debug::iota(ima);
+ // The printed result does not show the graph, only the values.
+ debug::println(ima);
+
+ /*------------.
+ | Iterators. |
+ `------------*/
+
+ // Manual iteration over the domain of IMA.
+ mln_piter_(ima_t) p(ima.domain());
+ for_all (p)
+ std::cout << "ima (" << p << ") = " << ima(p) << std::endl;
+
+ // Manual iterations over the neighborhoods of each point site of IMA.
+ typedef mesh_elt_window<point2d> win_t;
+ win_t win;
+ // Reinitialize P, otherwise Q will trigger an assertion about P
+ // being unable to convert to a valid mesh_piter object.
+ p.start();
+ mln_qiter_(win_t) q(win, p);
+ for_all (p)
+ {
+ std::cout << "neighbors of " << p << " (" << ima(p) << "), "
+ << "including the site itself:" << std::endl;
+ for_all (q)
+ std::cout << " " << q << " (level = " << ima(q) << ")" << std::endl;
+ }
+}
Index: tests/core/Makefile.am
--- tests/core/Makefile.am (revision 1602)
+++ tests/core/Makefile.am (working copy)
@@ -7,6 +7,8 @@
clone \
exact \
initialize \
+ mesh_elt_window \
+ mesh_image \
mono_obased_rle_image \
mono_rle_image \
obased_rle_image \
@@ -19,6 +21,8 @@
clone_SOURCES = clone.cc
exact_SOURCES = exact.cc
initialize_SOURCES = initialize.cc
+mesh_elt_window_SOURCES = mesh_elt_window.cc
+mesh_image_SOURCES = mesh_image.cc
mono_obased_rle_image_SOURCES = mono_obased_rle_image.cc
mono_rle_image_SOURCES = mono_rle_image.cc
obased_rle_image_SOURCES = obased_rle_image.cc
Index: tests/core/mesh_elt_window.cc
--- tests/core/mesh_elt_window.cc (revision 0)
+++ tests/core/mesh_elt_window.cc (revision 0)
@@ -0,0 +1,82 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/*! \file tests/mesh_elt_window.cc
+ *
+ * \brief Tests on mln::win::mesh_elt_window.
+ */
+
+#include <vector>
+
+#include <mln/core/point2d.hh>
+#include <mln/core/mesh_elt_window.hh>
+
+#include <mln/debug/iota.hh>
+#include <mln/debug/println.hh>
+
+
+int main()
+{
+ using namespace mln;
+
+ typedef point2d p_t;
+
+ /*--------.
+ | Graph. |
+ `--------*/
+
+ // Points associated to nodes.
+ std::vector<p_t> points;
+ points.push_back(make::point2d(0,0)); // Point associated to node 0.
+ points.push_back(make::point2d(2,2)); // Point associated to node 1.
+ points.push_back(make::point2d(0,4)); // Point associated to node 2.
+ points.push_back(make::point2d(4,3)); // Point associated to node 3.
+ points.push_back(make::point2d(4,4)); // Point associated to node 4.
+
+ // Edges.
+ mln::util::graph<void> g;
+ // Populate the graph with nodes.
+ for (unsigned i = 0; i < points.size(); ++i)
+ g.add_node ();
+ // Populate the graph with edges.
+ g.add_edge(0, 1);
+ g.add_edge(1, 2);
+ g.add_edge(1, 3);
+ g.add_edge(3, 4);
+ g.add_edge(4, 2);
+
+ /*------------------.
+ | Mesh and window. |
+ `------------------*/
+
+ // Mesh psite set.
+ mesh_p<p_t> mesh(g, points);
+ // Mesh point site.
+ mesh_psite<p_t> psite(mesh, 0);
+ // ``Sliding'' window (in fact, neighborhood) of a psite of MESH.
+ mesh_elt_window<p_t> win;
+}
Index: tests/draw/mesh.cc
--- tests/draw/mesh.cc (revision 1602)
+++ tests/draw/mesh.cc (working copy)
@@ -28,8 +28,14 @@
/*! \file tests/draw/mesh.cc
*
* \brief Tests on mln::draw::mesh.
+ *
+ * Build a graph, convert it to an image, and compare it with a
+ * reference images.
*/
+#include <vector>
+#include <utility>
+
#include <mln/core/image2d.hh>
#include <mln/core/point2d.hh>
#include <mln/debug/println.hh>
@@ -40,34 +46,99 @@
#include <mln/core/mesh_image.hh>
#include <mln/level/compare.hh>
+
+/// Set of 2-D points.
+typedef std::vector< mln::point2d > points_type;
+/// Set of edges expressed using the identifiers of their adjecent nodes.
+typedef std::vector< std::pair<int,int> > edges_type;
+
+using namespace mln;
+
+// FIXME: We might want to extract NROWS and NCOLS from REF instead of
+// getting them from the caller.
+void
+test (points_type& points, const edges_type& edges,
+ unsigned nrows, unsigned ncols, const mln::image2d<int>& ref)
+{
+ // Graph.
+ util::graph<void> g;
+ // Populate the graph with nodes.
+ for (unsigned i = 0; i < points.size(); ++i)
+ g.add_node ();
+ // Populate the graph with edges.
+ for (edges_type::const_iterator i = edges.begin(); i != edges.end(); ++i)
+ g.add_edge (i->first, i->second);
+ // Check its consistency.
+ g.consistency ();
+
+ mln::mesh_p<point2d> m(g, points);
+
+ image2d<int> ima(nrows, ncols);
+ // FIXME: `draw::mesh' is not a good name. This function doesn't
+ // actually draw the mesh; it *converts* it to a printable image.
+ draw::mesh (ima, m, 2, 1);
+ mln_assertion (ima == ref);
+}
+
int
-main (void)
+main ()
{
- using namespace mln;
+ /*---------.
+ | Test 1. |
+ `---------*/
+ {
+ // Reference image.
int vs[3][3] = {
{2, 0, 0},
{0, 1, 0},
{0, 0, 2}
};
-
image2d<int> ref (make::image2d(vs));
- util::graph<void> g;
+ // Points associated to nodes.
+ points_type points;
+ points.push_back (make::point2d (0,0)); // Point associated to node 0.
+ points.push_back (make::point2d (2,2)); // Point associated to node 1.
+
+ // Edges.
+ edges_type edges;
+ edges.push_back (std::make_pair (0, 1));
- g.add_node ();
- g.add_node ();
- g.add_edge (0, 1);
- g.consistency ();
+ test (points, edges, 3, 3, ref);
+ }
- std::vector<point2d> v;
- v.push_back (make::point2d (0,0));
- v.push_back (make::point2d (2,2));
- mesh_p<point2d> m(g, v);
+ /*---------.
+ | Test 2. |
+ `---------*/
- image2d<int> ima (3, 3);
- draw::mesh (ima, m, 2, 1);
+ {
+ int vs[5][5] = {
+ {2, 0, 0, 0, 2},
+ {0, 1, 0, 1, 1},
+ {0, 0, 2, 0, 1},
+ {0, 0, 0, 1, 1},
+ {0, 0, 0, 2, 2},
+ };
+ image2d<int> ref (make::image2d(vs));
- mln_assertion (ima == ref);
+ // Points associated to nodes.
+ points_type points;
+ points.push_back (make::point2d (0,0)); // Point associated to node 0.
+ points.push_back (make::point2d (2,2)); // Point associated to node 1.
+ points.push_back (make::point2d (0,4)); // Point associated to node 2.
+ points.push_back (make::point2d (4,3)); // Point associated to node 3.
+ points.push_back (make::point2d (4,4)); // Point associated to node 4.
+
+ // Edges.
+ edges_type edges;
+ edges.push_back (std::make_pair (0, 1));
+ edges.push_back (std::make_pair (1, 2));
+ edges.push_back (std::make_pair (1, 3));
+ edges.push_back (std::make_pair (3, 4));
+ edges.push_back (std::make_pair (4, 2));
+
+ test (points, edges, 5, 5, ref);
+ }
}
Index: TODO
--- TODO (revision 1602)
+++ TODO (working copy)
@@ -1,3 +1,4 @@
+
-*- outline -*-
@@ -34,6 +35,8 @@
value::other (for use in labeling)
...
+** Roland
+R�importer les algos de LPE depuis Olena 0.11 et Olena proto-1.0.
Index: mln/trait/image/props.hh
--- mln/trait/image/props.hh (revision 1602)
+++ mln/trait/image/props.hh (working copy)
@@ -198,6 +198,47 @@
} // end of namespace mln::trait
+
+
+ // FIXME: To be moved elsewhere?
+
+ /// Compute the image::space trait from a point type.
+ /// \{
+
+ // Fwd decl. (used by trait::image::space_from_point).
+ template <typename M, typename C> struct point_;
+ typedef point_<grid::tick, int> point1d;
+ typedef point_<grid::square, int> point2d;
+ typedef point_<grid::cube, int> point3d;
+
+ namespace trait
+ {
+ namespace image
+ {
+
+ /// Function mapping a point type to the corresponding space trait.
+ /// \{
+ template <typename P>
+ struct space_from_point
+ { typedef undef ret; };
+
+ template <>
+ struct space_from_point<point1d>
+ { typedef trait::image::space::one_d ret; };
+
+ template <>
+ struct space_from_point<point2d>
+ { typedef trait::image::space::two_d ret; };
+
+ template <>
+ struct space_from_point<point3d>
+ { typedef trait::image::space::three_d ret; };
+ /// \}
+
+ } // end of namespace mln::trait::image
+
+ } // end of namespace mln::trait
+
} // end of namespace mln
Index: mln/trait/images.hh
--- mln/trait/images.hh (revision 1602)
+++ mln/trait/images.hh (working copy)
@@ -100,11 +100,9 @@
namespace value { template <unsigned n, typename I> struct stack_image; }
-
namespace trait
{
-
template <typename I>
struct undefined_image_
{
@@ -119,6 +117,7 @@
// related to I::pset
typedef undef access; // random, browsing
+ // FIXME: Wouldn't it be nicer to use metal::int_<DIM>?
typedef undef space; // one_d, two_d, three_d
typedef undef size; // huge or regular
typedef undef support; // irregular, aligned < regular
Index: mln/core/mesh_psite.hh
--- mln/core/mesh_psite.hh (revision 1602)
+++ mln/core/mesh_psite.hh (working copy)
@@ -35,6 +35,8 @@
* \todo Clean-up!
*/
+# include <mln/core/mesh_p.hh>
+
namespace mln
{
@@ -44,43 +46,73 @@
// FIXME: Doc!
+ // FIXME: Fix access to member.
template<typename P>
- struct mesh_psite : public Point_Site< mesh_psite<P> >
+ class mesh_psite : public Point_Site< mesh_psite<P> >
{
+ typedef mesh_psite<P> self_;
+
+ public:
typedef mln_mesh(P) mesh;
enum { dim = P::dim };
typedef P point;
typedef mln_dpoint(P) dpoint;
typedef mln_coord(P) coord;
- mesh_psite(unsigned i, mesh_p<P>* m_ptr);
+ /// Construction and assignment.
+ /// \{
+ mesh_psite(const mesh_p<P>& mesh_, unsigned i);
+ mesh_psite(const self_& rhs);
+ self_& operator= (const self_& rhs);
+ /// \}
operator P() const;
-
const point& to_point() const;
-
coord operator[](unsigned i) const;
+ // FIXME: These shouldn't be public.
+ const mesh_p<P>& mesh_;
unsigned i_;
-
- mesh_p<P>* m_ptr_;
};
# ifndef MLN_INCLUDE_ONLY
template<typename P>
inline
- mesh_psite<P>::mesh_psite(unsigned i, mesh_p<P>* m_ptr)
- : i_(i) ,
- m_ptr_(m_ptr)
+ mesh_psite<P>::mesh_psite(const mesh_p<P>& mesh, unsigned i)
+ : mesh_(mesh),
+ i_(i)
+ {
+ }
+
+ template<typename P>
+ inline
+ mesh_psite<P>::mesh_psite(const mesh_psite<P>& rhs)
+ : mesh_(rhs.mesh_),
+ i_(rhs.i_)
+ {
+ }
+
+ template<typename P>
+ inline
+ mesh_psite<P>&
+ mesh_psite<P>::operator= (const mesh_psite<P>& rhs)
{
+ if (&rhs == this)
+ return *this;
+ // FIXME: Could we get rid of this cast?
+ const_cast< mesh_p<P>& >(mesh_) = rhs.mesh_;
+ i_ = rhs.i_;
+ return *this;
}
template<typename P>
inline
mesh_psite<P>::operator P() const
{
- return m_ptr_->loc_[i_];
+ // FIXME: This is quite unsafe: we should check that i_ is a valid
+ // index before dereferencing loc_ to ensure clear error messages.
+ return mesh_.loc_[i_];
}
template<typename P>
@@ -88,7 +120,9 @@
const P&
mesh_psite<P>::to_point() const
{
- return m_ptr_->loc_[i_];
+ // FIXME: This is quite unsafe: we should check that i_ is a valid
+ // index before dereferencing loc_ to ensure clear error messages.
+ return mesh_.loc_[i_];
}
template<typename P>
Index: mln/core/mesh_p.hh
--- mln/core/mesh_p.hh (revision 1602)
+++ mln/core/mesh_p.hh (working copy)
@@ -35,6 +35,9 @@
# include <mln/core/mesh_psite.hh>
# include <mln/core/mesh_p_piter.hh>
+// FIXME: Rename as mesh_p_set? We shall definitely write a coding
+// style somewhere.
+
/*! \file mln/core/mesh_p.hh
*
* \brief Definition of an point set based on graph.
@@ -48,8 +51,10 @@
template<typename P>
struct mesh_p : public internal::point_set_base_< P, mesh_p<P> >
{
- mesh_p (util::graph<void>& gr,
- std::vector<P>& loc);
+ typedef util::graph<void> graph;
+
+ /// Construct a mesh psite set from a graph and an array of locations.
+ mesh_p (graph& gr, std::vector<P>& loc);
/// Point_Site associated type.
typedef mesh_psite<P> psite;
@@ -67,8 +72,9 @@
bool has(const psite& p) const;
- util::graph<void> gr_;
+ graph gr_;
std::vector<P> loc_;
+ // FIXME: (Roland) Is it really useful/needed?
box_<P> bb_;
};
@@ -76,8 +82,7 @@
template<typename P>
inline
- mesh_p<P>::mesh_p (util::graph<void>& gr,
- std::vector<P>& loc)
+ mesh_p<P>::mesh_p (util::graph<void>& gr, std::vector<P>& loc)
: gr_ (gr),
loc_ (loc)
{
Index: mln/core/mesh_p_piter.hh
--- mln/core/mesh_p_piter.hh (revision 1602)
+++ mln/core/mesh_p_piter.hh (working copy)
@@ -30,6 +30,7 @@
# include <mln/core/internal/point_iterator_base.hh>
# include <mln/core/mesh_p.hh>
+# include <mln/core/mesh_psite.hh>
/*! \file mln/core/mesh_p_piter.hh
*
@@ -38,8 +39,12 @@
namespace mln
{
+ // Fwd decls.
+ template<typename P> class mesh_p;
+ template<typename P> class mesh_psite;
- template<typename P> class mesh_p_piter_;
+
+ // FIXME: Why `mesh_p_piter_' and not `mesh_p_piter' (without `_')?
template<typename P>
class mesh_p_piter_ : public internal::point_iterator_base_< P, mesh_p_piter_<P> >
@@ -51,11 +56,10 @@
// Make definitions from super class available.
enum { dim = super_::dim };
+ typedef mesh_psite<P> psite;
+ typedef P point;
- mesh_p_piter_(const mesh_p<P>& s);
-
- /// Reference to the corresponding point.
- const P& to_point() const;
+ mesh_p_piter_(const mesh_p<P>& psite_set);
/// Read-only access to the \p i-th coordinate.
mln_coord(P) operator[](unsigned i) const;
@@ -72,13 +76,26 @@
/// Go to the next point.
void next_();
+ /// Update the internal data of the iterator.
+ void update_();
+
+ /// Reference to the corresponding point.
+ const point& to_point () const;
+
+ /// Reference to the corresponding point site.
+ const psite& to_psite () const;
+
/// Convert the iterator into a point.
- operator P() const;
+ operator point() const;
+
+ /// Convert the iterator into a mesh psite.
+ operator psite() const;
protected:
- const std::vector<P>& loc_;
+ const mesh_p<P>& psite_set_;
unsigned i_;
P p_;
+ psite psite_;
};
@@ -87,22 +104,18 @@
template<typename P>
inline
- mesh_p_piter_<P>::mesh_p_piter_(const mesh_p<P>& s)
- : loc_(s.loc_)
+ mesh_p_piter_<P>::mesh_p_piter_(const mesh_p<P>& psite_set)
+ : psite_set_(psite_set),
+ p_(),
+ // Initialize psite_ to a dummy value.
+ psite_(psite_set, psite_set_.loc_.size())
{
+ // Invalidate i_.
invalidate();
}
template<typename P>
inline
- const P&
- mesh_p_piter_<P>::to_point() const
- {
- return p_;
- }
-
- template<typename P>
- inline
mln_coord(P)
mesh_p_piter_<P>::operator[](unsigned i) const
{
@@ -114,7 +127,7 @@
bool
mesh_p_piter_<P>::is_valid() const
{
- return i_ != loc_.size();
+ return i_ != psite_set_.loc_.size();
}
template<typename P>
@@ -122,7 +135,7 @@
void
mesh_p_piter_<P>::invalidate()
{
- i_ = loc_.size();
+ i_ = psite_set_.loc_.size();
}
template<typename P>
@@ -132,7 +145,7 @@
{
i_ = 0;
if (is_valid())
- p_ = loc_[i_];
+ update_();
}
template<typename P>
@@ -142,7 +155,36 @@
{
++i_;
if (is_valid())
- p_ = loc_[i_];
+ update_();
+ }
+
+ template<typename P>
+ inline
+ void
+ mesh_p_piter_<P>::update_()
+ {
+ // Update p_.
+ p_ = psite_set_.loc_[i_];
+ // Update psite_.
+ psite_ = mesh_psite<P>(psite_set_, i_);
+ }
+
+ template<typename P>
+ inline
+ const P&
+ mesh_p_piter_<P>::to_point() const
+ {
+ mln_precondition(is_valid());
+ return p_;
+ }
+
+ template<typename P>
+ inline
+ const mesh_psite<P>&
+ mesh_p_piter_<P>::to_psite() const
+ {
+ mln_precondition(is_valid());
+ return psite_;
}
template<typename P>
@@ -153,6 +195,14 @@
return p_;
}
+ template<typename P>
+ inline
+ mesh_p_piter_<P>::operator mesh_psite<P>() const
+ {
+ mln_precondition(is_valid());
+ return psite_;
+ }
+
# endif // ! MLN_INCLUDE_ONLY
} // end of mln
Index: mln/core/mesh_window_piter.hh
--- mln/core/mesh_window_piter.hh (revision 0)
+++ mln/core/mesh_window_piter.hh (revision 0)
@@ -0,0 +1,211 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_CORE_MESH_WINDOW_PITER_HH
+# define MLN_CORE_MESH_WINDOW_PITER_HH
+
+// FIXME: Doc.
+
+// FIXME: Shall we rename `piter' as `qiter'?
+
+# include <mln/core/concept/point_iterator.hh>
+# include <mln/core/mesh_p.hh>
+# include <mln/core/mesh_psite.hh>
+
+
+namespace mln
+{
+ // Fwd decls.
+ template <typename P> class mesh_p;
+ template <typename P> class mesh_psite;
+
+
+ template <typename P>
+ class mesh_window_fwd_piter :
+ public Point_Iterator< mesh_window_fwd_piter<P> > // or Iterator<...>?
+ {
+ typedef mesh_window_fwd_piter<P> self_;
+ typedef Point_Iterator< self_ > super_;
+
+ public:
+ typedef mesh_psite<P> psite;
+
+ enum { dim = P::dim };
+ typedef mesh_p<P> mesh;
+
+ typedef P point;
+ // FIXME: Dummy typedef.
+ typedef void dpoint;
+ typedef mln_coord(P) coord;
+
+ public:
+ template <typename W, typename Pref>
+ mesh_window_fwd_piter(const W& win,
+ const Point_Site<Pref>& p_ref);
+
+ bool is_valid() const;
+ void invalidate();
+ void start();
+
+ void next_();
+ bool adjacent_or_equal_to_p_ref_() const;
+
+ // FIXME: In fact, this method should be named `to_psite', since
+ // it return as mln::mesh_psite<P> object, not a P object.
+ const point& to_point() const;
+ operator psite () const;
+ coord operator[](unsigned i) const;
+
+ private:
+ /// The ``central'' point of the window.
+ const psite& p_ref_;
+
+ /// An internal iterator on the set of nodes of the underlying graph.
+ unsigned i_;
+ };
+
+ // FIXME: mesh_window_bkd_piter.
+
+
+# ifndef MLN_INCLUDE_ONLY
+
+ // FIXME: Currently, argument win is ignored.
+ template <typename P>
+ template <typename W, typename Pref>
+ mesh_window_fwd_piter<P>::mesh_window_fwd_piter(const W& /* win */,
+ const Point_Site<Pref>& p_ref)
+ : p_ref_(exact(p_ref).to_psite())
+ {
+ // Invalidate i_.
+ invalidate();
+ }
+
+ template <typename P>
+ bool
+ mesh_window_fwd_piter<P>::is_valid() const
+ {
+ // FIXME: We depend too much on the implementation of util::graph
+ // here. The util::graph should provide the service to abstract
+ // these manipulations.
+ return i_ >= 0 && i_ < p_ref_.mesh_.gr_.nb_node_;
+ }
+
+ template <typename P>
+ void
+ mesh_window_fwd_piter<P>::invalidate()
+ {
+ i_ = p_ref_.mesh_.gr_.nb_node_;
+ }
+
+ template <typename P>
+ void
+ mesh_window_fwd_piter<P>::start()
+ {
+ i_ = 0;
+ if (!adjacent_or_equal_to_p_ref_())
+ next_();
+ }
+
+ template <typename P>
+ void
+ mesh_window_fwd_piter<P>::next_()
+ {
+ // FIXME: This is inefficient. The graph structure should be able
+ // to produce the set of adjacent nodes fast. Boost Graphs
+ // probably provides adequates structures to get fecth these
+ // neighbors in constant time.
+ do
+ ++i_;
+ while (is_valid() && !adjacent_or_equal_to_p_ref_());
+ }
+
+ template <typename P>
+ bool
+ mesh_window_fwd_piter<P>::adjacent_or_equal_to_p_ref_() const
+ {
+ // FIXME: Likewise, this is inefficient.
+
+ // Check wether the iterator points to P_REF_.
+ if (i_ == p_ref_.i_)
+ return true;
+
+ typedef std::list<unsigned> adjacency_type;
+
+ // Check whether the iterator is among the neighbors of P_REF_.
+ {
+ // Paranoid assertion.
+ assert (p_ref_.i_ >= 0 &&
+ p_ref_.i_ < p_ref_.mesh_.gr_.nodes_.size ());
+ const adjacency_type& p_ref_neighbs =
+ p_ref_.mesh_.gr_.nodes_[p_ref_.i_]->links;
+ adjacency_type::const_iterator j =
+ std::find (p_ref_neighbs.begin(), p_ref_neighbs.end(), i_);
+ if (j != p_ref_neighbs.end())
+ return true;
+ }
+
+ // Check whether P_REF_ is among the neighbors of the iterator.
+ {
+ assert (is_valid ());
+ const adjacency_type& i_neighbs = p_ref_.mesh_.gr_.nodes_[i_]->links;
+ adjacency_type::const_iterator k =
+ std::find (i_neighbs.begin(), i_neighbs.end(), p_ref_.i_);
+ if (k != i_neighbs.end())
+ return true;
+ }
+
+ // Otherwise, the iterator is not adjacent to P_REF_.
+ return false;
+ }
+
+ template <typename P>
+ const P&
+ mesh_window_fwd_piter<P>::to_point() const
+ {
+ return p_ref_.mesh_.loc_[i_];
+ }
+
+ template <typename P>
+ mesh_window_fwd_piter<P>::operator mesh_psite<P> () const
+ {
+ return mesh_psite<P>(p_ref_.mesh_, i_);
+ }
+
+ template <typename P>
+ inline
+ mln_coord(P)
+ mesh_window_fwd_piter<P>::operator[](unsigned i) const
+ {
+ assert(i < dim);
+ return to_point()[i];
+ }
+
+# endif // ! MLN_INCLUDE_ONLY
+
+} // end of namespace mln
+
+#endif // ! MLN_CORE_MESH_WINDOW_PITER_HH
Index: mln/core/mesh_elt_window.hh
--- mln/core/mesh_elt_window.hh (revision 0)
+++ mln/core/mesh_elt_window.hh (revision 0)
@@ -0,0 +1,169 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_WIN_MESH_ELT_WINDOW_HH
+# define MLN_WIN_MESH_ELT_WINDOW_HH
+
+/*! \file mln/core/mesh_elt_window.hh
+ *
+ * \brief Definition of the elementary neighborhood (wrongly
+ * -- but purposefully -- named "window" here, for consistency
+ * reasons) on a mesh (a graph, in fact).
+ *
+ * \todo Make naming coherent: we have window (without '_') but
+ * point_, neighb_, etc.
+ */
+
+# include <mln/core/concept/window.hh>
+# include <mln/core/mesh_psite.hh>
+# include <mln/core/mesh_window_piter.hh>
+
+
+namespace mln
+{
+ // Fwd decls.
+ template <typename P> class mesh_window_fwd_piter;
+ template <typename P> class mesh_window_bkd_piter;
+
+
+ /*! \brief Elementary window on mesh class.
+ *
+ * FIXME: Doc.
+ */
+ template <typename P>
+ class mesh_elt_window : public Window< mesh_elt_window<P> >
+ {
+ typedef mesh_elt_window<P> self_;
+
+ public:
+ /// Associated types.
+ /// \{
+ /// The type of point stored into the window.
+ // FIXME: Is this right, if we consider that this window stores
+ // psites, not points?
+ typedef P point;
+
+ // FIXME: This is a dummy value. This is yet another evidence
+ // that mesh_elt_window shall not be a Window, and therefore be
+ // renamed as mesh_elt_neighb, or better: elt_graph_neighb.
+ typedef void dpoint;
+
+ /*! \brief Point_Iterator type to browse the points of a generic window
+ * w.r.t. the ordering of delta-points.
+ */
+ typedef mesh_window_fwd_piter<P> fwd_qiter;
+
+ /*! \brief Point_Iterator type to browse the points of a generic window
+ * w.r.t. the reverse ordering of delta-points.
+ */
+ typedef mesh_window_bkd_piter<P> bkd_qiter;
+
+ /// The default qiter type.
+ typedef fwd_qiter qiter;
+ /// \}
+
+ /// Construct an elementary mesh window centered on \a psite.
+ mesh_elt_window(/*const mesh_psite<P>& psite*/);
+
+ // FIXME: The following methods make no sense for a
+ // general-purpose neighborhood. Anyway, we provide
+ // implementations for them for this first draft of graph
+ // neighborhood.
+ bool is_empty() const;
+ bool is_centered() const;
+ bool is_symmetric() const;
+ unsigned delta() const;
+ self_& sym();
+
+ // protected:
+ // const mesh_psite<P>& psite_;
+ };
+
+
+ // FIXME: Add an operator<< on ostreams ?
+
+
+# ifndef MLN_INCLUDE_ONLY
+
+ template <typename P>
+ inline
+ mesh_elt_window<P>::mesh_elt_window(/*const mesh_psite<P>& psite*/)
+ // : psite_(psite)
+ {
+ }
+
+ template <typename P>
+ inline
+ bool
+ mesh_elt_window<P>::is_empty() const
+ {
+ // FIXME: Dummy value.
+ return false;
+ }
+
+ template <typename P>
+ inline
+ bool
+ mesh_elt_window<P>::is_centered() const
+ {
+ // FIXME: Dummy value.
+ return false;
+ }
+
+ template <typename P>
+ inline
+ bool
+ mesh_elt_window<P>::is_symmetric() const
+ {
+ // FIXME: Dummy value.
+ return false;
+ }
+
+ template <typename P>
+ inline
+ unsigned
+ mesh_elt_window<P>::delta() const
+ {
+ // FIXME: Dummy value.
+ return 0;
+ }
+
+ template <typename P>
+ inline
+ mesh_elt_window<P>&
+ mesh_elt_window<P>::sym()
+ {
+ // FIXME: Dummy value.
+ return *this;
+ }
+
+# endif // ! MLN_INCLUDE_ONLY
+
+} // end of namespace mln
+
+
+#endif // ! MLN_WIN_MESH_ELT_WINDOW_HH
Index: mln/core/box_piter.hh
--- mln/core/box_piter.hh (revision 1602)
+++ mln/core/box_piter.hh (working copy)
@@ -62,7 +62,7 @@
*/
box_fwd_piter_(const box_<P>& b);
- /// Convertion to point.
+ /// Conversion to point.
operator P() const;
/// Reference to the corresponding point.
@@ -112,7 +112,7 @@
*/
box_bkd_piter_(const box_<P>& b);
- /// Convertion to point.
+ /// Conversion to point.
operator P() const;
/// Reference to the corresponding point.
@@ -164,7 +164,7 @@
*/
box_bounds_piter_(const box_<P>& b);
- /// Convertion to point.
+ /// Conversion to point.
operator P() const;
/// Reference to the corresponding point.
Index: mln/core/mesh_image.hh
--- mln/core/mesh_image.hh (revision 1602)
+++ mln/core/mesh_image.hh (working copy)
@@ -30,13 +30,16 @@
/*! \file mln/core/mesh_image.hh
*
- * \brief Definition of an graph-based image.
+ * \brief Definition of a graph-based image.
*/
-# include <mln/core/internal/image_identity.hh>
+# include <mln/trait/images.hh>
+
+# include <mln/core/internal/image_primary.hh>
# include <mln/metal/vec.hh>
# include <mln/core/mesh_p.hh>
# include <mln/core/mesh_psite.hh>
+# include <mln/value/set.hh>
# include <vector>
namespace mln
@@ -59,11 +62,36 @@
} // end of namespace mln::internal
+
+ namespace trait
+ {
+
+ template <typename P, typename V>
+ struct image_< mesh_image<P, V> > : default_image_< V, mesh_image<P, V> >
+ {
+ typedef trait::image::category::primary category;
+
+ // FIXME: Is that right?
+ typedef trait::image::access::random access;
+ typedef typename trait::image::space_from_point<P>::ret space;
+ typedef trait::image::size::regular size;
+ typedef trait::image::support::irregular support;
+
+ typedef trait::image::border::none border;
+ typedef trait::image::data::stored data;
+ typedef trait::image::io::read_write io;
+ // FIXME: Is that right?
+ typedef trait::image::speed::fast speed;
+ };
+
+ } // end of namespace mln::trait
+
/*! \brief FIXME
*
*/
template <typename P, typename V>
- struct mesh_image : public internal::image_primary_< mesh_p<P>, mesh_image<P, V> >
+ struct mesh_image :
+ public internal::image_primary_< mesh_p<P>, mesh_image<P, V> >
{
typedef mln::internal::image_base_< mesh_p<P>, mesh_image<P, V> > super_;
@@ -143,7 +171,7 @@
const V&
mesh_image<P, V>::operator()(const mesh_psite<P>& p) const
{
- mln_precondition(p.m_ptr_ == & this->data_->mesh_);
+ mln_precondition(&p.mesh_ == &this->data_->mesh_);
mln_precondition(p.i_ < this->data_->val_.size());
return this->data_->val_[p.i_];
}
@@ -153,7 +181,7 @@
V&
mesh_image<P, V>::operator()(const mesh_psite<P>& p)
{
- mln_precondition(p.m_ptr_ == & this->data_->mesh_);
+ mln_precondition(&p.mesh_ == &this->data_->mesh_);
mln_precondition(p.i_ < this->data_->val_.size());
return this->data_->val_[p.i_];
}
Index: mln/draw/mesh.hh
--- mln/draw/mesh.hh (revision 1602)
+++ mln/draw/mesh.hh (working copy)
@@ -75,6 +75,9 @@
# ifndef MLN_INCLUDE_ONLY
+ // FIXME: Add assertions on the size of the image: it must be big
+ // enough to hold the reprensentation of the graph.
+
template <typename I, typename P>
inline
void
Index: mln/util/graph.hh
--- mln/util/graph.hh (revision 1602)
+++ mln/util/graph.hh (working copy)
@@ -40,6 +40,9 @@
* \brief Definition of a graph.
*/
+// FIXME: Rename `s_node' to `node'.
+// FIXME: Rename `s_edge' to `edge'.
+// FIXME: Rename `links' to `edges'.
namespace mln
{
@@ -53,6 +56,7 @@
struct s_node
{
T data;
+ // FIXME: Rename to `out_edges'.
std::vector<unsigned> links;
};
@@ -63,6 +67,7 @@
template<>
struct s_node<void>
{
+ // FIXME: Rename to `out_edges'.
std::list<unsigned> links;
};
@@ -88,21 +93,21 @@
unsigned node2;
};
- /*! \brief Generic graph using s_node and s_edge.
- *
- */
+ /// \brief Generic graph structure using s_node and s_edge.
+ /* FIXME: We don't mention anywhere whether this graph structure
+ handles directed or undirected graphs! */
template<typename N, typename E = void>
struct graph
{
- /*! \brief Constructor.
- *
- */
+ /// The type of the set of nodes.
+ typedef std::vector< s_node<N>* > nodes;
+ /// The type of the set of edges.
+ typedef std::vector< s_edge<E>* > edges;
+
graph ();
- /*! \brief Add a void node.
- *
- */
- void add_node (void);
+ /*! \brief Add a void node. */
+ void add_node ();
/*! \brief Add a void edge between \p n1 and \p n2.
@@ -112,7 +117,6 @@
*
* \pre n1 < nb_node_.
* \pre n2 < nb_node_.
- *
*/
void add_edge (unsigned n1, unsigned n2);
@@ -123,7 +127,6 @@
*
* \pre nodes_.size () == nb_node_.
* \pre links_.size () == nb_link_.
- *
*/
void consistency () const;
@@ -131,7 +134,6 @@
/*! \brief Print on \p ostr the graph.
*
* \param[in] ostr The output stream.
- *
*/
void print_debug (std::ostream& ostr) const;
@@ -144,12 +146,13 @@
unsigned nb_link_;
/// The vector where is stocked the pointers of nodes.
- std::vector<struct s_node<N>*> nodes_;
+ nodes nodes_;
/// The vector where is stocked the pointers of links.
- std::vector<struct s_edge<E>*> links_;
+ edges links_;
};
+
# ifndef MLN_INCLUDE_ONLY
template<typename N, typename E>
@@ -165,7 +168,7 @@
template<typename N, typename E>
inline
void
- graph<N, E>::add_node (void)
+ graph<N, E>::add_node ()
{
struct s_node<N>* n = new struct s_node<N>;
@@ -183,7 +186,7 @@
struct s_edge<E>* edge;
- edge = new struct s_edge<E>;
+ edge = new s_edge<E>;
edge->node1 = n1;
edge->node2 = n2;
links_.push_back (edge);