DOC: reorganise the Doxygen configuration and structure

- upgrade the configuration to a current version
- provide a frontpage with cross-links to other documentation
- define a set of modules; relevant classes and files can be
  added to these, to create a exploration path for new readers
- fix a lot of errors in documentation comments
- use a custom configuration for the documentation pages
- tweak the navigation, the sections and further arrangements
This commit is contained in:
Fischlurch 2013-10-25 06:34:38 +02:00
parent 974c670d41
commit 6822a9e2fb
38 changed files with 772 additions and 547 deletions

1
.gitignore vendored
View file

@ -23,4 +23,5 @@ semantic.cache
wiki/backups/* wiki/backups/*
doc/devel/draw/*.png doc/devel/draw/*.png
doc/devel/uml/fig128309.png doc/devel/uml/fig128309.png
doc/devel/lumiera.tag
m4/* m4/*

View file

@ -59,30 +59,30 @@ def DoxyfileParse(file_contents):
data[key][-1] += token data[key][-1] += token
while token: while token:
if token in ['\n']: if token in ['\n']:
if last_token not in ['\\']: if last_token not in ['\\']:
key_token = True key_token = True
elif token in ['\\']: elif token in ['\\']:
pass pass
elif key_token: elif key_token:
key = token key = token
key_token = False key_token = False
else: else:
if token == "+=": if token == "+=":
if not data.has_key(key): if not data.has_key(key):
data[key] = list() data[key] = list()
elif token == "=": elif token == "=":
data[key] = list() data[key] = list()
else: else:
append_data( data, key, new_data, token ) append_data(data, key, new_data, token)
new_data = True new_data = True
last_token = token last_token = token
token = lex.get_token() token = lex.get_token()
if last_token == '\\' and token != '\n': if last_token == '\\' and token != '\n':
new_data = False new_data = False
append_data( data, key, new_data, '\\' ) append_data(data, key, new_data, '\\')
# compress lists of len 1 into single strings # compress lists of len 1 into single strings
for (k, v) in data.items(): for (k, v) in data.items():

0
admin/scons/IconSvgRenderer.py Executable file → Normal file
View file

View file

@ -3,7 +3,6 @@
## SConscript - SCons buildscript for Documentation ## SConscript - SCons buildscript for Documentation
## ##
from Buildhelper import scanSubtree
Import('env') Import('env')

View file

@ -1,4 +1,4 @@
# Doxyfile 1.5.6 # Doxyfile 1.8.1.2
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
@ -6,7 +6,9 @@
DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = Lumiera PROJECT_NAME = Lumiera
PROJECT_NUMBER = 0.1+pre PROJECT_NUMBER = 0.1+pre
OUTPUT_DIRECTORY = PROJECT_BRIEF =
PROJECT_LOGO = draw/rendered/LumiLogo-small.png
OUTPUT_DIRECTORY =
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
@ -24,63 +26,62 @@ ABBREVIATE_BRIEF = "The $name class" \
the the
ALWAYS_DETAILED_SEC = YES ALWAYS_DETAILED_SEC = YES
INLINE_INHERITED_MEMB = NO INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES FULL_PATH_NAMES = NO
STRIP_FROM_PATH = ../../src/ \ STRIP_FROM_PATH = ../../src/ \
../../tests/ ../../tests/
STRIP_FROM_INC_PATH = STRIP_FROM_INC_PATH = ../../src/
SHORT_NAMES = NO SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES JAVADOC_AUTOBRIEF = YES
QT_AUTOBRIEF = NO QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = YES
INHERIT_DOCS = YES INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4 TAB_SIZE = 4
ALIASES = ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO EXTENSION_MAPPING =
OPTIMIZE_OUTPUT_JAVA = NO MARKDOWN_SUPPORT = YES
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
BUILTIN_STL_SUPPORT = YES BUILTIN_STL_SUPPORT = YES
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES SUBGROUPING = YES
TYPEDEF_HIDES_STRUCT = NO INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = YES
TYPEDEF_HIDES_STRUCT = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Build related configuration options # Build related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
EXTRACT_ALL = NO EXTRACT_ALL = NO
EXTRACT_PRIVATE = YES EXTRACT_PRIVATE = YES
EXTRACT_PACKAGE = NO
EXTRACT_STATIC = YES EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO
EXTRACT_ANON_NSPACES = YES
HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = YES INTERNAL_DOCS = YES
CASE_SENSE_NAMES = YES CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO HIDE_SCOPE_NAMES = YES
SHOW_INCLUDE_FILES = YES SHOW_INCLUDE_FILES = YES
FORCE_LOCAL_INCLUDES = YES
INLINE_INFO = YES INLINE_INFO = YES
SORT_MEMBER_DOCS = NO SORT_MEMBER_DOCS = NO
SORT_BRIEF_DOCS = YES SORT_BRIEF_DOCS = YES
SORT_MEMBERS_CTORS_1ST = YES
SORT_GROUP_NAMES = NO SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = NO STRICT_PROTO_MATCHING = NO
GENERATE_TESTLIST = NO GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = NO GENERATE_BUGLIST = NO
GENERATE_DEPRECATEDLIST= NO GENERATE_DEPRECATEDLIST= NO
ENABLED_SECTIONS = ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 0
SHOW_USED_FILES = YES SHOW_USED_FILES = YES
SHOW_DIRECTORIES = NO
SHOW_FILES = YES SHOW_FILES = YES
SHOW_NAMESPACES = YES SHOW_NAMESPACES = YES
FILE_VERSION_FILTER = FILE_VERSION_FILTER =
LAYOUT_FILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@ -88,67 +89,38 @@ QUIET = NO
WARNINGS = YES WARNINGS = YES
WARN_IF_UNDOCUMENTED = NO WARN_IF_UNDOCUMENTED = NO
WARN_IF_DOC_ERROR = YES WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = YES WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text" WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE = warnings.txt WARN_LOGFILE = html/doxygen-warnings.txt
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = ../../src/
INPUT_ENCODING = UTF-8 INPUT_ENCODING = UTF-8
INPUT = ../../src/ \
../../tests \
../../admin/scons
FILE_PATTERNS = *.c \ FILE_PATTERNS = *.c \
*.cc \ *.cc \
*.cxx \
*.cpp \ *.cpp \
*.c++ \
*.d \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.h \ *.h \
*.hh \ *.hh \
*.hxx \
*.hpp \ *.hpp \
*.h++ \
*.idl \
*.odl \
*.cs \
*.php \
*.php3 \
*.inc \ *.inc \
*.m \
*.mm \
*.dox \ *.dox \
*.py \ *.py
*.C \
*.CC \
*.C++ \
*.II \
*.I++ \
*.H \
*.HH \
*.H++ \
*.CS \
*.PHP \
*.PHP3 \
*.M \
*.MM \
*.PY
RECURSIVE = YES RECURSIVE = YES
EXCLUDE = EXCLUDE =
EXCLUDE_SYMLINKS = YES EXCLUDE_SYMLINKS = YES
EXCLUDE_PATTERNS = EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS = EXCLUDE_SYMBOLS =
EXAMPLE_PATH = EXAMPLE_PATH =
EXAMPLE_PATTERNS = * EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO EXAMPLE_RECURSIVE = NO
IMAGE_PATH = IMAGE_PATH =
INPUT_FILTER = INPUT_FILTER =
FILTER_PATTERNS = FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing # configuration options related to source browsing
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@ -157,14 +129,14 @@ INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES REFERENCES_RELATION = YES
REFERENCES_LINK_SOURCE = YES REFERENCES_LINK_SOURCE = NO
USE_HTAGS = NO USE_HTAGS = NO
VERBATIM_HEADERS = YES VERBATIM_HEADERS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the alphabetical class index # configuration options related to the alphabetical class index
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5 COLS_IN_ALPHA_INDEX = 1
IGNORE_PREFIX = lumiera:: \ IGNORE_PREFIX = lumiera:: \
lumiera_ \ lumiera_ \
lumi_ \ lumi_ \
@ -175,26 +147,27 @@ IGNORE_PREFIX = lumiera:: \
GENERATE_HTML = YES GENERATE_HTML = YES
HTML_OUTPUT = html HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html HTML_FILE_EXTENSION = .html
HTML_HEADER = HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
HTML_STYLESHEET = HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES HTML_EXTRA_FILES =
HTML_COLORSTYLE_HUE = 344
HTML_COLORSTYLE_SAT = 68
HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = YES
HTML_DYNAMIC_SECTIONS = YES
HTML_INDEX_NUM_ENTRIES = 100
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
GENERATE_DOCSET = NO GENERATE_ECLIPSEHELP = NO
DOCSET_FEEDNAME = "Lumiera Doxygen docs" TOC_EXPAND = YES
DOCSET_BUNDLE_ID = org.doxygen.Project
HTML_DYNAMIC_SECTIONS = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
CHM_INDEX_ENCODING =
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES GENERATE_TREEVIEW = YES
TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 200
FORMULA_FONTSIZE = 10 ENUM_VALUES_PER_LINE = 1
FORMULA_FONTSIZE = 9
FORMULA_TRANSPARENT = YES
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the LaTeX output # configuration options related to the LaTeX output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@ -204,80 +177,58 @@ LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = YES COMPACT_LATEX = YES
PAPER_TYPE = a4wide PAPER_TYPE = a4wide
EXTRA_PACKAGES = EXTRA_PACKAGES =
LATEX_HEADER = LATEX_HEADER =
LATEX_FOOTER =
PDF_HYPERLINKS = YES PDF_HYPERLINKS = YES
USE_PDFLATEX = YES USE_PDFLATEX = YES
LATEX_BATCHMODE = YES LATEX_BATCHMODE = YES
LATEX_HIDE_INDICES = NO LATEX_HIDE_INDICES = NO
LATEX_SOURCE_CODE = NO
LATEX_BIB_STYLE = plain
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the RTF output # configuration options related to other output formats
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_RTF = NO 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 GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO GENERATE_XML = NO
XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the preprocessor # Configuration options related to the preprocessor
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES
INCLUDE_PATH = INCLUDE_PATH =
INCLUDE_FILE_PATTERNS = INCLUDE_FILE_PATTERNS =
PREDEFINED = PREDEFINED =
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::additions related to external references # Configuration::additions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = GENERATE_TAGFILE = lumiera.tag
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES CLASS_DIAGRAMS = YES
MSCGEN_PATH = MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES HAVE_DOT = YES
DOT_FONTNAME = FreeSans DOT_FONTNAME = FreeSans
DOT_FONTPATH = DOT_FONTSIZE = 8
DOT_FONTPATH =
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES GROUP_GRAPHS = YES
UML_LOOK = YES UML_LOOK = YES
UML_LIMIT_NUM_FIELDS = 8
TEMPLATE_RELATIONS = YES TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = NO INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO INCLUDED_BY_GRAPH = NO
@ -285,16 +236,11 @@ CALL_GRAPH = YES
CALLER_GRAPH = YES CALLER_GRAPH = YES
GRAPHICAL_HIERARCHY = NO GRAPHICAL_HIERARCHY = NO
DIRECTORY_GRAPH = YES DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = svg
DOT_PATH = INTERACTIVE_SVG = YES
DOTFILE_DIRS = DOT_GRAPH_MAX_NODES = 80
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 1000 MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO DOT_TRANSPARENT = YES
DOT_MULTI_TARGETS = YES DOT_MULTI_TARGETS = YES
GENERATE_LEGEND = YES GENERATE_LEGEND = YES
DOT_CLEANUP = YES DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO

190
doc/devel/DoxygenLayout.xml Normal file
View file

@ -0,0 +1,190 @@
<doxygenlayout version="1.0">
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title="Lumiera API Documentation"/>
<tab type="user" url="http://Lumiera.org/documentation/user/intro/intro.html" title="Intro"/>
<tab type="user" url="http://Lumiera.org/documentation/technical/overview.html" title="Overview"/>
<tab type="modules" visible="yes" title="" intro="Subsystems"/>
<tab type="classes" visible="yes" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="no" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="namespaces" visible="yes" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="yes" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="pages" visible="yes" title="" intro=""/>
<tab type="examples" visible="yes" title="" intro=""/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="no"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<allmemberslink visible="yes"/>
<detaileddescription title="Description"/>
<memberdecl>
<publictypes title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicstaticattributes title=""/>
<publicattributes title=""/>
<nestedclasses visible="yes" title=""/>
<friends title=""/>
<properties title=""/>
<events title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<memberdef>
<typedefs title=""/>
<enums title=""/>
<inlineclasses title=""/>
<constructors title=""/>
<functions title=""/>
<properties title=""/>
<variables title=""/>
<events title=""/>
<related title=""/>
</memberdef>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="no"/>
<detaileddescription title="Description"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<typedefs title=""/>
<enums title=""/>
<classes visible="yes" title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<memberdef>
<typedefs title=""/>
<enums title=""/>
<inlineclasses title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="no"/>
<sourcelink visible="yes"/>
<detaileddescription title="Description"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<memberdecl>
<classes visible="yes" title=""/>
<typedefs title=""/>
<enums title=""/>
<defines title=""/>
<functions title=""/>
<variables title=""/>
<namespaces visible="yes" title=""/>
<membergroups visible="yes"/>
</memberdecl>
<memberdef>
<typedefs title=""/>
<enums title=""/>
<defines title=""/>
<inlineclasses title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="no"/>
<detaileddescription title="Description"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<groupgraph visible="$GROUP_GRAPHS"/>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

View file

@ -1,5 +1,7 @@
Documentation
=============
= Documentation = // Menu : append child 'doxy'
This documentation section contains documentation for both users and developers. This documentation section contains documentation for both users and developers.
@ -32,6 +34,11 @@ moved over to the documentation section(s) of the Lumiera website.
-> access the Proc-Layer link:http://lumiera.org/wiki/renderengine.html[TiddlyWiki online here] -> access the Proc-Layer link:http://lumiera.org/wiki/renderengine.html[TiddlyWiki online here]
=== API Documentation ===
We use the link:http://www.doxygen.org/index.html[Doxygen] tool to extract
code comments and generate code level API and reference documentation.
-> link:http://lumiera.org/doxy/index.html[Doxygen generated documentation]
== Media and Presentations == == Media and Presentations ==

View file

@ -44,6 +44,8 @@ namespace engine {
* handed over to the scheduler for time-bound or bandwidth-controlled * handed over to the scheduler for time-bound or bandwidth-controlled
* execution * execution
* *
* @ingroup engine
* @ingroup scheduler
* @todo this is planned to become the frontend * @todo this is planned to become the frontend
* to the render node network, which can be considered * to the render node network, which can be considered
* at the lower end of the middle layer; the actual * at the lower end of the middle layer; the actual

View file

@ -126,13 +126,14 @@ lumiera_resourcecollector_destroy (void);
* (to find out about the device) for STORAGE and CACHE resources * (to find out about the device) for STORAGE and CACHE resources
* @return either returns 1 or calls _exit() * @return either returns 1 or calls _exit()
* *
* @example * @code
* void* data; * void* data;
* size_t size = 1000; * size_t size = 1000;
* enum lumiera_resource_try iteration = LUMIERA_RESOURCE_ONE; * enum lumiera_resource_try iteration = LUMIERA_RESOURCE_ONE;
* do { * do {
* data = malloc (size); * data = malloc (size);
* } while (!data && lumiera_resourcecollector_run (LUMIERA_RESOURCE_MEMORY, &iteration, &size)); * } while (!data && lumiera_resourcecollector_run (LUMIERA_RESOURCE_MEMORY, &iteration, &size));
* @endcode
*/ */
int int
lumiera_resourcecollector_run (enum lumiera_resource which, enum lumiera_resource_try* iteration, void* context); lumiera_resourcecollector_run (enum lumiera_resource which, enum lumiera_resource_try* iteration, void* context);

101
src/doxygen.dox Normal file
View file

@ -0,0 +1,101 @@
/*
DOXYGEN.dox - font page for the Doxygen API documentation
Copyright (C) Lumiera.org
2013, Hermann Vosseler <Ichthyostega@web.de>
Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program 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 program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/** @mainpage Lumiera API Documentation
This section contains the API and reference documentation
of the Lumiera code base. It is generated automatically from the
source code comments.
Lumiera Documentation Structure
===============================
Lumiera comes with extensive documentation, which is organised into several tiers or layers,
according to the target audience, the degree of detail and the level of technicality.
Mostly, the sources of the documentation are kept in-tree; documentation pages are generated
with the *ASCIIDOC* tool and published at the [Lumiera website](http://Lumiera.org/documentation)
- as a general introduction, you should read the [»outer space« document](http://Lumiera.org/documentation/user/intro/intro.html)
- further user documentation -- mostly tutorials -- is available in the [user section](http://Lumiera.org/documentation/user/)
- Architecture and specification documents can be found in the [design section](http://www.lumiera.org/documentation/design/)
- fundamental discussions and decisions are documented in the form of [RfC entries](http://www.lumiera.org/documentation/devel/design_process.html)
- as entrance to the *technical level*, developers should read the [»inner core«](http://www.lumiera.org/documentation/technical/overview.html) document
- from there, various pages in the [technical documentation](http://www.lumiera.org/documentation/technical) detail specific aspects
of implementation and technology. They treat some topics in a coherent fashion and introduce the concepts and abstractions
necessary to understand the actual code
- right now, you are looking at the **API Documentation**, which is the entrance point to the actual code
- on your exploration path down to the internal details, you might want to follow the overview given
+ by the [Layer and Subsystem](modules.html) overview
+ the file level comments of relevant interfaces
*/
/* ==== Layers ==== */
/** @defgroup backend Backend-Layer
*/
/** @defgroup proc Proc-Layer
*/
/** @defgroup gui Graphical User Interface
*/
/* ==== Subsystems ==== */
/** @defgroup asset Asset Management
@ingroup proc
*/
/** @defgroup session Session
@ingroup proc
*/
/** @defgroup player Playback and Render Control
@ingroup proc
*/
/** @defgroup engine Render Engine
@ingroup proc
*/
/** @defgroup scheduler Scheduler
@ingroup backend
*/
/* ==== Global Namespaces ==== */
/** @namespace lumiera
Lumiera public interface.
Global interfaces and facilities accessible from plugins and scripts.
It's probably a good idea to pull it in explicitly and to avoid nesting
implementation namespaces within \c lumiera::
*/
/** @namespace lib
Implementation namespace for support and library code.
*/

View file

@ -59,7 +59,7 @@ public:
/** /**
* Definition of the layout track tree type. * Definition of the layout track tree type.
*/ */
typedef lumiera::tree< std::tr1::shared_ptr<model::Track> > TrackTree; typedef lib::Tree< std::tr1::shared_ptr<model::Track> > TrackTree;
public: public:
/** /**

View file

@ -64,6 +64,7 @@ namespace lumiera {
* Global access point for starting playback and render processes, * Global access point for starting playback and render processes,
* calculating media data by running the render engine. * calculating media data by running the render engine.
* *
* @ingroup player
* @todo WIP-WIP-WIP 6/2011 * @todo WIP-WIP-WIP 6/2011
* @note Lumiera is not yet able actually to deliver rendered data. * @note Lumiera is not yet able actually to deliver rendered data.
* @todo there should be an accompanying CL Interface defined for * @todo there should be an accompanying CL Interface defined for
@ -90,6 +91,7 @@ namespace lumiera {
* through this handle (by ref count). Client code is supposed to use the * through this handle (by ref count). Client code is supposed to use the
* API on this handle to navigate and control the playback mode. * API on this handle to navigate and control the playback mode.
* *
* @ingroup player
* @see handle.hpp * @see handle.hpp
* @see player-service.cpp implementation * @see player-service.cpp implementation
*/ */

View file

@ -67,8 +67,8 @@ This code is heavily inspired by
** work besides releasing references, and we acknowledge that singletons can be released ** work besides releasing references, and we acknowledge that singletons can be released
** in \em arbitrary order. ** in \em arbitrary order.
** **
** @see Depend ** @see lib::Depend
** @see DependencyFactory ** @see lib::DependencyFactory
** @see lib::test::Depend4Test ** @see lib::test::Depend4Test
** @see singleton-test.cpp ** @see singleton-test.cpp
** @see dependency-factory-test.cpp ** @see dependency-factory-test.cpp
@ -99,8 +99,6 @@ namespace lib {
* To my understanding, the answer is yes. See * To my understanding, the answer is yes. See
* [POSIX](http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap04.html#tag_04_10) * [POSIX](http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap04.html#tag_04_10)
* @param SI the class of the Singleton instance * @param SI the class of the Singleton instance
* @param Create policy defining how to create/destroy the instance
* @param Life policy defining how to manage Singleton Lifecycle
*/ */
template<class SI> template<class SI>
class Depend class Depend

View file

@ -617,9 +617,9 @@ namespace lib {
/** explicit builder to allow creating a const variant from the basic srcIter type. /** explicit builder to allow creating a const variant from the basic srcIter type.
* Again, the reason necessitating this "backdoor" is that we want to swallow one level * Again, the reason necessitating this "backdoor" is that we want to swallow one level
* of indirection. Generally speaking \code const T ** \endcode is not the same as * of indirection. Generally speaking `const T **` is not the same as `T * const *`,
* \code T * const * \endcode, but in our specific case the API ensures that a * but in our specific case the API ensures that a `PtrDerefIter<WrappedConstIterType>`
* PtrDerefIter<WrappedConstIterType> only exposes const elements. * only exposes const elements.
*/ */
static PtrDerefIter static PtrDerefIter
build_by_cast (WrappedIterType const& srcIter) build_by_cast (WrappedIterType const& srcIter)

View file

@ -17,7 +17,9 @@
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
* *****************************************************/
#include "lib/lockerror.h" #include "lib/lockerror.h"
@ -29,7 +31,7 @@ LUMIERA_ERROR_DEFINE (LOCK_RELEASE, "unlocking failed");
LUMIERA_ERROR_DEFINE (LOCK_DESTROY, "lock destroy failed"); LUMIERA_ERROR_DEFINE (LOCK_DESTROY, "lock destroy failed");
/* runtime errors */ /* runtime errors */
LUMIERA_ERROR_DEFINE (LOCK_INVAL, "lock initialization error"); LUMIERA_ERROR_DEFINE (LOCK_INVAL, "lock initialisation error");
LUMIERA_ERROR_DEFINE (LOCK_BUSY, "already locked"); LUMIERA_ERROR_DEFINE (LOCK_BUSY, "already locked");
LUMIERA_ERROR_DEFINE (LOCK_DEADLK, "already locked by this thread"); LUMIERA_ERROR_DEFINE (LOCK_DEADLK, "already locked by this thread");
LUMIERA_ERROR_DEFINE (LOCK_PERM, "not locked by this thread"); LUMIERA_ERROR_DEFINE (LOCK_PERM, "not locked by this thread");

View file

@ -196,8 +196,8 @@ namespace lib {
* or cleared afterwards, and this #empty() state may be detected * or cleared afterwards, and this #empty() state may be detected
* at runtime. In a similar vein, when the stored object has a * at runtime. In a similar vein, when the stored object has a
* \c bool validity check, this can be accessed though #isValid(). * \c bool validity check, this can be accessed though #isValid().
* Moreover \code !empty() && isValid() \endcode may be tested * Moreover `!empty() && isValid()` may be tested as by `bool`
* as by \bool conversion of the Holder object. The whole compound * conversion of the Holder object. The whole compound
* is copyable if and only if the contained object is copyable. * is copyable if and only if the contained object is copyable.
* *
* @note assertion failure when trying to place an instance not * @note assertion failure when trying to place an instance not

View file

@ -37,18 +37,18 @@
* *
* This user defined macro shall be undefed after use. * This user defined macro shall be undefed after use.
* *
* @example * @code
* #define PPMPL_FOREACH_P1_FOO(arg) arg, * #define PPMPL_FOREACH_P1_FOO(arg) arg,
* *
* {PPMPL_FOREACH(P1, FOO(1), FOO(2), FOO(3)), -1} * {PPMPL_FOREACH(P1, FOO(1), FOO(2), FOO(3)), -1}
* *
* #undef PPMPL_FOREACH_P1_FOO * #undef PPMPL_FOREACH_P1_FOO
* @endcode
* *
* Would expand to the sequence: * This definition would be expanded to the sequence `{1, 2, 3, -1}`
* {1, 2, 3, -1}
* *
* One can not recursively nest preprocessor macros. To allow this we define PPMPL_FOREACH_L1 * One can not recursively nest preprocessor macros. To allow this we define PPMPL_FOREACH_L1
* to PPMPL_FOREACH_L2 with the same semantics as PPMPL_FOREACH, This allowes to nest the * to PPMPL_FOREACH_L2 with the same semantics as PPMPL_FOREACH, This allows to nest the
* FOREACH loop up to three nesting levels. * FOREACH loop up to three nesting levels.
*/ */
#define PPMPL_FOREACH(p, ...) PPMPL_FOREACH0(p, __VA_ARGS__, PPMPL_FOREACH_NIL)) #define PPMPL_FOREACH(p, ...) PPMPL_FOREACH0(p, __VA_ARGS__, PPMPL_FOREACH_NIL))

View file

@ -89,8 +89,7 @@ namespace lib {
/** (preliminary) helper: instead of really parsing and evaluating the terms, /** (preliminary) helper: instead of really parsing and evaluating the terms,
* just do a regular expression match to extract the literal argument * just do a regular expression match to extract the literal argument
* behind the given predicate symbol. e.g calling * behind the given predicate symbol. e.g calling
* \code extractID ("stream", "id(abc), stream(mpeg)") \endcode * `extractID ("stream", "id(abc), stream(mpeg)")` yields \c "mpeg"
* yields \c "mpeg"
*/ */
string string
extractID (Symbol sym, const string& termString) extractID (Symbol sym, const string& termString)

View file

@ -59,8 +59,8 @@
** @see mutex.h ** @see mutex.h
** @see sync-locking-test.cpp ** @see sync-locking-test.cpp
** @see sync-waiting-test.cpp ** @see sync-waiting-test.cpp
** @see asset::AssetManager::reg() usage example ** @see \ref asset::AssetManager::reg() "usage example: asset registration"
** @see subsystemrunner.hpp usage example ** @see \ref subsystem-runner.hpp "usage example: subsystem start/shutdown"
*/ */
@ -74,6 +74,7 @@ extern "C" {
#include "lib/lockerror.h" #include "lib/lockerror.h"
} }
#include <boost/noncopyable.hpp>
#include <pthread.h> #include <pthread.h>
#include <cerrno> #include <cerrno>
#include <ctime> #include <ctime>
@ -421,7 +422,11 @@ namespace lib {
public: public:
/*****************************************//**
* scoped object to control the actual locking.
*/
class Lock class Lock
: boost::noncopyable
{ {
Monitor& mon_; Monitor& mon_;

File diff suppressed because it is too large Load diff

View file

@ -29,7 +29,7 @@
** Values can be stored using \c operator= . In order to access the value ** Values can be stored using \c operator= . In order to access the value
** stored in lib::Variant, you additionally need to define a "functor" ** stored in lib::Variant, you additionally need to define a "functor"
** - with a typedef "Ret" for the return type ** - with a typedef "Ret" for the return type
** - providing a \code static Ret access(ELM&) \endcode function ** - providing a `static Ret access(ELM&)` function
** for each of the types used in the Variant</li> ** for each of the types used in the Variant</li>
** **
** @todo the instance handling for the accessor seems somewhat ** @todo the instance handling for the accessor seems somewhat

View file

@ -59,7 +59,7 @@ Credits for many further implementation ideas go to
** on some treat(VisitableInterface&) function.</li> ** on some treat(VisitableInterface&) function.</li>
** <li>any concrete Visitable subclass wanting to be treated by some concrete tool ** <li>any concrete Visitable subclass wanting to be treated by some concrete tool
** needs to use the DECLARE_PROCESSABLE_BY(TOOLBASE) macro. By this, it gets an ** needs to use the DECLARE_PROCESSABLE_BY(TOOLBASE) macro. By this, it gets an
** virtual \code apply(TOOLBASE&) function. Otherwise, it will be treated by the ** virtual `apply(TOOLBASE&)` function. Otherwise, it will be treated by the
** interface of the next base class using this macro.</li> ** interface of the next base class using this macro.</li>
** </ul> ** </ul>
** For design questions and more detailed implementation notes, see the Proc Layer Tiddly Wiki. ** For design questions and more detailed implementation notes, see the Proc Layer Tiddly Wiki.

View file

@ -21,6 +21,7 @@
*/ */
/** @file asset.hpp /** @file asset.hpp
** @ingroup asset
** Proc-Layer Interface: Assets. ** Proc-Layer Interface: Assets.
** Declares the Asset top level Interface, the Asset::Ident identification tuple ** Declares the Asset top level Interface, the Asset::Ident identification tuple
** and the asset::ID primary key wrapper. Normally, Assets should be handled ** and the asset::ID primary key wrapper. Normally, Assets should be handled
@ -45,7 +46,7 @@
** (Implementation detail: as g++ is not able to handle member function template ** (Implementation detail: as g++ is not able to handle member function template
** instantiations completely automatic, we need to trigger some template instantiations ** instantiations completely automatic, we need to trigger some template instantiations
** at the end of assetmanager.cpp ) ** at the end of assetmanager.cpp )
** **
** @see assetmanager.hpp ** @see assetmanager.hpp
** @see media.hpp ** @see media.hpp
*/ */

View file

@ -23,10 +23,11 @@
/** @file media.hpp /** @file media.hpp
** Media data is a specific kind of Asset. ** Media data is a specific kind of Asset.
** For the different <i>kinds</i> of Assets, we use sub-intefaces inheriting ** For the different <i>kinds</i> of Assets, we use sub-interfaces inheriting
** from the general Asset interface. To be able to get asset::Media instances ** from the general Asset interface. To be able to get asset::Media instances
** directly from the AssetManager, we define a specialization of the Asset ID. ** directly from the AssetManager, we define a specialisation of the Asset ID.
** **
** @ingroup asset
** @see asset.hpp for explanation ** @see asset.hpp for explanation
** @see MediaFactory creating concrete asset::Media instances ** @see MediaFactory creating concrete asset::Media instances
** **
@ -119,7 +120,7 @@ namespace asset {
/** predicate to decide if this asset::Media /** predicate to decide if this asset::Media
* is part of a compound (multichannel) media. * is part of a compound (multichannel) media.
* @return pointer to parent, or \code null * @return pointer to parent, or `null`
*/ */
virtual PMedia checkCompound () const; virtual PMedia checkCompound () const;
friend class proc::asset::Clip; ////////////////////////TODO better interface!!! friend class proc::asset::Clip; ////////////////////////TODO better interface!!!

View file

@ -50,6 +50,7 @@
** or changed metadata entry, finally \em committing this builder to yield a new ** or changed metadata entry, finally \em committing this builder to yield a new
** asset::Meta (which, in case of a mutation, might supersede an existing one). ** asset::Meta (which, in case of a mutation, might supersede an existing one).
** **
** @ingroup asset
** @see asset.hpp explanation of assets in general ** @see asset.hpp explanation of assets in general
** @see MetaFactory creating concrete asset::Meta instances ** @see MetaFactory creating concrete asset::Meta instances
** **

View file

@ -27,6 +27,7 @@
** from the general Asset interface. To be able to get asset::Proc instances ** from the general Asset interface. To be able to get asset::Proc instances
** directly from the AssetManager, we define a specialisation of the Asset ID. ** directly from the AssetManager, we define a specialisation of the Asset ID.
** **
** @ingroup asset
** @see asset.hpp for explanation ** @see asset.hpp for explanation
** @see ProcFactory creating concrete asset::Proc instances ** @see ProcFactory creating concrete asset::Proc instances
** **
@ -66,6 +67,8 @@ namespace asset {
/** /**
* key abstraction: data processing asset * key abstraction: data processing asset
* @todo just a stub, have to figure out what a asset::Proc is * @todo just a stub, have to figure out what a asset::Proc is
* @ingroup asset
* @ingroup session
*/ */
class Proc : public Asset class Proc : public Asset
{ {

View file

@ -48,6 +48,7 @@
** all placements referring to this track, which could be sub tracks, clips, ** all placements referring to this track, which could be sub tracks, clips,
** effects, automation or labels. ** effects, automation or labels.
** **
** @ingroup asset
** @see asset.hpp for explanation regarding asset IDs ** @see asset.hpp for explanation regarding asset IDs
** @see StructFactory creating concrete asset::Struct instances ** @see StructFactory creating concrete asset::Struct instances
** **

View file

@ -50,27 +50,6 @@
#include "lib/error.hpp" // pulls in NoBug via loggging.h #include "lib/error.hpp" // pulls in NoBug via loggging.h
/**
* Lumiera public interface.
* Global interfaces and facilities accessible from plugins and scripts.
* It's probably a good idea to pull it in explicitly and to avoid nesting
* implementation namespaces within \c lumiera::
*/
namespace lumiera {
/* additional global configuration goes here... */
} // namespace lumiera
/**
* Implementation namespace for support and library code.
*/
namespace lib {
}
/** /**
* Proc-Layer implementation namespace root. * Proc-Layer implementation namespace root.

View file

@ -38,6 +38,7 @@
** switch and continuation; under the hood, there is a mechanism to discard resources ** switch and continuation; under the hood, there is a mechanism to discard resources
** tied to the original CalcStream, once the switch to the new definition is complete. ** tied to the original CalcStream, once the switch to the new definition is complete.
** **
** @ingroup engine
** @see EngineInterface_test ** @see EngineInterface_test
** @see CalcStream_test ** @see CalcStream_test
** @see proc::play::PlayerService ** @see proc::play::PlayerService
@ -94,6 +95,8 @@ namespace engine{
* backend layer. The implementation of this service is * backend layer. The implementation of this service is
* responsible for creating the right job entries in the * responsible for creating the right job entries in the
* correct order and to enqueue these into the scheduler. * correct order and to enqueue these into the scheduler.
* @ingroup engine
* @ingroup player
*/ */
class EngineService class EngineService
: boost::noncopyable : boost::noncopyable

View file

@ -61,6 +61,7 @@ namespace mobject {
* All the contents and elements that can be placed and * All the contents and elements that can be placed and
* manipulated and finally rendered within Lumiera's * manipulated and finally rendered within Lumiera's
* high-level model and Session are MObjects. * high-level model and Session are MObjects.
* @ingroup session
*/ */
class MObject class MObject
: public Buildable, : public Buildable,

View file

@ -22,6 +22,7 @@
/** @file session.hpp /** @file session.hpp
** @ingroup session
** Primary Interface to the current Session. ** Primary Interface to the current Session.
** The session interface can be used to discover session's contents. ** The session interface can be used to discover session's contents.
** Mostly, these objects within the session are MObject subclasses, but they ** Mostly, these objects within the session are MObject subclasses, but they
@ -101,7 +102,8 @@ namespace mobject {
* a reference to the SessManager and is accessible as the static * a reference to the SessManager and is accessible as the static
* field Session::current). Clients shouldn't try to get a direct * field Session::current). Clients shouldn't try to get a direct
* pointer or reference to the Session object. * pointer or reference to the Session object.
* * @ingroup session
*
*/ */
class Session class Session
: boost::noncopyable : boost::noncopyable

View file

@ -102,7 +102,7 @@ namespace session {
* @return MObject ref to the fist suitable element. Might be an empty MObjectRef. * @return MObject ref to the fist suitable element. Might be an empty MObjectRef.
* @note the embedded MObject subtype (MO) causes an additional filtering * @note the embedded MObject subtype (MO) causes an additional filtering
* on that specific kind of MObject (e.g. considering just Clips) * on that specific kind of MObject (e.g. considering just Clips)
* @warning be sure the passed predicate actually takes a \code Placement<XX> const& \endcode * @warning be sure the passed predicate actually takes a `Placement<XX> const&`
* with XX being the correct type. Note the \c const& -- Failing to do so shows up as * with XX being the correct type. Note the \c const& -- Failing to do so shows up as
* compiler error "no suitable function pick(.....)" * compiler error "no suitable function pick(.....)"
*/ */

View file

@ -64,7 +64,7 @@ namespace mobject {
* *
* Consequently, if you want to talk to the <i>session manager,</i> * Consequently, if you want to talk to the <i>session manager,</i>
* you use dot-notation, while you access the <i>session object</i> * you use dot-notation, while you access the <i>session object</i>
* via arrow notation (e.g. \code Session::current->getFixture() ) * via arrow notation (e.g. `Session::current->getFixture()` )
*/ */
SessManager& Session::current = lib::Depend<SessManagerImpl>()(); SessManager& Session::current = lib::Depend<SessManagerImpl>()();

View file

@ -140,7 +140,7 @@ namespace play {
/** real time deadline for the given frame, without any latency. /** real time deadline for the given frame, without any latency.
* This value is provided in case of scheduled time of delivery, * This value is provided in case of scheduled time of delivery,
* which is signalled by \code playbackUrgency == TIMEBOUND \endcode * which is signalled by `playbackUrgency == TIMEBOUND`
* @return wall clock time to expect delivery of data * @return wall clock time to expect delivery of data
* corresponding to a frame specified relative * corresponding to a frame specified relative
* to \link #getOrigin time axis origin \endlink * to \link #getOrigin time axis origin \endlink

View file

@ -111,7 +111,7 @@ namespace test{
* or a custom allocator. * or a custom allocator.
* *
* @todo this test doesn't cover automatic conversions and conversions using RTTI * @todo this test doesn't cover automatic conversions and conversions using RTTI
* from the target objects, while \code OpaqueHolder.template get() \endcode * from the target objects, while `OpaqueHolder.template get()`
* would allow for such conversions. This is similar to Ticket #141, and * would allow for such conversions. This is similar to Ticket #141, and
* actually based on the same code as variant.hpp (access-casted.hpp) * actually based on the same code as variant.hpp (access-casted.hpp)
*/ */

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
wiki/draw/LumiLogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB