Updated Doxygen documentation

This commit is contained in:
Sébastien Rombauts 2013-03-10 18:17:02 +01:00
parent 562650bf39
commit 19e66c288a
9 changed files with 374 additions and 170 deletions

2
.gitignore vendored
View File

@ -8,4 +8,4 @@ Release
*~ *~
doc doc
core core
/ipch/* *ipch

View File

@ -1,4 +1,4 @@
# Doxyfile 1.7.3 # Doxyfile 1.8.3.1
# This file describes the settings to be used by the documentation system # This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project # doxygen (www.doxygen.org) for a project
@ -22,8 +22,9 @@
DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded # The PROJECT_NAME tag is a single word (or sequence of words) that should
# by quotes) that should identify the project. # identify the project. Note that if you do not use Doxywizard you need
# to put quotes around the project name if it contains spaces.
PROJECT_NAME = SQLiteC++ PROJECT_NAME = SQLiteC++
@ -31,7 +32,7 @@ PROJECT_NAME = SQLiteC++
# This could be handy for archiving the generated documentation or # This could be handy for archiving the generated documentation or
# if some version control system is used. # if some version control system is used.
PROJECT_NUMBER = 0.4.0 PROJECT_NUMBER = 0.5.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer # for a project that appears at the top of each page and should give viewer
@ -135,7 +136,9 @@ FULL_PATH_NAMES = YES
# only done if one of the specified strings matches the left-hand part of # 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. # 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 # If left blank the directory from which doxygen is run is used as the
# path to strip. # path to strip. Note that you specify absolute paths here, but also
# relative paths, which will be relative from the directory where doxygen is
# started.
STRIP_FROM_PATH = STRIP_FROM_PATH =
@ -204,6 +207,13 @@ TAB_SIZE = 7
ALIASES = ALIASES =
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding
# "class=itcl::class" will allow you to use the command class in the
# itcl::class meaning.
TCL_SUBST =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # 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. # 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 # For instance, some of the names that are used will be different. The list
@ -231,17 +241,34 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO OPTIMIZE_OUTPUT_VHDL = NO
# Doxygen selects the parser to use depending on the extension of the files it # Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given extension. # parses. With this tag you can assign which parser to use for a given
# Doxygen has a built-in mapping, but you can override or extend it using this # extension. Doxygen has a built-in mapping, but you can override or extend it
# tag. The format is ext=language, where ext is a file extension, and language # using this tag. The format is ext=language, where ext is a file extension,
# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, # and language is one of the parsers supported by doxygen: IDL, Java,
# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make # Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C # C++. For instance to make doxygen treat .inc files as Fortran files (default
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions # is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. # that for custom extensions you also need to set FILE_PATTERNS otherwise the
# files are not read by doxygen.
EXTENSION_MAPPING = EXTENSION_MAPPING =
# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
# comments according to the Markdown format, which allows for more readable
# documentation. See http://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you
# can mix doxygen, HTML, and XML commands with Markdown formatting.
# Disable only in case of backward compatibilities issues.
MARKDOWN_SUPPORT = YES
# When enabled doxygen tries to link words that correspond to documented classes,
# or namespaces to their corresponding documentation. Such a link can be
# prevented in individual cases by by putting a % sign in front of the word or
# globally by setting AUTOLINK_SUPPORT to NO.
AUTOLINK_SUPPORT = YES
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # 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 # 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 # set this tag to YES in order to let doxygen match functions declarations and
@ -262,10 +289,10 @@ CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO SIP_SUPPORT = NO
# For Microsoft's IDL there are propget and propput attributes to indicate getter # For Microsoft's IDL there are propget and propput attributes to indicate
# and setter methods for a property. Setting this option to YES (the default) # getter and setter methods for a property. Setting this option to YES (the
# will make doxygen replace the get and set methods by a property in the # default) will make doxygen replace the get and set methods by a property in
# documentation. This will only work if the methods are indeed getting or # the documentation. This will only work if the methods are indeed getting or
# setting a simple type. If this is not the case, or you want to show the # setting a simple type. If this is not the case, or you want to show the
# methods anyway, you should set this option to NO. # methods anyway, you should set this option to NO.
@ -286,6 +313,22 @@ DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES SUBGROUPING = YES
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
# unions are shown inside the group in which they are included (e.g. using
# @ingroup) instead of on a separate page (for HTML and Man pages) or
# section (for LaTeX and RTF).
INLINE_GROUPED_CLASSES = NO
# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
# unions with only public data fields will be shown inline in the documentation
# of the scope in which they are defined (i.e. file, namespace, or group
# documentation), provided this scope is documented. If set to NO (the default),
# structs, classes, and unions are shown on a separate page (for HTML and Man
# pages) or section (for LaTeX and RTF).
INLINE_SIMPLE_STRUCTS = NO
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
# is documented as struct, union, or enum with the name of the typedef. So # is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
@ -308,10 +351,21 @@ TYPEDEF_HIDES_STRUCT = NO
# a logarithmic scale so increasing the size by one will roughly double the # a logarithmic scale so increasing the size by one will roughly double the
# memory usage. The cache size is given by this formula: # memory usage. The cache size is given by this formula:
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols # corresponding to a cache size of 2^16 = 65536 symbols.
SYMBOL_CACHE_SIZE = 0 SYMBOL_CACHE_SIZE = 0
# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
# their name and scope. Since this can be an expensive process and often the
# same symbol appear multiple times in the code, doxygen keeps a cache of
# pre-resolved symbols. If the cache is too small doxygen will become slower.
# If the cache is too large, memory is wasted. The cache size is given by this
# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.
LOOKUP_CACHE_SIZE = 0
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Build related configuration options # Build related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@ -328,6 +382,11 @@ EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO EXTRACT_PRIVATE = NO
# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
# scope will be included in the documentation.
EXTRACT_PACKAGE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file # If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation. # will be included in the documentation.
@ -495,7 +554,8 @@ GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES GENERATE_DEPRECATEDLIST= YES
# The ENABLED_SECTIONS tag can be used to enable conditional # The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif. # documentation sections, marked by \if section-label ... \endif
# and \cond section-label ... \endcond blocks.
ENABLED_SECTIONS = ENABLED_SECTIONS =
@ -515,12 +575,6 @@ MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES 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 = NO
# Set the SHOW_FILES tag to NO to disable the generation of the Files page. # Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the # This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES. # Folder Tree View (if specified). The default is YES.
@ -531,7 +585,7 @@ SHOW_FILES = YES
# Namespaces page. This will remove the Namespaces entry from the Quick Index # Namespaces page. This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES. # and from the Folder Tree View (if specified). The default is YES.
SHOW_NAMESPACES = YES SHOW_NAMESPACES = NO
# The FILE_VERSION_FILTER tag can be used to specify a program or script that # 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 # doxygen should invoke to get the current version for each file (typically from
@ -545,13 +599,24 @@ FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated # by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. The create the layout file # output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option. # that represents doxygen's defaults, run doxygen with the -l option.
# You can optionally specify a file name after the option, if omitted # You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file. # DoxygenLayout.xml will be used as the name of the layout file.
LAYOUT_FILE = LAYOUT_FILE =
# The CITE_BIB_FILES tag can be used to specify one or more bib files
# containing the references data. This must be a list of .bib files. The
# .bib extension is automatically appended if omitted. Using this command
# requires the bibtex tool to be installed. See also
# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
# feature you need bibtex and perl available in the search path. Do not use
# file names with spaces, bibtex cannot handle them.
CITE_BIB_FILES =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@ -586,7 +651,7 @@ WARN_IF_DOC_ERROR = YES
# wrong or incomplete parameter documentation, but not about the absence of # wrong or incomplete parameter documentation, but not about the absence of
# documentation. # documentation.
WARN_NO_PARAMDOC = NO WARN_NO_PARAMDOC = YES
# The WARN_FORMAT tag determines the format of the warning messages that # The WARN_FORMAT tag determines the format of the warning messages that
# doxygen can produce. The string should contain the $file, $line, and $text # doxygen can produce. The string should contain the $file, $line, and $text
@ -601,7 +666,7 @@ WARN_FORMAT = "$file:$line: $text"
# and error messages should be written. If left blank the output is written # and error messages should be written. If left blank the output is written
# to stderr. # to stderr.
WARN_LOGFILE = WARN_LOGFILE = doc/warnings.txt
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
@ -640,13 +705,15 @@ FILE_PATTERNS = *.cpp \
RECURSIVE = YES RECURSIVE = YES
# The EXCLUDE tag can be used to specify files and/or directories that should # The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a # 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. # subdirectory from a directory tree whose root is specified with the INPUT tag.
# Note that relative paths are relative to the directory from which doxygen is
# run.
EXCLUDE = EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded # directories that are symbolic links (a Unix file system feature) are excluded
# from the input. # from the input.
@ -727,6 +794,13 @@ FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS = FILTER_SOURCE_PATTERNS =
# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page (index.html).
# This can be useful if you have a project on for instance GitHub and want reuse
# the introduction page also for the doxygen output.
USE_MDFILE_AS_MAINPAGE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing # configuration options related to source browsing
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@ -745,9 +819,9 @@ INLINE_SOURCES = NO
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code # doxygen to hide any special comment blocks from generated source code
# fragments. Normal C and C++ comments will always remain visible. # fragments. Normal C, C++ and Fortran comments will always remain visible.
STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = NO
# If the REFERENCED_BY_RELATION tag is set to YES # If the REFERENCED_BY_RELATION tag is set to YES
# then for each documented function all documented # then for each documented function all documented
@ -828,7 +902,14 @@ HTML_FILE_EXTENSION = .html
# The HTML_HEADER tag can be used to specify a personal HTML header for # 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 # each generated HTML page. If it is left blank doxygen will generate a
# standard header. # standard header. Note that when using a custom header you are responsible
# for the proper inclusion of any scripts and style sheets that doxygen
# needs, which is dependent on the configuration options used.
# It is advised to generate a default header using "doxygen -w html
# header.html footer.html stylesheet.css YourConfigFile" and then modify
# that header. Note that the header is subject to change so you typically
# have to redo this when upgrading to a newer version of doxygen or when
# changing the value of configuration settings such as GENERATE_TREEVIEW!
HTML_HEADER = HTML_HEADER =
@ -840,15 +921,34 @@ HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading # 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 # 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 # fine-tune the look of the HTML output. If left blank doxygen will
# will generate a default style sheet. Note that doxygen will try to copy # generate a default style sheet. Note that it is recommended to use
# the style sheet file to the HTML output directory, so don't put your own # HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
# stylesheet in the HTML output directory as well, or it will be erased! # tag will in the future become obsolete.
HTML_STYLESHEET = HTML_STYLESHEET =
# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
# user-defined cascading style sheet that is included after the standard
# style sheets created by doxygen. Using this option one can overrule
# certain style aspects. This is preferred over using HTML_STYLESHEET
# since it does not replace the standard style sheet and is therefor more
# robust against future updates. Doxygen will copy the style sheet file to
# the output directory.
HTML_EXTRA_STYLESHEET =
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
# the files will be copied as-is; there are no commands or markers available.
HTML_EXTRA_FILES =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the stylesheet and background images # Doxygen will adjust the colors in the style sheet and background images
# according to this color. Hue is specified as an angle on a colorwheel, # according to this color. Hue is specified as an angle on a colorwheel,
# see http://en.wikipedia.org/wiki/Hue for more information. # see http://en.wikipedia.org/wiki/Hue for more information.
# For instance the value 0 represents red, 60 is yellow, 120 is green, # For instance the value 0 represents red, 60 is yellow, 120 is green,
@ -878,20 +978,23 @@ HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = YES HTML_TIMESTAMP = YES
# 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 HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the # documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports # page has loaded.
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
HTML_DYNAMIC_SECTIONS = NO HTML_DYNAMIC_SECTIONS = NO
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
# entries shown in the various tree structured indices initially; the user
# can expand and collapse entries dynamically later on. Doxygen will expand
# the tree to such a level that at most the specified number of entries are
# visible (unless a fully collapsed tree already exceeds this amount).
# So setting the number of entries 1 will produce a full collapsed tree by
# default. 0 is a special value representing an infinite number of entries
# and will result in a full expanded tree by default.
HTML_INDEX_NUM_ENTRIES = 100
# If the GENERATE_DOCSET tag is set to YES, additional index files # If the GENERATE_DOCSET tag is set to YES, additional index files
# will be generated that can be used as input for Apple's Xcode 3 # will be generated that can be used as input for Apple's Xcode 3
# integrated development environment, introduced with OSX 10.5 (Leopard). # integrated development environment, introduced with OSX 10.5 (Leopard).
@ -919,9 +1022,9 @@ DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project DOCSET_BUNDLE_ID = org.doxygen.Project
# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
# the documentation publisher. This should be a reverse domain-name style # identify the documentation publisher. This should be a reverse domain-name
# string, e.g. com.mycompany.MyDocSet.documentation. # style string, e.g. com.mycompany.MyDocSet.documentation.
DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_ID = org.doxygen.Publisher
@ -1043,19 +1146,14 @@ GENERATE_ECLIPSEHELP = NO
ECLIPSE_DOC_ID = org.doxygen.Project ECLIPSE_DOC_ID = org.doxygen.Project
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
# top of each HTML page. The value NO (the default) enables the index and # at top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it. # the value YES disables it. Since the tabs have the same information as the
# navigation tree you can set this option to NO if you already set
# GENERATE_TREEVIEW to YES.
DISABLE_INDEX = NO DISABLE_INDEX = NO
# This tag can be used to set the number of enum values (range [0,1..20])
# that doxygen will group on one line in the generated HTML documentation.
# Note that a value of 0 will completely suppress the enum values from
# appearing in the overview section.
ENUM_VALUES_PER_LINE = 4
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information. # structure should be generated to display hierarchical information.
# If the tag value is set to YES, a side panel will be generated # If the tag value is set to YES, a side panel will be generated
@ -1063,13 +1161,17 @@ ENUM_VALUES_PER_LINE = 4
# is generated for HTML Help). For this to work a browser that supports # is generated for HTML Help). For this to work a browser that supports
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
# Windows users are probably better off using the HTML help feature. # Windows users are probably better off using the HTML help feature.
# Since the tree basically has the same information as the tab index you
# could consider to set DISABLE_INDEX to NO when enabling this option.
GENERATE_TREEVIEW = YES GENERATE_TREEVIEW = YES
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
# and Class Hierarchy pages using a tree view instead of an ordered list. # (range [0,1..20]) that doxygen will group on one line in the generated HTML
# documentation. Note that a value of 0 will completely suppress the enum
# values from appearing in the overview section.
USE_INLINE_TREES = NO ENUM_VALUES_PER_LINE = 4
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # 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 # used to set the initial width (in pixels) of the frame in which the tree
@ -1102,22 +1204,34 @@ FORMULA_TRANSPARENT = YES
# (see http://www.mathjax.org) which uses client side Javascript for the # (see http://www.mathjax.org) which uses client side Javascript for the
# rendering instead of using prerendered bitmaps. Use this if you do not # rendering instead of using prerendered bitmaps. Use this if you do not
# have LaTeX installed or if you want to formulas look prettier in the HTML # have LaTeX installed or if you want to formulas look prettier in the HTML
# output. When enabled you also need to install MathJax separately and # output. When enabled you may also need to install MathJax separately and
# configure the path to it using the MATHJAX_RELPATH option. # configure the path to it using the MATHJAX_RELPATH option.
USE_MATHJAX = NO USE_MATHJAX = NO
# When MathJax is enabled you can set the default output format to be used for
# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
# SVG. The default value is HTML-CSS, which is slower, but has the best
# compatibility.
MATHJAX_FORMAT = HTML-CSS
# When MathJax is enabled you need to specify the location relative to the # When MathJax is enabled you need to specify the location relative to the
# HTML output directory using the MATHJAX_RELPATH option. The destination # HTML output directory using the MATHJAX_RELPATH option. The destination
# directory should contain the MathJax.js script. For instance, if the mathjax # directory should contain the MathJax.js script. For instance, if the mathjax
# directory is located at the same level as the HTML output directory, then # directory is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to the # MATHJAX_RELPATH should be ../mathjax. The default value points to
# mathjax.org site, so you can quickly see the result without installing # the MathJax Content Delivery Network so you can quickly see the result without
# MathJax, but it is strongly recommended to install a local copy of MathJax # installing MathJax. However, it is strongly recommended to install a local
# before deployment. # copy of MathJax from http://www.mathjax.org before deployment.
MATHJAX_RELPATH = http://www.mathjax.org/mathjax MATHJAX_RELPATH = http://www.mathjax.org/mathjax
# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
# names that should be enabled during MathJax rendering.
MATHJAX_EXTENSIONS =
# When the SEARCHENGINE tag is enabled doxygen will generate a search box # When the SEARCHENGINE tag is enabled doxygen will generate a search box
# for the HTML output. The underlying search engine uses javascript # for the HTML output. The underlying search engine uses javascript
# and DHTML and should work on any modern browser. Note that when using # and DHTML and should work on any modern browser. Note that when using
@ -1129,15 +1243,55 @@ MATHJAX_RELPATH = http://www.mathjax.org/mathjax
SEARCHENGINE = YES SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a PHP enabled web server instead of at the web client # implemented using a web server instead of a web client using Javascript.
# using Javascript. Doxygen will generate the search PHP script and index # There are two flavours of web server based search depending on the
# file to put on the web server. The advantage of the server # EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
# based approach is that it scales better to large projects and allows # searching and an index file used by the script. When EXTERNAL_SEARCH is
# full text search. The disadvantages are that it is more difficult to setup # enabled the indexing and searching needs to be provided by external tools.
# and does not have live searching capabilities. # See the manual for details.
SERVER_BASED_SEARCH = NO SERVER_BASED_SEARCH = NO
# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
# script for searching. Instead the search results are written to an XML file
# which needs to be processed by an external indexer. Doxygen will invoke an
# external search engine pointed to by the SEARCHENGINE_URL option to obtain
# the search results. Doxygen ships with an example indexer (doxyindexer) and
# search engine (doxysearch.cgi) which are based on the open source search engine
# library Xapian. See the manual for configuration details.
EXTERNAL_SEARCH = NO
# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will returned the search results when EXTERNAL_SEARCH is enabled.
# Doxygen ships with an example search engine (doxysearch) which is based on
# the open source search engine library Xapian. See the manual for configuration
# details.
SEARCHENGINE_URL =
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
# SEARCHDATA_FILE tag the name of this file can be specified.
SEARCHDATA_FILE = searchdata.xml
# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
# projects and redirect the results back to the right project.
EXTERNAL_SEARCH_ID =
# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
# projects other than the one defined by this configuration file, but that are
# all added to the same external search index. Each project needs to have a
# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
# of to a relative location where the documentation can be found.
# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
EXTRA_SEARCH_MAPPINGS =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the LaTeX output # configuration options related to the LaTeX output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@ -1191,6 +1345,13 @@ EXTRA_PACKAGES =
LATEX_HEADER = LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
# the generated latex document. The footer should contain everything after
# the last chapter. If it is left blank doxygen will generate a
# standard footer. Notice: only use this tag if you know what you are doing!
LATEX_FOOTER =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # 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 # is prepared for conversion to pdf (using ps2pdf). The pdf file will
# contain links (just like the HTML output) instead of page references # contain links (just like the HTML output) instead of page references
@ -1224,6 +1385,12 @@ LATEX_HIDE_INDICES = NO
LATEX_SOURCE_CODE = NO LATEX_SOURCE_CODE = NO
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
# http://en.wikipedia.org/wiki/BibTeX for more info.
LATEX_BIB_STYLE = plain
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the RTF output # configuration options related to the RTF output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@ -1255,7 +1422,7 @@ COMPACT_RTF = NO
RTF_HYPERLINKS = NO RTF_HYPERLINKS = NO
# Load stylesheet definitions from file. Syntax is similar to doxygen's # Load style sheet definitions from file. Syntax is similar to doxygen's
# config file, i.e. a series of assignments. You only have to provide # config file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value. # replacements, missing definitions are set to their default value.
@ -1398,7 +1565,7 @@ MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # 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. # pointed to by INCLUDE_PATH will be searched when a #include is found.
SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES
@ -1444,20 +1611,16 @@ SKIP_FUNCTION_MACROS = YES
# Configuration::additions related to external references # Configuration::additions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# The TAGFILES option can be used to specify one or more tagfiles. # The TAGFILES option can be used to specify one or more tagfiles. For each
# Optionally an initial location of the external documentation # tag file the location of the external documentation should be added. The
# can be added for each tagfile. The format of a tag file without # format of a tag file without this location is as follows:
# this location is as follows:
# TAGFILES = file1 file2 ... # TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows: # Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ... # TAGFILES = file1=loc1 "file2 = loc2" ...
# where "loc1" and "loc2" can be relative or absolute paths or # where "loc1" and "loc2" can be relative or absolute paths
# URLs. If a location is present for each tag, the installdox tool # or URLs. Note that each tag file must have a unique name (where the name does
# does not have to be run to correct the links. # NOT include the path). If a tag file is not located in the directory in which
# Note that each tag file must have a unique name # doxygen is run, you must also specify the path to the tagfile here.
# (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 = TAGFILES =
@ -1493,7 +1656,7 @@ PERL_PATH = /usr/bin/perl
# this option also works with HAVE_DOT disabled, but it is recommended to # this option also works with HAVE_DOT disabled, but it is recommended to
# install and use dot, since it yields more powerful graphs. # install and use dot, since it yields more powerful graphs.
CLASS_DIAGRAMS = NO CLASS_DIAGRAMS = YES
# You can define message sequence charts within doxygen comments using the \msc # You can define message sequence charts within doxygen comments using the \msc
# command. Doxygen will then run the mscgen tool (see # command. Doxygen will then run the mscgen tool (see
@ -1525,13 +1688,12 @@ HAVE_DOT = YES
DOT_NUM_THREADS = 0 DOT_NUM_THREADS = 0
# By default doxygen will write a font called Helvetica to the output # By default doxygen will use the Helvetica font for all dot files that
# directory and reference it in all dot files that doxygen generates. # doxygen generates. When you want a differently looking font you can specify
# When you want a differently looking font you can specify the font name # the font name using DOT_FONTNAME. You need to make sure dot is able to find
# using DOT_FONTNAME. You need to make sure dot is able to find the font, # the font, which can be done by putting it in a standard location or by setting
# which can be done by putting it in a standard location or by setting the # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory # directory containing the font.
# containing the font.
DOT_FONTNAME = Helvetica DOT_FONTNAME = Helvetica
@ -1540,17 +1702,16 @@ DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10 DOT_FONTSIZE = 10
# By default doxygen will tell dot to use the output directory to look for the # By default doxygen will tell dot to use the Helvetica font.
# FreeSans.ttf font (which doxygen will put there itself). If you specify a # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
# different font using DOT_FONTNAME you can set the path where dot # set the path where dot can find it.
# can find it using this tag.
DOT_FONTPATH = DOT_FONTPATH =
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # 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 # will generate a graph for each documented class showing the direct and
# indirect inheritance relations. Setting this tag to YES will force the # indirect inheritance relations. Setting this tag to YES will force the
# the CLASS_DIAGRAMS tag to NO. # CLASS_DIAGRAMS tag to NO.
CLASS_GRAPH = YES CLASS_GRAPH = YES
@ -1572,6 +1733,15 @@ GROUP_GRAPHS = YES
UML_LOOK = NO UML_LOOK = NO
# If the UML_LOOK tag is enabled, the fields and methods are shown inside
# the class node. If there are many fields or methods and many nodes the
# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
# threshold limits the number of items for each type to make the size more
# managable. Set this to 0 for no limit. Note that the threshold may be
# exceeded by 50% before the limit is enforced.
UML_LIMIT_NUM_FIELDS = 10
# If set to YES, the inheritance and collaboration graphs will show the # If set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances. # relations between templates and their instances.
@ -1612,7 +1782,7 @@ CALLER_GRAPH = YES
GRAPHICAL_HIERARCHY = YES GRAPHICAL_HIERARCHY = YES
# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories # then doxygen will show the dependencies a directory has on other directories
# in a graphical way. The dependency relations are determined by the #include # in a graphical way. The dependency relations are determined by the #include
# relations between the files in the directories. # relations between the files in the directories.
@ -1620,11 +1790,22 @@ GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES DIRECTORY_GRAPH = YES
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. Possible values are png, svg, gif or svg. # generated by dot. Possible values are svg, png, jpg, or gif.
# If left blank png will be used. # If left blank png will be used. If you choose svg you need to set
# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible in IE 9+ (other browsers do not have this requirement).
DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
# Note that this requires a modern browser other than Internet Explorer.
# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible. Older versions of IE do not have SVG support.
INTERACTIVE_SVG = NO
# The tag DOT_PATH can be used to specify the path where the dot tool can be # 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. # found. If left blank, it is assumed the dot tool can be found in the path.

View File

@ -1,6 +1,6 @@
/** /**
* @file Column.cpp * @file Column.cpp
* @brief Encapsulation of a Column in a Row of the result. * @brief Encapsulation of a Column in a row of the result pointed by the prepared SQLite::Statement.
* *
* Copyright (c) 2012-2013 Sebastien Rombauts (sebastien.rombauts@gmail.com) * Copyright (c) 2012-2013 Sebastien Rombauts (sebastien.rombauts@gmail.com)
* *
@ -14,7 +14,7 @@
namespace SQLite namespace SQLite
{ {
// Encapsulation of a Column in a Row of the result. // Encapsulation of a Column in a row of the result pointed by the prepared Statement.
Column::Column(Statement::Ptr& aStmtPtr, int aIndex) throw() : // nothrow Column::Column(Statement::Ptr& aStmtPtr, int aIndex) throw() : // nothrow
mStmtPtr (aStmtPtr), mStmtPtr (aStmtPtr),
mIndex (aIndex) mIndex (aIndex)

View File

@ -1,6 +1,6 @@
/** /**
* @file Column.h * @file Column.h
* @brief Encapsulation of a Column in a Row of the result. * @brief Encapsulation of a Column in a row of the result pointed by the prepared SQLite::Statement.
* *
* Copyright (c) 2012-2013 Sebastien Rombauts (sebastien.rombauts@gmail.com) * Copyright (c) 2012-2013 Sebastien Rombauts (sebastien.rombauts@gmail.com)
* *
@ -18,7 +18,7 @@ namespace SQLite
/** /**
* @brief Encapsulation of a Column in a Row of the result. * @brief Encapsulation of a Column in a row of the result pointed by the prepared Statement.
* *
* A Column is a particular field of SQLite data in the current row of result * A Column is a particular field of SQLite data in the current row of result
* of the Statement : it points to a single cell. * of the Statement : it points to a single cell.
@ -36,21 +36,31 @@ public:
* @param[in] aIndex Index of the column in the row of result * @param[in] aIndex Index of the column in the row of result
*/ */
Column(Statement::Ptr& aStmtPtr, int aIndex) throw(); // nothrow Column(Statement::Ptr& aStmtPtr, int aIndex) throw(); // nothrow
/// Simple destructor /// @brief Simple destructor
virtual ~Column(void) throw(); // nothrow virtual ~Column(void) throw(); // nothrow
// default copy constructor and asignement operator are perfectly suited :
// default copy constructor and assignment operator are perfectly suited :
// they copy the Statement::Ptr which in turn increments the reference counter. // they copy the Statement::Ptr which in turn increments the reference counter.
/// Return the integer value of the column. /// @brief Return the integer value of the column.
int getInt (void) const throw(); // nothrow int getInt (void) const throw(); // nothrow
/// Return the 64bits integer value of the column. /// @brief Return the 64bits integer value of the column.
sqlite3_int64 getInt64 (void) const throw(); // nothrow sqlite3_int64 getInt64 (void) const throw(); // nothrow
/// Return the double (64bits float) value of the column. /// @brief Return the double (64bits float) value of the column.
double getDouble(void) const throw(); // nothrow double getDouble(void) const throw(); // nothrow
/// Return a pointer to the text value (NULL terminated string) of the column. /**
/// Warning, the value pointed at is only valid while the statement is valid (ie. not finalized), * @brief Return a pointer to the text value (NULL terminated string) of the column.
/// thus you must copy it before using it beyond its scope (to a std::string for instance). *
* @warning The value pointed at is only valid while the statement is valid (ie. not finalized),
* thus you must copy it before using it beyond its scope (to a std::string for instance).
*/
const char* getText (void) const throw(); // nothrow const char* getText (void) const throw(); // nothrow
/**
* @brief Return a pointer to the binary blob value of the column.
*
* @warning The value pointed at is only valid while the statement is valid (ie. not finalized),
* thus you must copy it before using it beyond its scope (to a std::string for instance).
*/
const void* getBlob (void) const throw(); // nothrow const void* getBlob (void) const throw(); // nothrow
/** /**
@ -63,27 +73,27 @@ public:
*/ */
int getType(void) const throw(); // nothrow int getType(void) const throw(); // nothrow
/// Test if the column is an integer type value (meaningfull only before any conversion) /// @brief Test if the column is an integer type value (meaningfull only before any conversion)
inline bool isInteger(void) const throw() // nothrow inline bool isInteger(void) const throw() // nothrow
{ {
return (SQLITE_INTEGER == getType()); return (SQLITE_INTEGER == getType());
} }
/// Test if the column is a floting point type value (meaningfull only before any conversion) /// @brief Test if the column is a floting point type value (meaningfull only before any conversion)
inline bool isFloat(void) const throw() // nothrow inline bool isFloat(void) const throw() // nothrow
{ {
return (SQLITE_FLOAT == getType()); return (SQLITE_FLOAT == getType());
} }
/// Test if the column is a text type value (meaningfull only before any conversion) /// @brief Test if the column is a text type value (meaningfull only before any conversion)
inline bool isText(void) const throw() // nothrow inline bool isText(void) const throw() // nothrow
{ {
return (SQLITE_TEXT == getType()); return (SQLITE_TEXT == getType());
} }
/// Test if the column is a binary blob type value (meaningfull only before any conversion) /// @brief Test if the column is a binary blob type value (meaningfull only before any conversion)
inline bool isBlob(void) const throw() // nothrow inline bool isBlob(void) const throw() // nothrow
{ {
return (SQLITE_BLOB == getType()); return (SQLITE_BLOB == getType());
} }
/// Test if the column is NULL (meaningfull only before any conversion) /// @brief Test if the column is NULL (meaningfull only before any conversion)
inline bool isNull(void) const throw() // nothrow inline bool isNull(void) const throw() // nothrow
{ {
return (SQLITE_NULL == getType()); return (SQLITE_NULL == getType());
@ -100,33 +110,41 @@ public:
*/ */
int getBytes(void) const throw(); int getBytes(void) const throw();
/// Alias returning the number of bytes used by the text (or blob) value of the column /// @brief Alias returning the number of bytes used by the text (or blob) value of the column
inline int size(void) const throw() inline int size(void) const throw()
{ {
return getBytes (); return getBytes ();
} }
/// Inline cast operator to int /// @brief Inline cast operator to int
inline operator int() const inline operator int() const
{ {
return getInt(); return getInt();
} }
/// Inline cast operator to 64bits integer /// @brief Inline cast operator to 64bits integer
inline operator sqlite3_int64() const inline operator sqlite3_int64() const
{ {
return getInt64(); return getInt64();
} }
/// Inline cast operator to double /// @brief Inline cast operator to double
inline operator double() const inline operator double() const
{ {
return getDouble(); return getDouble();
} }
/// Inline cast operator to char* /**
* @brief Inline cast operator to char*
*
* @see getText
*/
inline operator const char*() const inline operator const char*() const
{ {
return getText(); return getText();
} }
/// Inline cast operator to void* /**
* @brief Inline cast operator to void*
*
* @see getBlob
*/
inline operator const void*() const inline operator const void*() const
{ {
return getBlob(); return getBlob();
@ -144,7 +162,7 @@ public:
} }
#endif #endif
/// Return UTF-8 encoded English language explanation of the most recent error. /// @brief Return UTF-8 encoded English language explanation of the most recent error.
inline const char* errmsg(void) const inline const char* errmsg(void) const
{ {
return sqlite3_errmsg(mStmtPtr); return sqlite3_errmsg(mStmtPtr);

View File

@ -128,7 +128,7 @@ public:
} }
/** /**
* Return the filename used to open the database * @brief Return the filename used to open the database
*/ */
inline const std::string& getFilename(void) const inline const std::string& getFilename(void) const
{ {
@ -136,7 +136,7 @@ public:
} }
/** /**
* Return UTF-8 encoded English language explanation of the most recent error. * @brief Return UTF-8 encoded English language explanation of the most recent error.
*/ */
inline const char* errmsg(void) const inline const char* errmsg(void) const
{ {
@ -144,12 +144,13 @@ public:
} }
private: private:
// Database must not be copyable /// @{ Database must be non-copyable
Database(const Database&); Database(const Database&);
Database& operator=(const Database&); Database& operator=(const Database&);
/// @}
/** /**
* Check if aRet equal SQLITE_OK, else throw a SQLite::Exception with the SQLite error message * @brief Check if aRet equal SQLITE_OK, else throw a SQLite::Exception with the SQLite error message
*/ */
void check(const int aRet) const; // throw(SQLite::Exception); void check(const int aRet) const; // throw(SQLite::Exception);

View File

@ -32,13 +32,13 @@ namespace SQLite
{ {
/** /**
* Encapsulation of the error message from SQLite3, based on std::runtime_error. * @brief Encapsulation of the error message from SQLite3, based on std::runtime_error.
*/ */
class Exception : public std::runtime_error class Exception : public std::runtime_error
{ {
public: public:
/** /**
* Encapsulation of the error message from SQLite3, based on std::runtime_error. * @brief Encapsulation of the error message from SQLite3, based on std::runtime_error.
* *
* @param[in] aErrorMessage The string message describing the SQLite error * @param[in] aErrorMessage The string message describing the SQLite error
*/ */

View File

@ -1,6 +1,6 @@
/** /**
* @file Statement.cpp * @file Statement.cpp
* @brief A prepared SQLite Statement is a compiled SQL query ready to be executed. * @brief A prepared SQLite Statement is a compiled SQL query ready to be executed, pointing to a row of result.
* *
* Copyright (c) 2012-2013 Sebastien Rombauts (sebastien.rombauts@gmail.com) * Copyright (c) 2012-2013 Sebastien Rombauts (sebastien.rombauts@gmail.com)
* *
@ -280,7 +280,7 @@ Statement::Ptr::Ptr(sqlite3* apSQLite, std::string& aQuery) :
} }
/** /**
* Copy constructor increments the ref counter * @brief Copy constructor increments the ref counter
* *
* @param[in] aPtr Pointer to copy * @param[in] aPtr Pointer to copy
*/ */
@ -298,7 +298,7 @@ Statement::Ptr::Ptr(const Statement::Ptr& aPtr) :
} }
/** /**
* Decrement the ref counter and finalize the sqlite3_stmt when it reaches 0 * @brief Decrement the ref counter and finalize the sqlite3_stmt when it reaches 0
*/ */
Statement::Ptr::~Ptr(void) throw() // nothrow Statement::Ptr::~Ptr(void) throw() // nothrow
{ {

View File

@ -1,6 +1,6 @@
/** /**
* @file Statement.h * @file Statement.h
* @brief A prepared SQLite Statement is a compiled SQL query ready to be executed. * @brief A prepared SQLite Statement is a compiled SQL query ready to be executed, pointing to a row of result.
* *
* Copyright (c) 2012-2013 Sebastien Rombauts (sebastien.rombauts@gmail.com) * Copyright (c) 2012-2013 Sebastien Rombauts (sebastien.rombauts@gmail.com)
* *
@ -45,12 +45,12 @@ public:
Statement(Database& aDatabase, const char* apQuery); // throw(SQLite::Exception); Statement(Database& aDatabase, const char* apQuery); // throw(SQLite::Exception);
/** /**
* Finalize and unregister the SQL query from the SQLite Database Connection. * @brief Finalize and unregister the SQL query from the SQLite Database Connection.
*/ */
virtual ~Statement(void) throw(); // nothrow virtual ~Statement(void) throw(); // nothrow
/** /**
* Reset the statement to make it ready for a new execution. * @brief Reset the statement to make it ready for a new execution.
*/ */
void reset(void); // throw(SQLite::Exception); void reset(void); // throw(SQLite::Exception);
@ -71,15 +71,15 @@ public:
// instead of being copied. // instead of being copied.
/** /**
* Bind an int value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1) * @brief Bind an int value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
*/ */
void bind(const int aIndex, const int& aValue) ; // throw(SQLite::Exception); void bind(const int aIndex, const int& aValue) ; // throw(SQLite::Exception);
/** /**
* Bind a 64bits int value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1) * @brief Bind a 64bits int value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
*/ */
void bind(const int aIndex, const sqlite3_int64& aValue) ; // throw(SQLite::Exception); void bind(const int aIndex, const sqlite3_int64& aValue) ; // throw(SQLite::Exception);
/** /**
* Bind a double (64bits float) value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1) * @brief Bind a double (64bits float) value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
*/ */
void bind(const int aIndex, const double& aValue) ; // throw(SQLite::Exception); void bind(const int aIndex, const double& aValue) ; // throw(SQLite::Exception);
/** /**
@ -101,20 +101,20 @@ public:
*/ */
void bind(const int aIndex, const void* apValue, const int aSize) ; // throw(SQLite::Exception); void bind(const int aIndex, const void* apValue, const int aSize) ; // throw(SQLite::Exception);
/** /**
* Bind a NULL value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1) * @brief Bind a NULL value to a parameter "?", "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
*/ */
void bind(const int aIndex); // throw(SQLite::Exception); void bind(const int aIndex); // throw(SQLite::Exception);
/** /**
* Bind an int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1) * @brief Bind an int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
*/ */
void bind(const char* apName, const int& aValue) ; // throw(SQLite::Exception); void bind(const char* apName, const int& aValue) ; // throw(SQLite::Exception);
/** /**
* Bind a 64bits int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1) * @brief Bind a 64bits int value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
*/ */
void bind(const char* apName, const sqlite3_int64& aValue) ; // throw(SQLite::Exception); void bind(const char* apName, const sqlite3_int64& aValue) ; // throw(SQLite::Exception);
/** /**
* Bind a double (64bits float) value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1) * @brief Bind a double (64bits float) value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
*/ */
void bind(const char* apName, const double& aValue) ; // throw(SQLite::Exception); void bind(const char* apName, const double& aValue) ; // throw(SQLite::Exception);
/** /**
@ -136,7 +136,7 @@ public:
*/ */
void bind(const char* apName, const void* apValue, const int aSize) ; // throw(SQLite::Exception); void bind(const char* apName, const void* apValue, const int aSize) ; // throw(SQLite::Exception);
/** /**
* Bind a NULL value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1) * @brief Bind a NULL value to a named parameter "?NNN", ":VVV", "@VVV" or "$VVV" in the SQL prepared statement (aIndex >= 1)
*/ */
void bind(const char* apName); // throw(SQLite::Exception); // bind NULL value void bind(const char* apName); // throw(SQLite::Exception); // bind NULL value
@ -211,7 +211,7 @@ public:
Column getColumn(const int aIndex); // throw(SQLite::Exception); Column getColumn(const int aIndex); // throw(SQLite::Exception);
/** /**
* Test if the column value is NULL * @brief Test if the column value is NULL
* *
* @param[in] aIndex Index of the column, starting at 0 * @param[in] aIndex Index of the column, starting at 0
* *
@ -221,27 +221,27 @@ public:
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
/// Returne the UTF-8 SQL Query. /// @brief Return the UTF-8 SQL Query.
inline const std::string& getQuery(void) const inline const std::string& getQuery(void) const
{ {
return mQuery; return mQuery;
} }
/// Return the number of columns in the result set returned by the prepared statement /// @brief Return the number of columns in the result set returned by the prepared statement
inline int getColumnCount(void) const inline int getColumnCount(void) const
{ {
return mColumnCount; return mColumnCount;
} }
/// true when a row has been fetched with executeStep() /// @brief true when a row has been fetched with executeStep()
inline bool isOk(void) const inline bool isOk(void) const
{ {
return mbOk; return mbOk;
} }
/// true when the last executeStep() had no more row to fetch /// @brief true when the last executeStep() had no more row to fetch
inline bool isDone(void) const inline bool isDone(void) const
{ {
return mbDone; return mbDone;
} }
/// Return UTF-8 encoded English language explanation of the most recent error. /// @brief Return UTF-8 encoded English language explanation of the most recent error.
inline const char* errmsg(void) const inline const char* errmsg(void) const
{ {
return sqlite3_errmsg(mStmtPtr); return sqlite3_errmsg(mStmtPtr);
@ -265,21 +265,22 @@ public:
// Decrement the ref counter and finalize the sqlite3_stmt when it reaches 0 // Decrement the ref counter and finalize the sqlite3_stmt when it reaches 0
~Ptr(void) throw(); // nothrow (no virtual destructor needed here) ~Ptr(void) throw(); // nothrow (no virtual destructor needed here)
/// Inline cast operator returning the pointer to SQLite Database Connection Handle /// @brief Inline cast operator returning the pointer to SQLite Database Connection Handle
inline operator sqlite3*() const inline operator sqlite3*() const
{ {
return mpSQLite; return mpSQLite;
} }
/// Inline cast operator returning the pointer to SQLite Statement Object /// @brief Inline cast operator returning the pointer to SQLite Statement Object
inline operator sqlite3_stmt*() const inline operator sqlite3_stmt*() const
{ {
return mpStmt; return mpStmt;
} }
private: private:
// Unused/forbidden copy operator /// @{ Unused/forbidden copy operator
Ptr& operator=(const Ptr& aPtr); Ptr& operator=(const Ptr& aPtr);
/// @}
private: private:
sqlite3* mpSQLite; //!< Pointer to SQLite Database Connection Handle sqlite3* mpSQLite; //!< Pointer to SQLite Database Connection Handle
@ -288,13 +289,13 @@ public:
}; };
private: private:
// Statement must not be copyable /// @{ Statement must be non-copyable
Statement(void);
Statement(const Statement&); Statement(const Statement&);
Statement& operator=(const Statement&); Statement& operator=(const Statement&);
/// @}
/** /**
* Check if a return code equals SQLITE_OK, else throw a SQLite::Exception with the SQLite error message * @brief Check if a return code equals SQLITE_OK, else throw a SQLite::Exception with the SQLite error message
* *
* @param[in] SQLite return code to test against the SQLITE_OK expected value * @param[in] SQLite return code to test against the SQLITE_OK expected value
*/ */

View File

@ -28,6 +28,8 @@ class Database;
* Resource Acquisition Is Initialization (RAII) means that the Transaction * Resource Acquisition Is Initialization (RAII) means that the Transaction
* begins in the constructor and is rollbacked in the destructor, so that there is * begins in the constructor and is rollbacked in the destructor, so that there is
* no need to worry about memory management or the validity of the underlying SQLite Connection. * no need to worry about memory management or the validity of the underlying SQLite Connection.
*
* This method also offers big performances improvements compared to individually executed statements.
*/ */
class Transaction class Transaction
{ {
@ -52,9 +54,10 @@ public:
void commit(void); // throw(SQLite::Exception); void commit(void); // throw(SQLite::Exception);
private: private:
// Transaction must not be copyable // Transaction must be non-copyable
Transaction(const Transaction&); Transaction(const Transaction&);
Transaction& operator=(const Transaction&); Transaction& operator=(const Transaction&);
/// @}
private: private:
Database& mDatabase; //!< Reference to the SQLite Database Connection Database& mDatabase; //!< Reference to the SQLite Database Connection