Commit efd1ed5e1e7524b7f79306f6c44111a203b4bba7

Authored by Jojo-1000
Committed by Moritz Wirger
1 parent 58186067

Update documentation pages.

- use snippets to verify that the code actually compiles
- travis compiles examples and snippets
- update Doxyfile
.travis.yml
@@ -49,11 +49,12 @@ install: @@ -49,11 +49,12 @@ install:
49 49
50 script: 50 script:
51 ############################################################################ 51 ############################################################################
52 - # Build main and tests 52 + # Build main, tests and examples
53 ############################################################################ 53 ############################################################################
54 - mkdir -p build 54 - mkdir -p build
55 - cd build 55 - cd build
56 - - cmake .. -Dhueplusplus_TESTS=ON -DCMAKE_BUILD_TYPE=Debug 56 + - cmake .. -Dhueplusplus_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -Dhueplusplus_EXAMPLES=ON
  57 + - make hueplusplus_examples hueplusplus_snippets
57 - make coveragetest 58 - make coveragetest
58 - cd .. 59 - cd ..
59 - doxygen Doxyfile 60 - doxygen Doxyfile
CMakeLists.txt
@@ -22,7 +22,7 @@ endif() @@ -22,7 +22,7 @@ endif()
22 22
23 # options to set 23 # options to set
24 option(hueplusplus_TESTS "Build tests" OFF) 24 option(hueplusplus_TESTS "Build tests" OFF)
25 -option(hueplusplus_SAMPLES "Build examples" OFF) 25 +option(hueplusplus_EXAMPLES "Build examples" OFF)
26 26
27 option(CLANG_TIDY_FIX "Perform fixes for Clang-Tidy" OFF) 27 option(CLANG_TIDY_FIX "Perform fixes for Clang-Tidy" OFF)
28 find_program(CLANG_TIDY_EXE NAMES "clang-tidy" DOC "Path to clang-tidy executable") 28 find_program(CLANG_TIDY_EXE NAMES "clang-tidy" DOC "Path to clang-tidy executable")
@@ -100,6 +100,6 @@ if(hueplusplus_TESTS) @@ -100,6 +100,6 @@ if(hueplusplus_TESTS)
100 add_subdirectory("test") 100 add_subdirectory("test")
101 endif() 101 endif()
102 102
103 -if(hueplusplus_SAMPLES) 103 +if(hueplusplus_EXAMPLES)
104 add_subdirectory("examples") 104 add_subdirectory("examples")
105 endif() 105 endif()
Doxyfile
1 -# Doxyfile 1.8.11 1 +# Doxyfile 1.8.20
2 2
3 # This file describes the settings to be used by the documentation system 3 # This file describes the settings to be used by the documentation system
4 # doxygen (www.doxygen.org) for a project. 4 # doxygen (www.doxygen.org) for a project.
@@ -17,11 +17,11 @@ @@ -17,11 +17,11 @@
17 # Project related configuration options 17 # Project related configuration options
18 #--------------------------------------------------------------------------- 18 #---------------------------------------------------------------------------
19 19
20 -# This tag specifies the encoding used for all characters in the config file  
21 -# that follow. The default is UTF-8 which is also the encoding used for all text  
22 -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv  
23 -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv  
24 -# for the list of possible encodings. 20 +# This tag specifies the encoding used for all characters in the configuration
  21 +# file that follow. The default is UTF-8 which is also the encoding used for all
  22 +# text before the first occurrence of this tag. Doxygen uses libiconv (or the
  23 +# iconv built into libc) for the transcoding. See
  24 +# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
25 # The default value is: UTF-8. 25 # The default value is: UTF-8.
26 26
27 DOXYFILE_ENCODING = UTF-8 27 DOXYFILE_ENCODING = UTF-8
@@ -38,20 +38,20 @@ PROJECT_NAME = hueplusplus @@ -38,20 +38,20 @@ PROJECT_NAME = hueplusplus
38 # could be handy for archiving the generated documentation or if some version 38 # could be handy for archiving the generated documentation or if some version
39 # control system is used. 39 # control system is used.
40 40
41 -PROJECT_NUMBER = 41 +PROJECT_NUMBER = 1.0.0
42 42
43 # Using the PROJECT_BRIEF tag one can provide an optional one line description 43 # Using the PROJECT_BRIEF tag one can provide an optional one line description
44 # for a project that appears at the top of each page and should give viewer a 44 # for a project that appears at the top of each page and should give viewer a
45 # quick idea about the purpose of the project. Keep the description short. 45 # quick idea about the purpose of the project. Keep the description short.
46 46
47 -PROJECT_BRIEF = 47 +PROJECT_BRIEF =
48 48
49 # With the PROJECT_LOGO tag one can specify a logo or an icon that is included 49 # With the PROJECT_LOGO tag one can specify a logo or an icon that is included
50 # in the documentation. The maximum height of the logo should not exceed 55 50 # in the documentation. The maximum height of the logo should not exceed 55
51 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy 51 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
52 # the logo to the output directory. 52 # the logo to the output directory.
53 53
54 -PROJECT_LOGO = 54 +PROJECT_LOGO =
55 55
56 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path 56 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
57 # into which the generated documentation will be written. If a relative path is 57 # into which the generated documentation will be written. If a relative path is
@@ -93,6 +93,14 @@ ALLOW_UNICODE_NAMES = NO @@ -93,6 +93,14 @@ ALLOW_UNICODE_NAMES = NO
93 93
94 OUTPUT_LANGUAGE = English 94 OUTPUT_LANGUAGE = English
95 95
  96 +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all
  97 +# documentation generated by doxygen is written. Doxygen will use this
  98 +# information to generate all generated output in the proper direction.
  99 +# Possible values are: None, LTR, RTL and Context.
  100 +# The default value is: None.
  101 +
  102 +OUTPUT_TEXT_DIRECTION = None
  103 +
96 # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member 104 # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
97 # descriptions after the members that are listed in the file and class 105 # descriptions after the members that are listed in the file and class
98 # documentation (similar to Javadoc). Set to NO to disable this. 106 # documentation (similar to Javadoc). Set to NO to disable this.
@@ -162,7 +170,7 @@ FULL_PATH_NAMES = YES @@ -162,7 +170,7 @@ FULL_PATH_NAMES = YES
162 # will be relative from the directory where doxygen is started. 170 # will be relative from the directory where doxygen is started.
163 # This tag requires that the tag FULL_PATH_NAMES is set to YES. 171 # This tag requires that the tag FULL_PATH_NAMES is set to YES.
164 172
165 -STRIP_FROM_PATH = 173 +STRIP_FROM_PATH =
166 174
167 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the 175 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
168 # path mentioned in the documentation of a class, which tells the reader which 176 # path mentioned in the documentation of a class, which tells the reader which
@@ -189,6 +197,16 @@ SHORT_NAMES = NO @@ -189,6 +197,16 @@ SHORT_NAMES = NO
189 197
190 JAVADOC_AUTOBRIEF = NO 198 JAVADOC_AUTOBRIEF = NO
191 199
  200 +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
  201 +# such as
  202 +# /***************
  203 +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
  204 +# Javadoc-style will behave just like regular comments and it will not be
  205 +# interpreted by doxygen.
  206 +# The default value is: NO.
  207 +
  208 +JAVADOC_BANNER = NO
  209 +
192 # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first 210 # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
193 # line (until the first dot) of a Qt-style comment as the brief description. If 211 # line (until the first dot) of a Qt-style comment as the brief description. If
194 # set to NO, the Qt-style will behave just like regular Qt-style comments (thus 212 # set to NO, the Qt-style will behave just like regular Qt-style comments (thus
@@ -209,6 +227,14 @@ QT_AUTOBRIEF = NO @@ -209,6 +227,14 @@ QT_AUTOBRIEF = NO
209 227
210 MULTILINE_CPP_IS_BRIEF = NO 228 MULTILINE_CPP_IS_BRIEF = NO
211 229
  230 +# By default Python docstrings are displayed as preformatted text and doxygen's
  231 +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
  232 +# doxygen's special commands can be used and the contents of the docstring
  233 +# documentation blocks is shown as doxygen documentation.
  234 +# The default value is: YES.
  235 +
  236 +PYTHON_DOCSTRING = YES
  237 +
212 # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the 238 # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
213 # documentation from any documented member that it re-implements. 239 # documentation from any documented member that it re-implements.
214 # The default value is: YES. 240 # The default value is: YES.
@@ -236,15 +262,14 @@ TAB_SIZE = 4 @@ -236,15 +262,14 @@ TAB_SIZE = 4
236 # will allow you to put the command \sideeffect (or @sideeffect) in the 262 # will allow you to put the command \sideeffect (or @sideeffect) in the
237 # documentation, which will result in a user-defined paragraph with heading 263 # documentation, which will result in a user-defined paragraph with heading
238 # "Side Effects:". You can put \n's in the value part of an alias to insert 264 # "Side Effects:". You can put \n's in the value part of an alias to insert
239 -# newlines.  
240 -  
241 -ALIASES =  
242 -  
243 -# This tag can be used to specify a number of word-keyword mappings (TCL only).  
244 -# A mapping has the form "name=value". For example adding "class=itcl::class"  
245 -# will allow you to use the command class in the itcl::class meaning. 265 +# newlines (in the resulting output). You can put ^^ in the value part of an
  266 +# alias to insert a newline as if a physical newline was in the original file.
  267 +# When you need a literal { or } or , in the value part of an alias you have to
  268 +# escape them by means of a backslash (\), this can lead to conflicts with the
  269 +# commands \{ and \} for these it is advised to use the version @{ and @} or use
  270 +# a double escape (\\{ and \\})
246 271
247 -TCL_SUBST = 272 +ALIASES =
248 273
249 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 274 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
250 # only. Doxygen will then generate output that is more tailored for C. For 275 # only. Doxygen will then generate output that is more tailored for C. For
@@ -274,28 +299,37 @@ OPTIMIZE_FOR_FORTRAN = NO @@ -274,28 +299,37 @@ OPTIMIZE_FOR_FORTRAN = NO
274 299
275 OPTIMIZE_OUTPUT_VHDL = NO 300 OPTIMIZE_OUTPUT_VHDL = NO
276 301
  302 +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
  303 +# sources only. Doxygen will then generate output that is more tailored for that
  304 +# language. For instance, namespaces will be presented as modules, types will be
  305 +# separated into more groups, etc.
  306 +# The default value is: NO.
  307 +
  308 +OPTIMIZE_OUTPUT_SLICE = NO
  309 +
277 # Doxygen selects the parser to use depending on the extension of the files it 310 # Doxygen selects the parser to use depending on the extension of the files it
278 # parses. With this tag you can assign which parser to use for a given 311 # parses. With this tag you can assign which parser to use for a given
279 # extension. Doxygen has a built-in mapping, but you can override or extend it 312 # extension. Doxygen has a built-in mapping, but you can override or extend it
280 # using this tag. The format is ext=language, where ext is a file extension, and 313 # using this tag. The format is ext=language, where ext is a file extension, and
281 -# language is one of the parsers supported by doxygen: IDL, Java, Javascript,  
282 -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:  
283 -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:  
284 -# Fortran. In the later case the parser tries to guess whether the code is fixed  
285 -# or free formatted code, this is the default for Fortran type files), VHDL. For  
286 -# instance to make doxygen treat .inc files as Fortran files (default is PHP),  
287 -# and .f files as C (default is Fortran), use: inc=Fortran f=C. 314 +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
  315 +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL,
  316 +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
  317 +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
  318 +# tries to guess whether the code is fixed or free formatted code, this is the
  319 +# default for Fortran type files). For instance to make doxygen treat .inc files
  320 +# as Fortran files (default is PHP), and .f files as C (default is Fortran),
  321 +# use: inc=Fortran f=C.
288 # 322 #
289 # Note: For files without extension you can use no_extension as a placeholder. 323 # Note: For files without extension you can use no_extension as a placeholder.
290 # 324 #
291 # Note that for custom extensions you also need to set FILE_PATTERNS otherwise 325 # Note that for custom extensions you also need to set FILE_PATTERNS otherwise
292 # the files are not read by doxygen. 326 # the files are not read by doxygen.
293 327
294 -EXTENSION_MAPPING = 328 +EXTENSION_MAPPING =
295 329
296 # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments 330 # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
297 # according to the Markdown format, which allows for more readable 331 # according to the Markdown format, which allows for more readable
298 -# documentation. See http://daringfireball.net/projects/markdown/ for details. 332 +# documentation. See https://daringfireball.net/projects/markdown/ for details.
299 # The output of markdown processing is further processed by doxygen, so you can 333 # The output of markdown processing is further processed by doxygen, so you can
300 # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in 334 # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
301 # case of backward compatibilities issues. 335 # case of backward compatibilities issues.
@@ -303,6 +337,15 @@ EXTENSION_MAPPING = @@ -303,6 +337,15 @@ EXTENSION_MAPPING =
303 337
304 MARKDOWN_SUPPORT = YES 338 MARKDOWN_SUPPORT = YES
305 339
  340 +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
  341 +# to that level are automatically included in the table of contents, even if
  342 +# they do not have an id attribute.
  343 +# Note: This feature currently applies only to Markdown headings.
  344 +# Minimum value: 0, maximum value: 99, default value: 5.
  345 +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
  346 +
  347 +TOC_INCLUDE_HEADINGS = 5
  348 +
306 # When enabled doxygen tries to link words that correspond to documented 349 # When enabled doxygen tries to link words that correspond to documented
307 # classes, or namespaces to their corresponding documentation. Such a link can 350 # classes, or namespaces to their corresponding documentation. Such a link can
308 # be prevented in individual cases by putting a % sign in front of the word or 351 # be prevented in individual cases by putting a % sign in front of the word or
@@ -328,7 +371,7 @@ BUILTIN_STL_SUPPORT = NO @@ -328,7 +371,7 @@ BUILTIN_STL_SUPPORT = NO
328 CPP_CLI_SUPPORT = NO 371 CPP_CLI_SUPPORT = NO
329 372
330 # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: 373 # Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
331 -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen 374 +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
332 # will parse them like normal C++ but will assume all classes use public instead 375 # will parse them like normal C++ but will assume all classes use public instead
333 # of private inheritance when no explicit protection keyword is present. 376 # of private inheritance when no explicit protection keyword is present.
334 # The default value is: NO. 377 # The default value is: NO.
@@ -414,6 +457,19 @@ TYPEDEF_HIDES_STRUCT = NO @@ -414,6 +457,19 @@ TYPEDEF_HIDES_STRUCT = NO
414 457
415 LOOKUP_CACHE_SIZE = 0 458 LOOKUP_CACHE_SIZE = 0
416 459
  460 +# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use
  461 +# during processing. When set to 0 doxygen will based this on the number of
  462 +# cores available in the system. You can set it explicitly to a value larger
  463 +# than 0 to get more control over the balance between CPU load and processing
  464 +# speed. At this moment only the input processing can be done using multiple
  465 +# threads. Since this is still an experimental feature the default is set to 1,
  466 +# which efficively disables parallel processing. Please report any issues you
  467 +# encounter. Generating dot graphs in parallel is controlled by the
  468 +# DOT_NUM_THREADS setting.
  469 +# Minimum value: 0, maximum value: 32, default value: 1.
  470 +
  471 +NUM_PROC_THREADS = 1
  472 +
417 #--------------------------------------------------------------------------- 473 #---------------------------------------------------------------------------
418 # Build related configuration options 474 # Build related configuration options
419 #--------------------------------------------------------------------------- 475 #---------------------------------------------------------------------------
@@ -434,6 +490,12 @@ EXTRACT_ALL = YES @@ -434,6 +490,12 @@ EXTRACT_ALL = YES
434 490
435 EXTRACT_PRIVATE = NO 491 EXTRACT_PRIVATE = NO
436 492
  493 +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
  494 +# methods of a class will be included in the documentation.
  495 +# The default value is: NO.
  496 +
  497 +EXTRACT_PRIV_VIRTUAL = NO
  498 +
437 # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal 499 # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
438 # scope will be included in the documentation. 500 # scope will be included in the documentation.
439 # The default value is: NO. 501 # The default value is: NO.
@@ -488,8 +550,8 @@ HIDE_UNDOC_MEMBERS = NO @@ -488,8 +550,8 @@ HIDE_UNDOC_MEMBERS = NO
488 HIDE_UNDOC_CLASSES = NO 550 HIDE_UNDOC_CLASSES = NO
489 551
490 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend 552 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
491 -# (class|struct|union) declarations. If set to NO, these declarations will be  
492 -# included in the documentation. 553 +# declarations. If set to NO, these declarations will be included in the
  554 +# documentation.
493 # The default value is: NO. 555 # The default value is: NO.
494 556
495 HIDE_FRIEND_COMPOUNDS = NO 557 HIDE_FRIEND_COMPOUNDS = NO
@@ -512,7 +574,7 @@ INTERNAL_DOCS = NO @@ -512,7 +574,7 @@ INTERNAL_DOCS = NO
512 # names in lower-case letters. If set to YES, upper-case letters are also 574 # names in lower-case letters. If set to YES, upper-case letters are also
513 # allowed. This is useful if you have classes or files whose names only differ 575 # allowed. This is useful if you have classes or files whose names only differ
514 # in case and if your file system supports case sensitive file names. Windows 576 # in case and if your file system supports case sensitive file names. Windows
515 -# and Mac users are advised to set this option to NO. 577 +# (including Cygwin) and Mac users are advised to set this option to NO.
516 # The default value is: system dependent. 578 # The default value is: system dependent.
517 579
518 CASE_SENSE_NAMES = NO 580 CASE_SENSE_NAMES = NO
@@ -639,7 +701,7 @@ GENERATE_DEPRECATEDLIST= YES @@ -639,7 +701,7 @@ GENERATE_DEPRECATEDLIST= YES
639 # sections, marked by \if <section_label> ... \endif and \cond <section_label> 701 # sections, marked by \if <section_label> ... \endif and \cond <section_label>
640 # ... \endcond blocks. 702 # ... \endcond blocks.
641 703
642 -ENABLED_SECTIONS = 704 +ENABLED_SECTIONS =
643 705
644 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the 706 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
645 # initial value of a variable or macro / define can have for it to appear in the 707 # initial value of a variable or macro / define can have for it to appear in the
@@ -681,7 +743,7 @@ SHOW_NAMESPACES = YES @@ -681,7 +743,7 @@ SHOW_NAMESPACES = YES
681 # by doxygen. Whatever the program writes to standard output is used as the file 743 # by doxygen. Whatever the program writes to standard output is used as the file
682 # version. For an example see the documentation. 744 # version. For an example see the documentation.
683 745
684 -FILE_VERSION_FILTER = 746 +FILE_VERSION_FILTER =
685 747
686 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed 748 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
687 # by doxygen. The layout file controls the global structure of the generated 749 # by doxygen. The layout file controls the global structure of the generated
@@ -694,17 +756,17 @@ FILE_VERSION_FILTER = @@ -694,17 +756,17 @@ FILE_VERSION_FILTER =
694 # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE 756 # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
695 # tag is left empty. 757 # tag is left empty.
696 758
697 -LAYOUT_FILE = 759 +LAYOUT_FILE =
698 760
699 # The CITE_BIB_FILES tag can be used to specify one or more bib files containing 761 # The CITE_BIB_FILES tag can be used to specify one or more bib files containing
700 # the reference definitions. This must be a list of .bib files. The .bib 762 # the reference definitions. This must be a list of .bib files. The .bib
701 # extension is automatically appended if omitted. This requires the bibtex tool 763 # extension is automatically appended if omitted. This requires the bibtex tool
702 -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. 764 +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
703 # For LaTeX the style of the bibliography can be controlled using 765 # For LaTeX the style of the bibliography can be controlled using
704 # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the 766 # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
705 # search path. See also \cite for info how to create references. 767 # search path. See also \cite for info how to create references.
706 768
707 -CITE_BIB_FILES = 769 +CITE_BIB_FILES =
708 770
709 #--------------------------------------------------------------------------- 771 #---------------------------------------------------------------------------
710 # Configuration options related to warning and progress messages 772 # Configuration options related to warning and progress messages
@@ -744,7 +806,8 @@ WARN_IF_DOC_ERROR = YES @@ -744,7 +806,8 @@ WARN_IF_DOC_ERROR = YES
744 # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that 806 # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
745 # are documented, but have no documentation for their parameters or return 807 # are documented, but have no documentation for their parameters or return
746 # value. If set to NO, doxygen will only warn about wrong or incomplete 808 # value. If set to NO, doxygen will only warn about wrong or incomplete
747 -# parameter documentation, but not about the absence of documentation. 809 +# parameter documentation, but not about the absence of documentation. If
  810 +# EXTRACT_ALL is set to YES then this flag will automatically be disabled.
748 # The default value is: NO. 811 # The default value is: NO.
749 812
750 WARN_NO_PARAMDOC = NO 813 WARN_NO_PARAMDOC = NO
@@ -769,7 +832,7 @@ WARN_FORMAT = &quot;$file:$line: $text&quot; @@ -769,7 +832,7 @@ WARN_FORMAT = &quot;$file:$line: $text&quot;
769 # messages should be written. If left blank the output is written to standard 832 # messages should be written. If left blank the output is written to standard
770 # error (stderr). 833 # error (stderr).
771 834
772 -WARN_LOGFILE = 835 +WARN_LOGFILE =
773 836
774 #--------------------------------------------------------------------------- 837 #---------------------------------------------------------------------------
775 # Configuration options related to the input files 838 # Configuration options related to the input files
@@ -783,12 +846,13 @@ WARN_LOGFILE = @@ -783,12 +846,13 @@ WARN_LOGFILE =
783 846
784 INPUT = include/hueplusplus \ 847 INPUT = include/hueplusplus \
785 src \ 848 src \
786 - doc/markdown 849 + doc/markdown \
  850 + examples
787 851
788 # This tag can be used to specify the character encoding of the source files 852 # This tag can be used to specify the character encoding of the source files
789 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses 853 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
790 # libiconv (or the iconv built into libc) for the transcoding. See the libiconv 854 # libiconv (or the iconv built into libc) for the transcoding. See the libiconv
791 -# documentation (see: http://www.gnu.org/software/libiconv) for the list of 855 +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of
792 # possible encodings. 856 # possible encodings.
793 # The default value is: UTF-8. 857 # The default value is: UTF-8.
794 858
@@ -805,8 +869,10 @@ INPUT_ENCODING = UTF-8 @@ -805,8 +869,10 @@ INPUT_ENCODING = UTF-8
805 # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, 869 # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
806 # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, 870 # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
807 # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, 871 # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
808 -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl,  
809 -# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. 872 +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment),
  873 +# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen
  874 +# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd,
  875 +# *.vhdl, *.ucf, *.qsf and *.ice.
810 876
811 FILE_PATTERNS = *.c \ 877 FILE_PATTERNS = *.c \
812 *.cc \ 878 *.cc \
@@ -866,7 +932,7 @@ RECURSIVE = YES @@ -866,7 +932,7 @@ RECURSIVE = YES
866 # Note that relative paths are relative to the directory from which doxygen is 932 # Note that relative paths are relative to the directory from which doxygen is
867 # run. 933 # run.
868 934
869 -EXCLUDE = 935 +EXCLUDE =
870 936
871 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or 937 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
872 # directories that are symbolic links (a Unix file system feature) are excluded 938 # directories that are symbolic links (a Unix file system feature) are excluded
@@ -882,7 +948,7 @@ EXCLUDE_SYMLINKS = NO @@ -882,7 +948,7 @@ EXCLUDE_SYMLINKS = NO
882 # Note that the wildcards are matched against the file with absolute path, so to 948 # Note that the wildcards are matched against the file with absolute path, so to
883 # exclude all test directories for example use the pattern */test/* 949 # exclude all test directories for example use the pattern */test/*
884 950
885 -EXCLUDE_PATTERNS = 951 +EXCLUDE_PATTERNS =
886 952
887 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 953 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
888 # (namespaces, classes, functions, etc.) that should be excluded from the 954 # (namespaces, classes, functions, etc.) that should be excluded from the
@@ -899,14 +965,14 @@ EXCLUDE_SYMBOLS = *::detail @@ -899,14 +965,14 @@ EXCLUDE_SYMBOLS = *::detail
899 # that contain example code fragments that are included (see the \include 965 # that contain example code fragments that are included (see the \include
900 # command). 966 # command).
901 967
902 -EXAMPLE_PATH = 968 +EXAMPLE_PATH = examples
903 969
904 # If the value of the EXAMPLE_PATH tag contains directories, you can use the 970 # If the value of the EXAMPLE_PATH tag contains directories, you can use the
905 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and 971 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
906 # *.h) to filter out the source-files in the directories. If left blank all 972 # *.h) to filter out the source-files in the directories. If left blank all
907 # files are included. 973 # files are included.
908 974
909 -EXAMPLE_PATTERNS = * 975 +EXAMPLE_PATTERNS = *.cpp
910 976
911 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 977 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
912 # searched for input files to be used with the \include or \dontinclude commands 978 # searched for input files to be used with the \include or \dontinclude commands
@@ -919,7 +985,7 @@ EXAMPLE_RECURSIVE = NO @@ -919,7 +985,7 @@ EXAMPLE_RECURSIVE = NO
919 # that contain images that are to be included in the documentation (see the 985 # that contain images that are to be included in the documentation (see the
920 # \image command). 986 # \image command).
921 987
922 -IMAGE_PATH = 988 +IMAGE_PATH =
923 989
924 # The INPUT_FILTER tag can be used to specify a program that doxygen should 990 # The INPUT_FILTER tag can be used to specify a program that doxygen should
925 # invoke to filter for each input file. Doxygen will invoke the filter program 991 # invoke to filter for each input file. Doxygen will invoke the filter program
@@ -940,7 +1006,7 @@ IMAGE_PATH = @@ -940,7 +1006,7 @@ IMAGE_PATH =
940 # need to set EXTENSION_MAPPING for the extension otherwise the files are not 1006 # need to set EXTENSION_MAPPING for the extension otherwise the files are not
941 # properly processed by doxygen. 1007 # properly processed by doxygen.
942 1008
943 -INPUT_FILTER = 1009 +INPUT_FILTER =
944 1010
945 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 1011 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
946 # basis. Doxygen will compare the file name with each pattern and apply the 1012 # basis. Doxygen will compare the file name with each pattern and apply the
@@ -953,7 +1019,7 @@ INPUT_FILTER = @@ -953,7 +1019,7 @@ INPUT_FILTER =
953 # need to set EXTENSION_MAPPING for the extension otherwise the files are not 1019 # need to set EXTENSION_MAPPING for the extension otherwise the files are not
954 # properly processed by doxygen. 1020 # properly processed by doxygen.
955 1021
956 -FILTER_PATTERNS = 1022 +FILTER_PATTERNS =
957 1023
958 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 1024 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
959 # INPUT_FILTER) will also be used to filter the input files that are used for 1025 # INPUT_FILTER) will also be used to filter the input files that are used for
@@ -968,7 +1034,7 @@ FILTER_SOURCE_FILES = NO @@ -968,7 +1034,7 @@ FILTER_SOURCE_FILES = NO
968 # *.ext= (so without naming a filter). 1034 # *.ext= (so without naming a filter).
969 # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. 1035 # This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
970 1036
971 -FILTER_SOURCE_PATTERNS = 1037 +FILTER_SOURCE_PATTERNS =
972 1038
973 # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that 1039 # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
974 # is part of the input, its contents will be placed on the main page 1040 # is part of the input, its contents will be placed on the main page
@@ -1004,7 +1070,7 @@ INLINE_SOURCES = NO @@ -1004,7 +1070,7 @@ INLINE_SOURCES = NO
1004 STRIP_CODE_COMMENTS = YES 1070 STRIP_CODE_COMMENTS = YES
1005 1071
1006 # If the REFERENCED_BY_RELATION tag is set to YES then for each documented 1072 # If the REFERENCED_BY_RELATION tag is set to YES then for each documented
1007 -# function all documented functions referencing it will be listed. 1073 +# entity all documented functions referencing it will be listed.
1008 # The default value is: NO. 1074 # The default value is: NO.
1009 1075
1010 REFERENCED_BY_RELATION = NO 1076 REFERENCED_BY_RELATION = NO
@@ -1036,12 +1102,12 @@ SOURCE_TOOLTIPS = YES @@ -1036,12 +1102,12 @@ SOURCE_TOOLTIPS = YES
1036 # If the USE_HTAGS tag is set to YES then the references to source code will 1102 # If the USE_HTAGS tag is set to YES then the references to source code will
1037 # point to the HTML generated by the htags(1) tool instead of doxygen built-in 1103 # point to the HTML generated by the htags(1) tool instead of doxygen built-in
1038 # source browser. The htags tool is part of GNU's global source tagging system 1104 # source browser. The htags tool is part of GNU's global source tagging system
1039 -# (see http://www.gnu.org/software/global/global.html). You will need version 1105 +# (see https://www.gnu.org/software/global/global.html). You will need version
1040 # 4.8.6 or higher. 1106 # 4.8.6 or higher.
1041 # 1107 #
1042 # To use it do the following: 1108 # To use it do the following:
1043 # - Install the latest version of global 1109 # - Install the latest version of global
1044 -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file 1110 +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
1045 # - Make sure the INPUT points to the root of the source tree 1111 # - Make sure the INPUT points to the root of the source tree
1046 # - Run doxygen as normal 1112 # - Run doxygen as normal
1047 # 1113 #
@@ -1069,7 +1135,7 @@ VERBATIM_HEADERS = YES @@ -1069,7 +1135,7 @@ VERBATIM_HEADERS = YES
1069 # rich C++ code for which doxygen's built-in parser lacks the necessary type 1135 # rich C++ code for which doxygen's built-in parser lacks the necessary type
1070 # information. 1136 # information.
1071 # Note: The availability of this option depends on whether or not doxygen was 1137 # Note: The availability of this option depends on whether or not doxygen was
1072 -# generated with the -Duse-libclang=ON option for CMake. 1138 +# generated with the -Duse_libclang=ON option for CMake.
1073 # The default value is: NO. 1139 # The default value is: NO.
1074 1140
1075 CLANG_ASSISTED_PARSING = NO 1141 CLANG_ASSISTED_PARSING = NO
@@ -1080,7 +1146,20 @@ CLANG_ASSISTED_PARSING = NO @@ -1080,7 +1146,20 @@ CLANG_ASSISTED_PARSING = NO
1080 # specified with INPUT and INCLUDE_PATH. 1146 # specified with INPUT and INCLUDE_PATH.
1081 # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. 1147 # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
1082 1148
1083 -CLANG_OPTIONS = 1149 +CLANG_OPTIONS =
  1150 +
  1151 +# If clang assisted parsing is enabled you can provide the clang parser with the
  1152 +# path to the directory containing a file called compile_commands.json. This
  1153 +# file is the compilation database (see:
  1154 +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
  1155 +# options used when the source files were built. This is equivalent to
  1156 +# specifying the "-p" option to a clang tool, such as clang-check. These options
  1157 +# will then be passed to the parser. Any options specified with CLANG_OPTIONS
  1158 +# will be added as well.
  1159 +# Note: The availability of this option depends on whether or not doxygen was
  1160 +# generated with the -Duse_libclang=ON option for CMake.
  1161 +
  1162 +CLANG_DATABASE_PATH =
1084 1163
1085 #--------------------------------------------------------------------------- 1164 #---------------------------------------------------------------------------
1086 # Configuration options related to the alphabetical class index 1165 # Configuration options related to the alphabetical class index
@@ -1106,7 +1185,7 @@ COLS_IN_ALPHA_INDEX = 5 @@ -1106,7 +1185,7 @@ COLS_IN_ALPHA_INDEX = 5
1106 # while generating the index headers. 1185 # while generating the index headers.
1107 # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. 1186 # This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
1108 1187
1109 -IGNORE_PREFIX = 1188 +IGNORE_PREFIX =
1110 1189
1111 #--------------------------------------------------------------------------- 1190 #---------------------------------------------------------------------------
1112 # Configuration options related to the HTML output 1191 # Configuration options related to the HTML output
@@ -1150,7 +1229,7 @@ HTML_FILE_EXTENSION = .html @@ -1150,7 +1229,7 @@ HTML_FILE_EXTENSION = .html
1150 # of the possible markers and block names see the documentation. 1229 # of the possible markers and block names see the documentation.
1151 # This tag requires that the tag GENERATE_HTML is set to YES. 1230 # This tag requires that the tag GENERATE_HTML is set to YES.
1152 1231
1153 -HTML_HEADER = 1232 +HTML_HEADER =
1154 1233
1155 # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each 1234 # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
1156 # generated HTML page. If the tag is left blank doxygen will generate a standard 1235 # generated HTML page. If the tag is left blank doxygen will generate a standard
@@ -1160,7 +1239,7 @@ HTML_HEADER = @@ -1160,7 +1239,7 @@ HTML_HEADER =
1160 # that doxygen normally uses. 1239 # that doxygen normally uses.
1161 # This tag requires that the tag GENERATE_HTML is set to YES. 1240 # This tag requires that the tag GENERATE_HTML is set to YES.
1162 1241
1163 -HTML_FOOTER = 1242 +HTML_FOOTER =
1164 1243
1165 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style 1244 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
1166 # sheet that is used by each HTML page. It can be used to fine-tune the look of 1245 # sheet that is used by each HTML page. It can be used to fine-tune the look of
@@ -1172,7 +1251,7 @@ HTML_FOOTER = @@ -1172,7 +1251,7 @@ HTML_FOOTER =
1172 # obsolete. 1251 # obsolete.
1173 # This tag requires that the tag GENERATE_HTML is set to YES. 1252 # This tag requires that the tag GENERATE_HTML is set to YES.
1174 1253
1175 -HTML_STYLESHEET = 1254 +HTML_STYLESHEET =
1176 1255
1177 # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined 1256 # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
1178 # cascading style sheets that are included after the standard style sheets 1257 # cascading style sheets that are included after the standard style sheets
@@ -1185,7 +1264,7 @@ HTML_STYLESHEET = @@ -1185,7 +1264,7 @@ HTML_STYLESHEET =
1185 # list). For an example see the documentation. 1264 # list). For an example see the documentation.
1186 # This tag requires that the tag GENERATE_HTML is set to YES. 1265 # This tag requires that the tag GENERATE_HTML is set to YES.
1187 1266
1188 -HTML_EXTRA_STYLESHEET = 1267 +HTML_EXTRA_STYLESHEET =
1189 1268
1190 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or 1269 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
1191 # other source files which should be copied to the HTML output directory. Note 1270 # other source files which should be copied to the HTML output directory. Note
@@ -1195,12 +1274,12 @@ HTML_EXTRA_STYLESHEET = @@ -1195,12 +1274,12 @@ HTML_EXTRA_STYLESHEET =
1195 # files will be copied as-is; there are no commands or markers available. 1274 # files will be copied as-is; there are no commands or markers available.
1196 # This tag requires that the tag GENERATE_HTML is set to YES. 1275 # This tag requires that the tag GENERATE_HTML is set to YES.
1197 1276
1198 -HTML_EXTRA_FILES = 1277 +HTML_EXTRA_FILES =
1199 1278
1200 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen 1279 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
1201 # will adjust the colors in the style sheet and background images according to 1280 # will adjust the colors in the style sheet and background images according to
1202 # this color. Hue is specified as an angle on a colorwheel, see 1281 # this color. Hue is specified as an angle on a colorwheel, see
1203 -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value 1282 +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
1204 # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 1283 # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
1205 # purple, and 360 is red again. 1284 # purple, and 360 is red again.
1206 # Minimum value: 0, maximum value: 359, default value: 220. 1285 # Minimum value: 0, maximum value: 359, default value: 220.
@@ -1236,13 +1315,24 @@ HTML_COLORSTYLE_GAMMA = 80 @@ -1236,13 +1315,24 @@ HTML_COLORSTYLE_GAMMA = 80
1236 1315
1237 HTML_TIMESTAMP = NO 1316 HTML_TIMESTAMP = NO
1238 1317
  1318 +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
  1319 +# documentation will contain a main index with vertical navigation menus that
  1320 +# are dynamically created via JavaScript. If disabled, the navigation index will
  1321 +# consists of multiple levels of tabs that are statically embedded in every HTML
  1322 +# page. Disable this option to support browsers that do not have JavaScript,
  1323 +# like the Qt help browser.
  1324 +# The default value is: YES.
  1325 +# This tag requires that the tag GENERATE_HTML is set to YES.
  1326 +
  1327 +HTML_DYNAMIC_MENUS = YES
  1328 +
1239 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 1329 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1240 # documentation will contain sections that can be hidden and shown after the 1330 # documentation will contain sections that can be hidden and shown after the
1241 # page has loaded. 1331 # page has loaded.
1242 # The default value is: NO. 1332 # The default value is: NO.
1243 # This tag requires that the tag GENERATE_HTML is set to YES. 1333 # This tag requires that the tag GENERATE_HTML is set to YES.
1244 1334
1245 -HTML_DYNAMIC_SECTIONS = NO 1335 +HTML_DYNAMIC_SECTIONS = YES
1246 1336
1247 # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries 1337 # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
1248 # shown in the various tree structured indices initially; the user can expand 1338 # shown in the various tree structured indices initially; the user can expand
@@ -1259,13 +1349,13 @@ HTML_INDEX_NUM_ENTRIES = 100 @@ -1259,13 +1349,13 @@ HTML_INDEX_NUM_ENTRIES = 100
1259 1349
1260 # If the GENERATE_DOCSET tag is set to YES, additional index files will be 1350 # If the GENERATE_DOCSET tag is set to YES, additional index files will be
1261 # generated that can be used as input for Apple's Xcode 3 integrated development 1351 # generated that can be used as input for Apple's Xcode 3 integrated development
1262 -# environment (see: http://developer.apple.com/tools/xcode/), introduced with  
1263 -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a 1352 +# environment (see: https://developer.apple.com/xcode/), introduced with OSX
  1353 +# 10.5 (Leopard). To create a documentation set, doxygen will generate a
1264 # Makefile in the HTML output directory. Running make will produce the docset in 1354 # Makefile in the HTML output directory. Running make will produce the docset in
1265 # that directory and running make install will install the docset in 1355 # that directory and running make install will install the docset in
1266 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at 1356 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
1267 -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html  
1268 -# for more information. 1357 +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
  1358 +# genXcode/_index.html for more information.
1269 # The default value is: NO. 1359 # The default value is: NO.
1270 # This tag requires that the tag GENERATE_HTML is set to YES. 1360 # This tag requires that the tag GENERATE_HTML is set to YES.
1271 1361
@@ -1304,7 +1394,7 @@ DOCSET_PUBLISHER_NAME = Publisher @@ -1304,7 +1394,7 @@ DOCSET_PUBLISHER_NAME = Publisher
1304 # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three 1394 # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
1305 # additional HTML index files: index.hhp, index.hhc, and index.hhk. The 1395 # additional HTML index files: index.hhp, index.hhc, and index.hhk. The
1306 # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop 1396 # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
1307 -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on 1397 +# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on
1308 # Windows. 1398 # Windows.
1309 # 1399 #
1310 # The HTML Help Workshop contains a compiler that can convert all HTML output 1400 # The HTML Help Workshop contains a compiler that can convert all HTML output
@@ -1324,7 +1414,7 @@ GENERATE_HTMLHELP = NO @@ -1324,7 +1414,7 @@ GENERATE_HTMLHELP = NO
1324 # written to the html output directory. 1414 # written to the html output directory.
1325 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1415 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1326 1416
1327 -CHM_FILE = 1417 +CHM_FILE =
1328 1418
1329 # The HHC_LOCATION tag can be used to specify the location (absolute path 1419 # The HHC_LOCATION tag can be used to specify the location (absolute path
1330 # including file name) of the HTML help compiler (hhc.exe). If non-empty, 1420 # including file name) of the HTML help compiler (hhc.exe). If non-empty,
@@ -1332,10 +1422,10 @@ CHM_FILE = @@ -1332,10 +1422,10 @@ CHM_FILE =
1332 # The file has to be specified with full path. 1422 # The file has to be specified with full path.
1333 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1423 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1334 1424
1335 -HHC_LOCATION = 1425 +HHC_LOCATION =
1336 1426
1337 # The GENERATE_CHI flag controls if a separate .chi index file is generated 1427 # The GENERATE_CHI flag controls if a separate .chi index file is generated
1338 -# (YES) or that it should be included in the master .chm file (NO). 1428 +# (YES) or that it should be included in the main .chm file (NO).
1339 # The default value is: NO. 1429 # The default value is: NO.
1340 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1430 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1341 1431
@@ -1345,7 +1435,7 @@ GENERATE_CHI = NO @@ -1345,7 +1435,7 @@ GENERATE_CHI = NO
1345 # and project file content. 1435 # and project file content.
1346 # This tag requires that the tag GENERATE_HTMLHELP is set to YES. 1436 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1347 1437
1348 -CHM_INDEX_ENCODING = 1438 +CHM_INDEX_ENCODING =
1349 1439
1350 # The BINARY_TOC flag controls whether a binary table of contents is generated 1440 # The BINARY_TOC flag controls whether a binary table of contents is generated
1351 # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it 1441 # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
@@ -1376,11 +1466,11 @@ GENERATE_QHP = NO @@ -1376,11 +1466,11 @@ GENERATE_QHP = NO
1376 # the HTML output folder. 1466 # the HTML output folder.
1377 # This tag requires that the tag GENERATE_QHP is set to YES. 1467 # This tag requires that the tag GENERATE_QHP is set to YES.
1378 1468
1379 -QCH_FILE = 1469 +QCH_FILE =
1380 1470
1381 # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help 1471 # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
1382 # Project output. For more information please see Qt Help Project / Namespace 1472 # Project output. For more information please see Qt Help Project / Namespace
1383 -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). 1473 +# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
1384 # The default value is: org.doxygen.Project. 1474 # The default value is: org.doxygen.Project.
1385 # This tag requires that the tag GENERATE_QHP is set to YES. 1475 # This tag requires that the tag GENERATE_QHP is set to YES.
1386 1476
@@ -1388,7 +1478,7 @@ QHP_NAMESPACE = org.doxygen.Project @@ -1388,7 +1478,7 @@ QHP_NAMESPACE = org.doxygen.Project
1388 1478
1389 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt 1479 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
1390 # Help Project output. For more information please see Qt Help Project / Virtual 1480 # Help Project output. For more information please see Qt Help Project / Virtual
1391 -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- 1481 +# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-
1392 # folders). 1482 # folders).
1393 # The default value is: doc. 1483 # The default value is: doc.
1394 # This tag requires that the tag GENERATE_QHP is set to YES. 1484 # This tag requires that the tag GENERATE_QHP is set to YES.
@@ -1397,33 +1487,33 @@ QHP_VIRTUAL_FOLDER = doc @@ -1397,33 +1487,33 @@ QHP_VIRTUAL_FOLDER = doc
1397 1487
1398 # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom 1488 # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
1399 # filter to add. For more information please see Qt Help Project / Custom 1489 # filter to add. For more information please see Qt Help Project / Custom
1400 -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- 1490 +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
1401 # filters). 1491 # filters).
1402 # This tag requires that the tag GENERATE_QHP is set to YES. 1492 # This tag requires that the tag GENERATE_QHP is set to YES.
1403 1493
1404 -QHP_CUST_FILTER_NAME = 1494 +QHP_CUST_FILTER_NAME =
1405 1495
1406 # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the 1496 # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
1407 # custom filter to add. For more information please see Qt Help Project / Custom 1497 # custom filter to add. For more information please see Qt Help Project / Custom
1408 -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- 1498 +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
1409 # filters). 1499 # filters).
1410 # This tag requires that the tag GENERATE_QHP is set to YES. 1500 # This tag requires that the tag GENERATE_QHP is set to YES.
1411 1501
1412 -QHP_CUST_FILTER_ATTRS = 1502 +QHP_CUST_FILTER_ATTRS =
1413 1503
1414 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this 1504 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1415 # project's filter section matches. Qt Help Project / Filter Attributes (see: 1505 # project's filter section matches. Qt Help Project / Filter Attributes (see:
1416 -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). 1506 +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
1417 # This tag requires that the tag GENERATE_QHP is set to YES. 1507 # This tag requires that the tag GENERATE_QHP is set to YES.
1418 1508
1419 -QHP_SECT_FILTER_ATTRS = 1509 +QHP_SECT_FILTER_ATTRS =
1420 1510
1421 # The QHG_LOCATION tag can be used to specify the location of Qt's 1511 # The QHG_LOCATION tag can be used to specify the location of Qt's
1422 # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the 1512 # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
1423 # generated .qhp file. 1513 # generated .qhp file.
1424 # This tag requires that the tag GENERATE_QHP is set to YES. 1514 # This tag requires that the tag GENERATE_QHP is set to YES.
1425 1515
1426 -QHG_LOCATION = 1516 +QHG_LOCATION =
1427 1517
1428 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be 1518 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
1429 # generated, together with the HTML files, they form an Eclipse help plugin. To 1519 # generated, together with the HTML files, they form an Eclipse help plugin. To
@@ -1497,6 +1587,17 @@ TREEVIEW_WIDTH = 250 @@ -1497,6 +1587,17 @@ TREEVIEW_WIDTH = 250
1497 1587
1498 EXT_LINKS_IN_WINDOW = NO 1588 EXT_LINKS_IN_WINDOW = NO
1499 1589
  1590 +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
  1591 +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
  1592 +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
  1593 +# the HTML output. These images will generally look nicer at scaled resolutions.
  1594 +# Possible values are: png (the default) and svg (looks nicer but requires the
  1595 +# pdf2svg or inkscape tool).
  1596 +# The default value is: png.
  1597 +# This tag requires that the tag GENERATE_HTML is set to YES.
  1598 +
  1599 +HTML_FORMULA_FORMAT = png
  1600 +
1500 # Use this tag to change the font size of LaTeX formulas included as images in 1601 # Use this tag to change the font size of LaTeX formulas included as images in
1501 # the HTML documentation. When you change the font size after a successful 1602 # the HTML documentation. When you change the font size after a successful
1502 # doxygen run you need to manually remove any form_*.png images from the HTML 1603 # doxygen run you need to manually remove any form_*.png images from the HTML
@@ -1506,7 +1607,7 @@ EXT_LINKS_IN_WINDOW = NO @@ -1506,7 +1607,7 @@ EXT_LINKS_IN_WINDOW = NO
1506 1607
1507 FORMULA_FONTSIZE = 10 1608 FORMULA_FONTSIZE = 10
1508 1609
1509 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images 1610 +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
1510 # generated for formulas are transparent PNGs. Transparent PNGs are not 1611 # generated for formulas are transparent PNGs. Transparent PNGs are not
1511 # supported properly for IE 6.0, but are supported on all modern browsers. 1612 # supported properly for IE 6.0, but are supported on all modern browsers.
1512 # 1613 #
@@ -1517,8 +1618,14 @@ FORMULA_FONTSIZE = 10 @@ -1517,8 +1618,14 @@ FORMULA_FONTSIZE = 10
1517 1618
1518 FORMULA_TRANSPARENT = YES 1619 FORMULA_TRANSPARENT = YES
1519 1620
  1621 +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
  1622 +# to create new LaTeX commands to be used in formulas as building blocks. See
  1623 +# the section "Including formulas" for details.
  1624 +
  1625 +FORMULA_MACROFILE =
  1626 +
1520 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see 1627 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
1521 -# http://www.mathjax.org) which uses client side Javascript for the rendering 1628 +# https://www.mathjax.org) which uses client side JavaScript for the rendering
1522 # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX 1629 # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
1523 # installed or if you want to formulas look prettier in the HTML output. When 1630 # installed or if you want to formulas look prettier in the HTML output. When
1524 # enabled you may also need to install MathJax separately and configure the path 1631 # enabled you may also need to install MathJax separately and configure the path
@@ -1545,8 +1652,8 @@ MATHJAX_FORMAT = HTML-CSS @@ -1545,8 +1652,8 @@ MATHJAX_FORMAT = HTML-CSS
1545 # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax 1652 # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
1546 # Content Delivery Network so you can quickly see the result without installing 1653 # Content Delivery Network so you can quickly see the result without installing
1547 # MathJax. However, it is strongly recommended to install a local copy of 1654 # MathJax. However, it is strongly recommended to install a local copy of
1548 -# MathJax from http://www.mathjax.org before deployment.  
1549 -# The default value is: http://cdn.mathjax.org/mathjax/latest. 1655 +# MathJax from https://www.mathjax.org before deployment.
  1656 +# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2.
1550 # This tag requires that the tag USE_MATHJAX is set to YES. 1657 # This tag requires that the tag USE_MATHJAX is set to YES.
1551 1658
1552 MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest 1659 MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
@@ -1556,7 +1663,7 @@ MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest @@ -1556,7 +1663,7 @@ MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
1556 # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols 1663 # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
1557 # This tag requires that the tag USE_MATHJAX is set to YES. 1664 # This tag requires that the tag USE_MATHJAX is set to YES.
1558 1665
1559 -MATHJAX_EXTENSIONS = 1666 +MATHJAX_EXTENSIONS =
1560 1667
1561 # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces 1668 # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
1562 # of code that will be used on startup of the MathJax code. See the MathJax site 1669 # of code that will be used on startup of the MathJax code. See the MathJax site
@@ -1564,7 +1671,7 @@ MATHJAX_EXTENSIONS = @@ -1564,7 +1671,7 @@ MATHJAX_EXTENSIONS =
1564 # example see the documentation. 1671 # example see the documentation.
1565 # This tag requires that the tag USE_MATHJAX is set to YES. 1672 # This tag requires that the tag USE_MATHJAX is set to YES.
1566 1673
1567 -MATHJAX_CODEFILE = 1674 +MATHJAX_CODEFILE =
1568 1675
1569 # When the SEARCHENGINE tag is enabled doxygen will generate a search box for 1676 # When the SEARCHENGINE tag is enabled doxygen will generate a search box for
1570 # the HTML output. The underlying search engine uses javascript and DHTML and 1677 # the HTML output. The underlying search engine uses javascript and DHTML and
@@ -1588,7 +1695,7 @@ MATHJAX_CODEFILE = @@ -1588,7 +1695,7 @@ MATHJAX_CODEFILE =
1588 SEARCHENGINE = YES 1695 SEARCHENGINE = YES
1589 1696
1590 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be 1697 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1591 -# implemented using a web server instead of a web client using Javascript. There 1698 +# implemented using a web server instead of a web client using JavaScript. There
1592 # are two flavors of web server based searching depending on the EXTERNAL_SEARCH 1699 # are two flavors of web server based searching depending on the EXTERNAL_SEARCH
1593 # setting. When disabled, doxygen will generate a PHP script for searching and 1700 # setting. When disabled, doxygen will generate a PHP script for searching and
1594 # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing 1701 # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
@@ -1607,7 +1714,7 @@ SERVER_BASED_SEARCH = NO @@ -1607,7 +1714,7 @@ SERVER_BASED_SEARCH = NO
1607 # 1714 #
1608 # Doxygen ships with an example indexer (doxyindexer) and search engine 1715 # Doxygen ships with an example indexer (doxyindexer) and search engine
1609 # (doxysearch.cgi) which are based on the open source search engine library 1716 # (doxysearch.cgi) which are based on the open source search engine library
1610 -# Xapian (see: http://xapian.org/). 1717 +# Xapian (see: https://xapian.org/).
1611 # 1718 #
1612 # See the section "External Indexing and Searching" for details. 1719 # See the section "External Indexing and Searching" for details.
1613 # The default value is: NO. 1720 # The default value is: NO.
@@ -1620,11 +1727,11 @@ EXTERNAL_SEARCH = NO @@ -1620,11 +1727,11 @@ EXTERNAL_SEARCH = NO
1620 # 1727 #
1621 # Doxygen ships with an example indexer (doxyindexer) and search engine 1728 # Doxygen ships with an example indexer (doxyindexer) and search engine
1622 # (doxysearch.cgi) which are based on the open source search engine library 1729 # (doxysearch.cgi) which are based on the open source search engine library
1623 -# Xapian (see: http://xapian.org/). See the section "External Indexing and 1730 +# Xapian (see: https://xapian.org/). See the section "External Indexing and
1624 # Searching" for details. 1731 # Searching" for details.
1625 # This tag requires that the tag SEARCHENGINE is set to YES. 1732 # This tag requires that the tag SEARCHENGINE is set to YES.
1626 1733
1627 -SEARCHENGINE_URL = 1734 +SEARCHENGINE_URL =
1628 1735
1629 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed 1736 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
1630 # search data is written to a file for indexing by an external tool. With the 1737 # search data is written to a file for indexing by an external tool. With the
@@ -1640,7 +1747,7 @@ SEARCHDATA_FILE = searchdata.xml @@ -1640,7 +1747,7 @@ SEARCHDATA_FILE = searchdata.xml
1640 # projects and redirect the results back to the right project. 1747 # projects and redirect the results back to the right project.
1641 # This tag requires that the tag SEARCHENGINE is set to YES. 1748 # This tag requires that the tag SEARCHENGINE is set to YES.
1642 1749
1643 -EXTERNAL_SEARCH_ID = 1750 +EXTERNAL_SEARCH_ID =
1644 1751
1645 # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen 1752 # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
1646 # projects other than the one defined by this configuration file, but that are 1753 # projects other than the one defined by this configuration file, but that are
@@ -1650,7 +1757,7 @@ EXTERNAL_SEARCH_ID = @@ -1650,7 +1757,7 @@ EXTERNAL_SEARCH_ID =
1650 # EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... 1757 # EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
1651 # This tag requires that the tag SEARCHENGINE is set to YES. 1758 # This tag requires that the tag SEARCHENGINE is set to YES.
1652 1759
1653 -EXTRA_SEARCH_MAPPINGS = 1760 +EXTRA_SEARCH_MAPPINGS =
1654 1761
1655 #--------------------------------------------------------------------------- 1762 #---------------------------------------------------------------------------
1656 # Configuration options related to the LaTeX output 1763 # Configuration options related to the LaTeX output
@@ -1672,21 +1779,35 @@ LATEX_OUTPUT = latex @@ -1672,21 +1779,35 @@ LATEX_OUTPUT = latex
1672 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 1779 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1673 # invoked. 1780 # invoked.
1674 # 1781 #
1675 -# Note that when enabling USE_PDFLATEX this option is only used for generating  
1676 -# bitmaps for formulas in the HTML output, but not in the Makefile that is  
1677 -# written to the output directory.  
1678 -# The default file is: latex. 1782 +# Note that when not enabling USE_PDFLATEX the default is latex when enabling
  1783 +# USE_PDFLATEX the default is pdflatex and when in the later case latex is
  1784 +# chosen this is overwritten by pdflatex. For specific output languages the
  1785 +# default can have been set differently, this depends on the implementation of
  1786 +# the output language.
1679 # This tag requires that the tag GENERATE_LATEX is set to YES. 1787 # This tag requires that the tag GENERATE_LATEX is set to YES.
1680 1788
1681 LATEX_CMD_NAME = latex 1789 LATEX_CMD_NAME = latex
1682 1790
1683 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate 1791 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
1684 # index for LaTeX. 1792 # index for LaTeX.
  1793 +# Note: This tag is used in the Makefile / make.bat.
  1794 +# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
  1795 +# (.tex).
1685 # The default file is: makeindex. 1796 # The default file is: makeindex.
1686 # This tag requires that the tag GENERATE_LATEX is set to YES. 1797 # This tag requires that the tag GENERATE_LATEX is set to YES.
1687 1798
1688 MAKEINDEX_CMD_NAME = makeindex 1799 MAKEINDEX_CMD_NAME = makeindex
1689 1800
  1801 +# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
  1802 +# generate index for LaTeX. In case there is no backslash (\) as first character
  1803 +# it will be automatically added in the LaTeX code.
  1804 +# Note: This tag is used in the generated output file (.tex).
  1805 +# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
  1806 +# The default value is: makeindex.
  1807 +# This tag requires that the tag GENERATE_LATEX is set to YES.
  1808 +
  1809 +LATEX_MAKEINDEX_CMD = makeindex
  1810 +
1690 # If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX 1811 # If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
1691 # documents. This may be useful for small projects and may help to save some 1812 # documents. This may be useful for small projects and may help to save some
1692 # trees in general. 1813 # trees in general.
@@ -1714,7 +1835,7 @@ PAPER_TYPE = a4 @@ -1714,7 +1835,7 @@ PAPER_TYPE = a4
1714 # If left blank no extra packages will be included. 1835 # If left blank no extra packages will be included.
1715 # This tag requires that the tag GENERATE_LATEX is set to YES. 1836 # This tag requires that the tag GENERATE_LATEX is set to YES.
1716 1837
1717 -EXTRA_PACKAGES = 1838 +EXTRA_PACKAGES =
1718 1839
1719 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for the 1840 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
1720 # generated LaTeX document. The header should contain everything until the first 1841 # generated LaTeX document. The header should contain everything until the first
@@ -1730,7 +1851,7 @@ EXTRA_PACKAGES = @@ -1730,7 +1851,7 @@ EXTRA_PACKAGES =
1730 # to HTML_HEADER. 1851 # to HTML_HEADER.
1731 # This tag requires that the tag GENERATE_LATEX is set to YES. 1852 # This tag requires that the tag GENERATE_LATEX is set to YES.
1732 1853
1733 -LATEX_HEADER = 1854 +LATEX_HEADER =
1734 1855
1735 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the 1856 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
1736 # generated LaTeX document. The footer should contain everything after the last 1857 # generated LaTeX document. The footer should contain everything after the last
@@ -1741,7 +1862,7 @@ LATEX_HEADER = @@ -1741,7 +1862,7 @@ LATEX_HEADER =
1741 # Note: Only use a user-defined footer if you know what you are doing! 1862 # Note: Only use a user-defined footer if you know what you are doing!
1742 # This tag requires that the tag GENERATE_LATEX is set to YES. 1863 # This tag requires that the tag GENERATE_LATEX is set to YES.
1743 1864
1744 -LATEX_FOOTER = 1865 +LATEX_FOOTER =
1745 1866
1746 # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined 1867 # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
1747 # LaTeX style sheets that are included after the standard style sheets created 1868 # LaTeX style sheets that are included after the standard style sheets created
@@ -1752,7 +1873,7 @@ LATEX_FOOTER = @@ -1752,7 +1873,7 @@ LATEX_FOOTER =
1752 # list). 1873 # list).
1753 # This tag requires that the tag GENERATE_LATEX is set to YES. 1874 # This tag requires that the tag GENERATE_LATEX is set to YES.
1754 1875
1755 -LATEX_EXTRA_STYLESHEET = 1876 +LATEX_EXTRA_STYLESHEET =
1756 1877
1757 # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or 1878 # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
1758 # other source files which should be copied to the LATEX_OUTPUT output 1879 # other source files which should be copied to the LATEX_OUTPUT output
@@ -1760,7 +1881,7 @@ LATEX_EXTRA_STYLESHEET = @@ -1760,7 +1881,7 @@ LATEX_EXTRA_STYLESHEET =
1760 # markers available. 1881 # markers available.
1761 # This tag requires that the tag GENERATE_LATEX is set to YES. 1882 # This tag requires that the tag GENERATE_LATEX is set to YES.
1762 1883
1763 -LATEX_EXTRA_FILES = 1884 +LATEX_EXTRA_FILES =
1764 1885
1765 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is 1886 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
1766 # prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will 1887 # prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
@@ -1771,9 +1892,11 @@ LATEX_EXTRA_FILES = @@ -1771,9 +1892,11 @@ LATEX_EXTRA_FILES =
1771 1892
1772 PDF_HYPERLINKS = YES 1893 PDF_HYPERLINKS = YES
1773 1894
1774 -# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate  
1775 -# the PDF file directly from the LaTeX files. Set this option to YES, to get a  
1776 -# higher quality PDF documentation. 1895 +# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as
  1896 +# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX
  1897 +# files. Set this option to YES, to get a higher quality PDF documentation.
  1898 +#
  1899 +# See also section LATEX_CMD_NAME for selecting the engine.
1777 # The default value is: YES. 1900 # The default value is: YES.
1778 # This tag requires that the tag GENERATE_LATEX is set to YES. 1901 # This tag requires that the tag GENERATE_LATEX is set to YES.
1779 1902
@@ -1807,7 +1930,7 @@ LATEX_SOURCE_CODE = NO @@ -1807,7 +1930,7 @@ LATEX_SOURCE_CODE = NO
1807 1930
1808 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the 1931 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1809 # bibliography, e.g. plainnat, or ieeetr. See 1932 # bibliography, e.g. plainnat, or ieeetr. See
1810 -# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. 1933 +# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
1811 # The default value is: plain. 1934 # The default value is: plain.
1812 # This tag requires that the tag GENERATE_LATEX is set to YES. 1935 # This tag requires that the tag GENERATE_LATEX is set to YES.
1813 1936
@@ -1821,6 +1944,14 @@ LATEX_BIB_STYLE = plain @@ -1821,6 +1944,14 @@ LATEX_BIB_STYLE = plain
1821 1944
1822 LATEX_TIMESTAMP = NO 1945 LATEX_TIMESTAMP = NO
1823 1946
  1947 +# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
  1948 +# path from which the emoji images will be read. If a relative path is entered,
  1949 +# it will be relative to the LATEX_OUTPUT directory. If left blank the
  1950 +# LATEX_OUTPUT directory will be used.
  1951 +# This tag requires that the tag GENERATE_LATEX is set to YES.
  1952 +
  1953 +LATEX_EMOJI_DIRECTORY =
  1954 +
1824 #--------------------------------------------------------------------------- 1955 #---------------------------------------------------------------------------
1825 # Configuration options related to the RTF output 1956 # Configuration options related to the RTF output
1826 #--------------------------------------------------------------------------- 1957 #---------------------------------------------------------------------------
@@ -1860,22 +1991,22 @@ COMPACT_RTF = NO @@ -1860,22 +1991,22 @@ COMPACT_RTF = NO
1860 1991
1861 RTF_HYPERLINKS = NO 1992 RTF_HYPERLINKS = NO
1862 1993
1863 -# Load stylesheet definitions from file. Syntax is similar to doxygen's config  
1864 -# file, i.e. a series of assignments. You only have to provide replacements,  
1865 -# missing definitions are set to their default value. 1994 +# Load stylesheet definitions from file. Syntax is similar to doxygen's
  1995 +# configuration file, i.e. a series of assignments. You only have to provide
  1996 +# replacements, missing definitions are set to their default value.
1866 # 1997 #
1867 # See also section "Doxygen usage" for information on how to generate the 1998 # See also section "Doxygen usage" for information on how to generate the
1868 # default style sheet that doxygen normally uses. 1999 # default style sheet that doxygen normally uses.
1869 # This tag requires that the tag GENERATE_RTF is set to YES. 2000 # This tag requires that the tag GENERATE_RTF is set to YES.
1870 2001
1871 -RTF_STYLESHEET_FILE = 2002 +RTF_STYLESHEET_FILE =
1872 2003
1873 # Set optional variables used in the generation of an RTF document. Syntax is 2004 # Set optional variables used in the generation of an RTF document. Syntax is
1874 -# similar to doxygen's config file. A template extensions file can be generated  
1875 -# using doxygen -e rtf extensionFile. 2005 +# similar to doxygen's configuration file. A template extensions file can be
  2006 +# generated using doxygen -e rtf extensionFile.
1876 # This tag requires that the tag GENERATE_RTF is set to YES. 2007 # This tag requires that the tag GENERATE_RTF is set to YES.
1877 2008
1878 -RTF_EXTENSIONS_FILE = 2009 +RTF_EXTENSIONS_FILE =
1879 2010
1880 # If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code 2011 # If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
1881 # with syntax highlighting in the RTF output. 2012 # with syntax highlighting in the RTF output.
@@ -1920,7 +2051,7 @@ MAN_EXTENSION = .3 @@ -1920,7 +2051,7 @@ MAN_EXTENSION = .3
1920 # MAN_EXTENSION with the initial . removed. 2051 # MAN_EXTENSION with the initial . removed.
1921 # This tag requires that the tag GENERATE_MAN is set to YES. 2052 # This tag requires that the tag GENERATE_MAN is set to YES.
1922 2053
1923 -MAN_SUBDIR = 2054 +MAN_SUBDIR =
1924 2055
1925 # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it 2056 # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
1926 # will generate one additional man file for each entity documented in the real 2057 # will generate one additional man file for each entity documented in the real
@@ -1958,6 +2089,13 @@ XML_OUTPUT = xml @@ -1958,6 +2089,13 @@ XML_OUTPUT = xml
1958 2089
1959 XML_PROGRAMLISTING = YES 2090 XML_PROGRAMLISTING = YES
1960 2091
  2092 +# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
  2093 +# namespace members in file scope as well, matching the HTML output.
  2094 +# The default value is: NO.
  2095 +# This tag requires that the tag GENERATE_XML is set to YES.
  2096 +
  2097 +XML_NS_MEMB_FILE_SCOPE = NO
  2098 +
1961 #--------------------------------------------------------------------------- 2099 #---------------------------------------------------------------------------
1962 # Configuration options related to the DOCBOOK output 2100 # Configuration options related to the DOCBOOK output
1963 #--------------------------------------------------------------------------- 2101 #---------------------------------------------------------------------------
@@ -1990,14 +2128,18 @@ DOCBOOK_PROGRAMLISTING = NO @@ -1990,14 +2128,18 @@ DOCBOOK_PROGRAMLISTING = NO
1990 #--------------------------------------------------------------------------- 2128 #---------------------------------------------------------------------------
1991 2129
1992 # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an 2130 # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
1993 -# AutoGen Definitions (see http://autogen.sf.net) file that captures the  
1994 -# structure of the code including all documentation. Note that this feature is  
1995 -# still experimental and incomplete at the moment. 2131 +# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
  2132 +# the structure of the code including all documentation. Note that this feature
  2133 +# is still experimental and incomplete at the moment.
1996 # The default value is: NO. 2134 # The default value is: NO.
1997 2135
1998 GENERATE_AUTOGEN_DEF = NO 2136 GENERATE_AUTOGEN_DEF = NO
1999 2137
2000 #--------------------------------------------------------------------------- 2138 #---------------------------------------------------------------------------
  2139 +# Configuration options related to Sqlite3 output
  2140 +#---------------------------------------------------------------------------
  2141 +
  2142 +#---------------------------------------------------------------------------
2001 # Configuration options related to the Perl module output 2143 # Configuration options related to the Perl module output
2002 #--------------------------------------------------------------------------- 2144 #---------------------------------------------------------------------------
2003 2145
@@ -2033,7 +2175,7 @@ PERLMOD_PRETTY = YES @@ -2033,7 +2175,7 @@ PERLMOD_PRETTY = YES
2033 # overwrite each other's variables. 2175 # overwrite each other's variables.
2034 # This tag requires that the tag GENERATE_PERLMOD is set to YES. 2176 # This tag requires that the tag GENERATE_PERLMOD is set to YES.
2035 2177
2036 -PERLMOD_MAKEVAR_PREFIX = 2178 +PERLMOD_MAKEVAR_PREFIX =
2037 2179
2038 #--------------------------------------------------------------------------- 2180 #---------------------------------------------------------------------------
2039 # Configuration options related to the preprocessor 2181 # Configuration options related to the preprocessor
@@ -2074,7 +2216,7 @@ SEARCH_INCLUDES = YES @@ -2074,7 +2216,7 @@ SEARCH_INCLUDES = YES
2074 # preprocessor. 2216 # preprocessor.
2075 # This tag requires that the tag SEARCH_INCLUDES is set to YES. 2217 # This tag requires that the tag SEARCH_INCLUDES is set to YES.
2076 2218
2077 -INCLUDE_PATH = 2219 +INCLUDE_PATH =
2078 2220
2079 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 2221 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
2080 # patterns (like *.h and *.hpp) to filter out the header-files in the 2222 # patterns (like *.h and *.hpp) to filter out the header-files in the
@@ -2082,7 +2224,7 @@ INCLUDE_PATH = @@ -2082,7 +2224,7 @@ INCLUDE_PATH =
2082 # used. 2224 # used.
2083 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 2225 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
2084 2226
2085 -INCLUDE_FILE_PATTERNS = 2227 +INCLUDE_FILE_PATTERNS =
2086 2228
2087 # The PREDEFINED tag can be used to specify one or more macro names that are 2229 # The PREDEFINED tag can be used to specify one or more macro names that are
2088 # defined before the preprocessor is started (similar to the -D option of e.g. 2230 # defined before the preprocessor is started (similar to the -D option of e.g.
@@ -2092,7 +2234,7 @@ INCLUDE_FILE_PATTERNS = @@ -2092,7 +2234,7 @@ INCLUDE_FILE_PATTERNS =
2092 # recursively expanded use the := operator instead of the = operator. 2234 # recursively expanded use the := operator instead of the = operator.
2093 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 2235 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
2094 2236
2095 -PREDEFINED = 2237 +PREDEFINED =
2096 2238
2097 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this 2239 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
2098 # tag can be used to specify a list of macro names that should be expanded. The 2240 # tag can be used to specify a list of macro names that should be expanded. The
@@ -2101,7 +2243,7 @@ PREDEFINED = @@ -2101,7 +2243,7 @@ PREDEFINED =
2101 # definition found in the source code. 2243 # definition found in the source code.
2102 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. 2244 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
2103 2245
2104 -EXPAND_AS_DEFINED = 2246 +EXPAND_AS_DEFINED =
2105 2247
2106 # If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will 2248 # If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
2107 # remove all references to function-like macros that are alone on a line, have 2249 # remove all references to function-like macros that are alone on a line, have
@@ -2130,13 +2272,13 @@ SKIP_FUNCTION_MACROS = YES @@ -2130,13 +2272,13 @@ SKIP_FUNCTION_MACROS = YES
2130 # the path). If a tag file is not located in the directory in which doxygen is 2272 # the path). If a tag file is not located in the directory in which doxygen is
2131 # run, you must also specify the path to the tagfile here. 2273 # run, you must also specify the path to the tagfile here.
2132 2274
2133 -TAGFILES = 2275 +TAGFILES =
2134 2276
2135 # When a file name is specified after GENERATE_TAGFILE, doxygen will create a 2277 # When a file name is specified after GENERATE_TAGFILE, doxygen will create a
2136 # tag file that is based on the input files it reads. See section "Linking to 2278 # tag file that is based on the input files it reads. See section "Linking to
2137 # external documentation" for more information about the usage of tag files. 2279 # external documentation" for more information about the usage of tag files.
2138 2280
2139 -GENERATE_TAGFILE = 2281 +GENERATE_TAGFILE =
2140 2282
2141 # If the ALLEXTERNALS tag is set to YES, all external class will be listed in 2283 # If the ALLEXTERNALS tag is set to YES, all external class will be listed in
2142 # the class index. If set to NO, only the inherited external classes will be 2284 # the class index. If set to NO, only the inherited external classes will be
@@ -2159,12 +2301,6 @@ EXTERNAL_GROUPS = YES @@ -2159,12 +2301,6 @@ EXTERNAL_GROUPS = YES
2159 2301
2160 EXTERNAL_PAGES = YES 2302 EXTERNAL_PAGES = YES
2161 2303
2162 -# The PERL_PATH should be the absolute path and name of the perl script  
2163 -# interpreter (i.e. the result of 'which perl').  
2164 -# The default file (with absolute path) is: /usr/bin/perl.  
2165 -  
2166 -PERL_PATH = /usr/bin/perl  
2167 -  
2168 #--------------------------------------------------------------------------- 2304 #---------------------------------------------------------------------------
2169 # Configuration options related to the dot tool 2305 # Configuration options related to the dot tool
2170 #--------------------------------------------------------------------------- 2306 #---------------------------------------------------------------------------
@@ -2178,21 +2314,12 @@ PERL_PATH = /usr/bin/perl @@ -2178,21 +2314,12 @@ PERL_PATH = /usr/bin/perl
2178 2314
2179 CLASS_DIAGRAMS = NO 2315 CLASS_DIAGRAMS = NO
2180 2316
2181 -# You can define message sequence charts within doxygen comments using the \msc  
2182 -# command. Doxygen will then run the mscgen tool (see:  
2183 -# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the  
2184 -# documentation. The MSCGEN_PATH tag allows you to specify the directory where  
2185 -# the mscgen tool resides. If left empty the tool is assumed to be found in the  
2186 -# default search path.  
2187 -  
2188 -MSCGEN_PATH =  
2189 -  
2190 # You can include diagrams made with dia in doxygen documentation. Doxygen will 2317 # You can include diagrams made with dia in doxygen documentation. Doxygen will
2191 # then run dia to produce the diagram and insert it in the documentation. The 2318 # then run dia to produce the diagram and insert it in the documentation. The
2192 # DIA_PATH tag allows you to specify the directory where the dia binary resides. 2319 # DIA_PATH tag allows you to specify the directory where the dia binary resides.
2193 # If left empty dia is assumed to be found in the default search path. 2320 # If left empty dia is assumed to be found in the default search path.
2194 2321
2195 -DIA_PATH = 2322 +DIA_PATH =
2196 2323
2197 # If set to YES the inheritance and collaboration graphs will hide inheritance 2324 # If set to YES the inheritance and collaboration graphs will hide inheritance
2198 # and usage relations if the target is undocumented or is not a class. 2325 # and usage relations if the target is undocumented or is not a class.
@@ -2241,7 +2368,7 @@ DOT_FONTSIZE = 10 @@ -2241,7 +2368,7 @@ DOT_FONTSIZE = 10
2241 # the path where dot can find it using this tag. 2368 # the path where dot can find it using this tag.
2242 # This tag requires that the tag HAVE_DOT is set to YES. 2369 # This tag requires that the tag HAVE_DOT is set to YES.
2243 2370
2244 -DOT_FONTPATH = 2371 +DOT_FONTPATH =
2245 2372
2246 # If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for 2373 # If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
2247 # each documented class showing the direct and indirect inheritance relations. 2374 # each documented class showing the direct and indirect inheritance relations.
@@ -2392,19 +2519,19 @@ DOT_PATH = /usr/local/bin @@ -2392,19 +2519,19 @@ DOT_PATH = /usr/local/bin
2392 # command). 2519 # command).
2393 # This tag requires that the tag HAVE_DOT is set to YES. 2520 # This tag requires that the tag HAVE_DOT is set to YES.
2394 2521
2395 -DOTFILE_DIRS = 2522 +DOTFILE_DIRS =
2396 2523
2397 # The MSCFILE_DIRS tag can be used to specify one or more directories that 2524 # The MSCFILE_DIRS tag can be used to specify one or more directories that
2398 # contain msc files that are included in the documentation (see the \mscfile 2525 # contain msc files that are included in the documentation (see the \mscfile
2399 # command). 2526 # command).
2400 2527
2401 -MSCFILE_DIRS = 2528 +MSCFILE_DIRS =
2402 2529
2403 # The DIAFILE_DIRS tag can be used to specify one or more directories that 2530 # The DIAFILE_DIRS tag can be used to specify one or more directories that
2404 # contain dia files that are included in the documentation (see the \diafile 2531 # contain dia files that are included in the documentation (see the \diafile
2405 # command). 2532 # command).
2406 2533
2407 -DIAFILE_DIRS = 2534 +DIAFILE_DIRS =
2408 2535
2409 # When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the 2536 # When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
2410 # path where java can find the plantuml.jar file. If left blank, it is assumed 2537 # path where java can find the plantuml.jar file. If left blank, it is assumed
@@ -2412,12 +2539,17 @@ DIAFILE_DIRS = @@ -2412,12 +2539,17 @@ DIAFILE_DIRS =
2412 # generate a warning when it encounters a \startuml command in this case and 2539 # generate a warning when it encounters a \startuml command in this case and
2413 # will not generate output for the diagram. 2540 # will not generate output for the diagram.
2414 2541
2415 -PLANTUML_JAR_PATH = 2542 +PLANTUML_JAR_PATH =
  2543 +
  2544 +# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
  2545 +# configuration file for plantuml.
  2546 +
  2547 +PLANTUML_CFG_FILE =
2416 2548
2417 # When using plantuml, the specified paths are searched for files specified by 2549 # When using plantuml, the specified paths are searched for files specified by
2418 # the !include statement in a plantuml block. 2550 # the !include statement in a plantuml block.
2419 2551
2420 -PLANTUML_INCLUDE_PATH = 2552 +PLANTUML_INCLUDE_PATH =
2421 2553
2422 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes 2554 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
2423 # that will be shown in the graph. If the number of nodes in a graph becomes 2555 # that will be shown in the graph. If the number of nodes in a graph becomes
doc/markdown/Build.md
1 # Build and install {#build} 1 # Build and install {#build}
2 2
  3 +[TOC]
  4 +
3 # Basic installation {#basic-install} 5 # Basic installation {#basic-install}
4 6
5 ## Clone from github {#clone} 7 ## Clone from github {#clone}
@@ -74,11 +76,11 @@ make coveragetest @@ -74,11 +76,11 @@ make coveragetest
74 ``` 76 ```
75 77
76 ## Building examples {#build-examples} 78 ## Building examples {#build-examples}
77 -There are some small example programs using this library in the examples folder. To build them,  
78 -set `hueplusplus_SAMPLES=ON`. The target `hueplusplus_examples` builds all examples into build/examples. 79 +There are some small [example programs](@ref examples) using this library in the examples folder. To build them,
  80 +set `hueplusplus_EXAMPLES=ON`. The target `hueplusplus_examples` builds all examples into build/examples.
79 ```{.sh} 81 ```{.sh}
80 mkdir build 82 mkdir build
81 cd build 83 cd build
82 -cmake .. -Dhueplusplus_SAMPLES=ON 84 +cmake .. -Dhueplusplus_EXAMPLES=ON
83 make hueplusplus_examples 85 make hueplusplus_examples
84 ``` 86 ```
doc/markdown/Getting_Started.md
@@ -6,54 +6,34 @@ The options are a [WinHttpHandler](@ref hueplusplus::WinHttpHandler) (for window @@ -6,54 +6,34 @@ The options are a [WinHttpHandler](@ref hueplusplus::WinHttpHandler) (for window
6 6
7 Then create a [BridgeFinder](@ref hueplusplus::BridgeFinder) object with the handler. 7 Then create a [BridgeFinder](@ref hueplusplus::BridgeFinder) object with the handler.
8 The handler is needed, because it tells the finder which functions to use to communicate with a bridge or your local network. 8 The handler is needed, because it tells the finder which functions to use to communicate with a bridge or your local network.
9 -After that you can call [findBridges()](@ref hueplusplus::HueFinder::findBridges), which will return a vector containing the ip and mac address of all found Bridges.  
10 -```{.cpp}  
11 -// For windows use std::make_shared<hueplusplus::WinHttpHandler>();  
12 -auto handler = std::make_shared<hueplusplus::LinHttpHandler>();  
13 -hueplusplus::BridgeFinder finder(handler);  
14 -std::vector<hueplusplus::BridgeFinder::BridgeIdentification> bridges = finder.findBridges();  
15 -if (bridges.empty())  
16 -{  
17 - std::cerr << "No bridges found\n";  
18 - return;  
19 -}  
20 -``` 9 +After that you can call [findBridges()](@ref hueplusplus::BridgeFinder::findBridges), which will return a vector containing the ip and mac address of all found Bridges.
  10 +\snippet Snippets.cpp search-bridge
21 11
22 ## Authenticate Bridges 12 ## Authenticate Bridges
23 If you have found the Bridge you were looking for, you can then move on with the authentication process. 13 If you have found the Bridge you were looking for, you can then move on with the authentication process.
24 To get a new username from the Bridge (for now) you simply call [getBridge(bridges[\<index\>])](@ref hueplusplus::BridgeFinder::getBridge), 14 To get a new username from the Bridge (for now) you simply call [getBridge(bridges[\<index\>])](@ref hueplusplus::BridgeFinder::getBridge),
25 where index is your preferred Bridge from the part [Searching for Bridges](#searchingBridges). This requires the user to press the link button. 15 where index is your preferred Bridge from the part [Searching for Bridges](#searchingBridges). This requires the user to press the link button.
26 -```{.cpp}  
27 -hueplusplus::Bridge bridge = finder.getBridge(bridges[0]);  
28 -``` 16 +\snippet Snippets.cpp get-bridge-1
  17 +
29 If you on the other hand already have a username you can add your bridge like so 18 If you on the other hand already have a username you can add your bridge like so
30 -```{.cpp}  
31 -finder.addUsername(bridges[0].mac, "<username>");  
32 -hueplusplus::Bridge bridge = finder.getBridge(bridges[0]);  
33 -```  
34 -If you do not want to use the HueFinder or you already know the ip and username of your bridge you have the option to create your own Hue object. 19 +\snippet Snippets.cpp get-bridge-2
  20 +
  21 +If you do not want to use the BridgeFinder or you already know the ip and username of your bridge you have the option to create your own Hue object.
35 Here you will need to provide the ip address, the port number, a username and an HttpHandler 22 Here you will need to provide the ip address, the port number, a username and an HttpHandler
36 -```{.cpp}  
37 -// For windows use std::make_shared<hueplusplus::WinHttpHandler>();  
38 -auto handler = std::make_shared<hueplusplus::LinHttpHandler>();  
39 -hueplusplus::Bridge bridge("192.168.2.102", 80, "<username>", handler);  
40 -``` 23 +\snippet Snippets.cpp get-bridge-3
  24 +
41 At this point you may want to decide whether to use a [shared state](@ref shared-state) cache model or keep the default settings. 25 At this point you may want to decide whether to use a [shared state](@ref shared-state) cache model or keep the default settings.
42 26
43 ### Controlling lights 27 ### Controlling lights
44 28
45 -```{.cpp}  
46 -hueplusplus::Light light = bridge.getLight(1);  
47 -light1.On();  
48 -light1.Off();  
49 -``` 29 +\snippet Snippets.cpp control-lights
  30 +
  31 +Use [transactions](@ref transactions) to change multiple properties at once.
50 32
51 ### Controlling groups 33 ### Controlling groups
52 34
53 -```{.cpp}  
54 -hueplusplus::Group group = bridge.getGroup(1);  
55 -group.setOn(true);  
56 -``` 35 +\snippet Snippets.cpp control-groups
57 36
58 ## More information 37 ## More information
59 -- [Transactions](@ref transactions)  
60 \ No newline at end of file 38 \ No newline at end of file
  39 +- [Transactions](@ref transactions)
  40 +- [Shared state cache](@ref shared-state)
doc/markdown/Mainpage.md
1 # Documentation for the hueplusplus library 1 # Documentation for the hueplusplus library
2 A simple and easy to use library for Philips Hue Lights. 2 A simple and easy to use library for Philips Hue Lights.
3 3
  4 +[TOC]
  5 +
4 ## Features 6 ## Features
5 * find bridges with SSDP or set an ip manually 7 * find bridges with SSDP or set an ip manually
6 * all common light functions (brightness, color, temperature) 8 * all common light functions (brightness, color, temperature)
@@ -17,85 +19,57 @@ A simple and easy to use library for Philips Hue Lights. @@ -17,85 +19,57 @@ A simple and easy to use library for Philips Hue Lights.
17 * Espressif ESP32 SDK & Arduino 19 * Espressif ESP32 SDK & Arduino
18 20
19 ## How to use 21 ## How to use
20 -- [Getting Started](@ref getting-started) 22 +[Getting started](@ref getting-started)
21 ### Searching for Bridges 23 ### Searching for Bridges
22 To start searching for a Hue Bridge you will need to choose an IHttpHandler and create one. The options are a [WinHttpHandler](@ref hueplusplus::WinHttpHandler) (for windows) or a [LinHttpHandler](@ref hueplusplus::LinHttpHandler) (for linux or linux-like). 24 To start searching for a Hue Bridge you will need to choose an IHttpHandler and create one. The options are a [WinHttpHandler](@ref hueplusplus::WinHttpHandler) (for windows) or a [LinHttpHandler](@ref hueplusplus::LinHttpHandler) (for linux or linux-like).
23 25
24 Then create a [BridgeFinder](@ref hueplusplus::BridgeFinder) object with the handler. 26 Then create a [BridgeFinder](@ref hueplusplus::BridgeFinder) object with the handler.
25 The handler is needed, because it tells the finder which functions to use to communicate with a bridge or your local network. 27 The handler is needed, because it tells the finder which functions to use to communicate with a bridge or your local network.
26 After that you can call [findBridges()](@ref hueplusplus::BridgeFinder::findBridges), which will return a vector containing the ip and mac address of all found Bridges. 28 After that you can call [findBridges()](@ref hueplusplus::BridgeFinder::findBridges), which will return a vector containing the ip and mac address of all found Bridges.
27 -```{.cpp}  
28 -// For windows use std::make_shared<hueplusplus::WinHttpHandler>();  
29 -handler = std::make_shared<hueplusplus::LinHttpHandler>();  
30 -hueplusplus::BridgeFinder finder(handler);  
31 -std::vector<hueplusplus::BridgeFinder::BridgeIdentification> bridges = finder.findBridges();  
32 -if (bridges.empty())  
33 -{  
34 - std::cerr << "No bridges found\n";  
35 - return;  
36 -} 29 +\snippet Snippets.cpp search-bridge
37 30
38 -``` 31 +At this point you may want to decide whether to use a [shared state](@ref shared-state) cache model or keep the default settings.
39 32
40 ### Authenticate Bridges 33 ### Authenticate Bridges
41 If you have found the Bridge you were looking for, you can then move on with the authentication process. 34 If you have found the Bridge you were looking for, you can then move on with the authentication process.
42 To get a new username from the Bridge (for now) you simply call [getBridge(bridges[\<index\>])](@ref hueplusplus::BridgeFinder::getBridge), 35 To get a new username from the Bridge (for now) you simply call [getBridge(bridges[\<index\>])](@ref hueplusplus::BridgeFinder::getBridge),
43 where index is your preferred Bridge from the part [Searching for Bridges](#searchingBridges). This requires the user to press the link button. 36 where index is your preferred Bridge from the part [Searching for Bridges](#searchingBridges). This requires the user to press the link button.
44 -```{.cpp}  
45 -hueplusplus::Bridge bridge = finder.getBridge(bridges[0]);  
46 -``` 37 +\snippet Snippets.cpp get-bridge-1
  38 +
47 If you on the other hand already have a username you can add your bridge like so 39 If you on the other hand already have a username you can add your bridge like so
48 -```{.cpp}  
49 -finder.addUsername(bridges[0].mac, "<username>");  
50 -hueplusplus::Bridge bridge = finder.getBridge(bridges[0]);  
51 -``` 40 +\snippet Snippets.cpp get-bridge-2
  41 +
52 If you do not want to use the BridgeFinder or you already know the ip and username of your bridge you have the option to create your own Bridge object. 42 If you do not want to use the BridgeFinder or you already know the ip and username of your bridge you have the option to create your own Bridge object.
53 Here you will need to provide the ip address, the port number, a username and an HttpHandler 43 Here you will need to provide the ip address, the port number, a username and an HttpHandler
54 -```{.cpp}  
55 -// For windows use std::make_shared<hueplusplus::WinHttpHandler>();  
56 -handler = std::make_shared<hueplusplus::LinHttpHandler>();  
57 -hueplusplus::Bridge bridge("192.168.2.102", 80, "<username>", handler);  
58 -``` 44 +\snippet Snippets.cpp get-bridge-3
  45 +
59 46
60 ### Controlling lights 47 ### Controlling lights
61 If you have your Bridge all set up, you can now control its lights. 48 If you have your Bridge all set up, you can now control its lights.
62 For that create a new Light object and call [lights().get(\<id\>)](@ref hueplusplus::ResourceList::get) on your bridge object to get a reference to a specific light, where id 49 For that create a new Light object and call [lights().get(\<id\>)](@ref hueplusplus::ResourceList::get) on your bridge object to get a reference to a specific light, where id
63 is the id of the light set internally by the Hue Bridge. 50 is the id of the light set internally by the Hue Bridge.
64 -```{.cpp}  
65 -hueplusplus::Light light1 = bridge.lights().get(1);  
66 -``` 51 +\snippet Snippets.cpp light-1
  52 +
67 If you don't know the id of a specific light or want to get an overview over all lights that are controlled by your bridge, 53 If you don't know the id of a specific light or want to get an overview over all lights that are controlled by your bridge,
68 you can get a vector containing them by calling [getAll()](@ref hueplusplus::ResourceList::getAll) on your bridge object. If no lights are found the vector will be empty. 54 you can get a vector containing them by calling [getAll()](@ref hueplusplus::ResourceList::getAll) on your bridge object. If no lights are found the vector will be empty.
69 -```{.cpp}  
70 -std::vector<hueplusplus::Light> lights = bridge.lights().getAll();  
71 -``` 55 +\snippet Snippets.cpp light-2
  56 +
72 If you now want to control a light, call a specific function of it. 57 If you now want to control a light, call a specific function of it.
73 -```{.cpp}  
74 -light1.on();  
75 -light1.setBrightness(120);  
76 -light1.alertHueSaturation(25500, 255);  
77 -light1.setColorLoop(true);  
78 -light1.setColorRGB(255, 128, 0);  
79 -lights[1].off();  
80 -lights.at(1).setColorHue(4562);  
81 -``` 58 +\snippet Snippets.cpp light-3
  59 +
82 But keep in mind that some light types do not have all functions available. So you might call a 60 But keep in mind that some light types do not have all functions available. So you might call a
83 specific function, but nothing will happen. For that you might want to check what type 61 specific function, but nothing will happen. For that you might want to check what type
84 of a light you are controlling. For that you can call the function [getColorType()](@ref hueplusplus::Light::getColorType()), which will return 62 of a light you are controlling. For that you can call the function [getColorType()](@ref hueplusplus::Light::getColorType()), which will return
85 a ColorType. 63 a ColorType.
86 -```{.cpp}  
87 -hueplusplus::ColorType type1 = light1.getColorType();  
88 -``` 64 +\snippet Snippets.cpp light-4
  65 +
89 There's also a new way to check whether specific functions of a light are available: 66 There's also a new way to check whether specific functions of a light are available:
90 -```{.cpp}  
91 -light1.hasBrightnessControl();  
92 -light1.hasTemperatureControl();  
93 -light1.hasColorControl();  
94 -``` 67 +\snippet Snippets.cpp light-5
  68 +
95 These will either return true(light has specified function) or false(light lacks specified function). 69 These will either return true(light has specified function) or false(light lacks specified function).
96 70
97 ## Build and install 71 ## Build and install
98 -- [Build and install guide](@ref build) 72 +[Build and install guide](@ref build)
99 73
100 ### Basic installation 74 ### Basic installation
101 If you want to build the library you can use cmake (at least version 3.8). First create a build folder and then execute cmake. 75 If you want to build the library you can use cmake (at least version 3.8). First create a build folder and then execute cmake.
@@ -155,3 +129,11 @@ If you also want to execute coverage tests you will need to install gcov and lco @@ -155,3 +129,11 @@ If you also want to execute coverage tests you will need to install gcov and lco
155 ```bash 129 ```bash
156 make coveragetest 130 make coveragetest
157 ``` 131 ```
  132 +
  133 +
  134 +## Other pages
  135 +- [Getting started](@ref getting-started)
  136 +- [Build and install](@ref build)
  137 +- [Shared state cache](@ref shared-state)
  138 +- [Transactions](@ref transactions)
  139 +- [Sensors](@ref sensors)
doc/markdown/Sensors.md
1 # Sensors {#sensors} 1 # Sensors {#sensors}
2 2
  3 +[TOC]
  4 +
3 ## Sensor support 5 ## Sensor support
4 The library supports the sensor types listed on the Hue developer documentation. 6 The library supports the sensor types listed on the Hue developer documentation.
  7 +Include `hueplusplus/ZLLSensors.h` for ZigBee sensors and `hueplusplus/CLIPSensors.h` for CLIP sensors.
5 Other sensors can be used with the generic [Sensor](@ref hueplusplus::Sensor) class. 8 Other sensors can be used with the generic [Sensor](@ref hueplusplus::Sensor) class.
6 9
7 ### Working with a known sensor 10 ### Working with a known sensor
@@ -9,41 +12,19 @@ In most cases, the type of the sensors is known in advance, such as a switch. @@ -9,41 +12,19 @@ In most cases, the type of the sensors is known in advance, such as a switch.
9 The classes in the [sensors](@ref hueplusplus::sensors) namespace provide the documented 12 The classes in the [sensors](@ref hueplusplus::sensors) namespace provide the documented
10 functionality. The type can be specified when accessing the sensor. When it does not match, 13 functionality. The type can be specified when accessing the sensor. When it does not match,
11 an exception is thrown. 14 an exception is thrown.
12 -```{.cpp}  
13 -hueplusplus::sensors::ZLLSwitch switchSensor = bridge.sensors().getAsType<hueplusplus::sensors::ZLLSwitch>(2);  
14 -``` 15 +\snippet Snippets.cpp known-sensor-1
15 16
16 You can also get all sensors of a specified type by using [getAllByType<T>()](@ref hueplusplus::SensorList::getAllByType). 17 You can also get all sensors of a specified type by using [getAllByType<T>()](@ref hueplusplus::SensorList::getAllByType).
17 -```{.cpp}  
18 -std::vector<hueplusplus::sensors::ZLLSwitch> allSwitches = bridge.sensors().getAllByType<hueplusplus::sensors::ZLLSwitch>();  
19 -``` 18 +\snippet Snippets.cpp known-sensor-2
20 19
21 ### Working with an unknown sensor 20 ### Working with an unknown sensor
22 When the sensor type is not known, use the generic sensor class. In this case, some attributes might not 21 When the sensor type is not known, use the generic sensor class. In this case, some attributes might not
23 exist, so they have to be checked first. This applies to all attributes that have a `hasXXX` method. 22 exist, so they have to be checked first. This applies to all attributes that have a `hasXXX` method.
24 -  
25 -```{.cpp}  
26 -hueplusplus::Sensor genericSensor = bridge.sensors().get(1);  
27 -if(genericSensor.hasOn())  
28 -{  
29 - // Now can check whether it is on  
30 - if(genericSensor.isOn())  
31 - {  
32 - // ...  
33 - }  
34 -}  
35 -``` 23 +\snippet Snippets.cpp generic-sensor-1
36 24
37 It is easiest to compare the sensor type to the existing ones (`typeStr` on the specific sensor classes) 25 It is easiest to compare the sensor type to the existing ones (`typeStr` on the specific sensor classes)
38 and then convert the sensor to that type. 26 and then convert the sensor to that type.
39 -```{.cpp}  
40 -hueplusplus::Sensor genericSensor = bridge.sensors().get(1);  
41 -if(genericSensor.getType() == hueplusplus::sensors::ZLLSwitch::typeStr)  
42 -{  
43 - hueplusplus::sensors::ZLLSwitch switchSensor = genericSensor.asSensorType<hueplusplus::sensors::ZLLSwitch>();  
44 - // ...  
45 -}  
46 -``` 27 +\snippet Snippets.cpp generic-sensor-2
47 28
48 ## ZLL sensors vs. CLIP sensors 29 ## ZLL sensors vs. CLIP sensors
49 ZLL sensors (defined in `ZLLSensors.h`) are physical device sensors which send their data 30 ZLL sensors (defined in `ZLLSensors.h`) are physical device sensors which send their data
@@ -60,19 +41,7 @@ Conditions can be created from the specific sensor types using `makeCondition()` @@ -60,19 +41,7 @@ Conditions can be created from the specific sensor types using `makeCondition()`
60 These functions return a helper class with methods for the [possible operators](@ref hueplusplus::Condition::Operator) valid for the state. 41 These functions return a helper class with methods for the [possible operators](@ref hueplusplus::Condition::Operator) valid for the state.
61 42
62 For some sensors, which have multiple possible states, there exist multiple variations of makeCondition. 43 For some sensors, which have multiple possible states, there exist multiple variations of makeCondition.
63 -  
64 -```{.cpp}  
65 -hueplusplus::sensors::ZLLSwitch switchSensor = ...;  
66 -// ZLLSwitch conditions operate on `buttonEvent`, use makeConditionLastUpdate()  
67 -// to trigger on the last update time.  
68 -  
69 -// Some examples:  
70 -hueplusplus::Condition upPressed = makeCondition(switchSensor).eq(hueplusplus::sensors::ZLLSwitch::c_UP_INITIAL_PRESS);  
71 -hueplusplus::Condition buttonChanged = makeCondition(switchSensor).dx();  
72 -  
73 -hueplusplus::time::TimeInterval interval(std::chrono::hours(12), std::chrono::hours(13));  
74 -hueplusplus::Condition updatedAtNoon = makeConditionLastUpdate(switchSensor).in(interval);  
75 -``` 44 +\snippet Snippets.cpp sensor-conditions
76 45
77 For generic sensors, the conditions must be created manually using the [Condition](@ref hueplusplus::Condition::Condition) 46 For generic sensors, the conditions must be created manually using the [Condition](@ref hueplusplus::Condition::Condition)
78 -constructor with a proper address to the sensor state.  
79 \ No newline at end of file 47 \ No newline at end of file
  48 +constructor with a proper address to the sensor state.
doc/markdown/Shared_State.md
1 # Shared state cache {#shared-state} 1 # Shared state cache {#shared-state}
2 2
  3 +[TOC]
  4 +
3 ## What shared state means 5 ## What shared state means
4 There are two ways in which the API state (internally JSON) can be handled: 6 There are two ways in which the API state (internally JSON) can be handled:
5 1. Every resource instance holds its own cache of the state (default). 7 1. Every resource instance holds its own cache of the state (default).
6 -2. All instances share the cache for the entire bridge. 8 +2. All instances share the cache of the entire bridge.
7 9
8 ### Advantages of shared state 10 ### Advantages of shared state
9 * Different resources are always consistent on the library level. 11 * Different resources are always consistent on the library level.
@@ -23,12 +25,8 @@ Because of these considerations, shared state is disabled by default. @@ -23,12 +25,8 @@ Because of these considerations, shared state is disabled by default.
23 Shared state can be configured when the bridge is first constructed, either in [getBridge()](@ref hueplusplus::BridgeFinder::getBridge) 25 Shared state can be configured when the bridge is first constructed, either in [getBridge()](@ref hueplusplus::BridgeFinder::getBridge)
24 or in the [constructor](@ref hueplusplus::Bridge::Bridge). Set `sharedState` to `true` to keep all resources 26 or in the [constructor](@ref hueplusplus::Bridge::Bridge). Set `sharedState` to `true` to keep all resources
25 connected to the bridge cache. 27 connected to the bridge cache.
26 -```{.cpp}  
27 -hueplusplus::Bridge bridge = finder.getBridge(bridges[0], true);  
28 -```  
29 -```{.cpp}  
30 -hueplusplus::Bridge bridge("192.168.2.102", 80, "<username>", handler, std::chrono::seconds(10), true);  
31 -``` 28 +\snippet Snippets.cpp shared-bridge-1
  29 +\snippet Snippets.cpp shared-bridge-2
32 30
33 ## Shared state and refreshing 31 ## Shared state and refreshing
34 When shared cache is used, refreshes use a hierarchichal structure to determine how much should be requested from the bridge. 32 When shared cache is used, refreshes use a hierarchichal structure to determine how much should be requested from the bridge.
@@ -38,13 +36,7 @@ Otherwise, only the lowest necessary level is requested from the bridge to be mo @@ -38,13 +36,7 @@ Otherwise, only the lowest necessary level is requested from the bridge to be mo
38 36
39 ### Example: 37 ### Example:
40 38
41 -```{.cpp}  
42 -bridge.setRefreshDuration(std::chrono::minutes(1));  
43 -bridge.lights().setRefreshDuration(std::chrono::seconds(30));  
44 -hueplusplus::Light light = bridge.lights().get(1);  
45 -// ... wait some time  
46 -bool on = light.isOn();  
47 -``` 39 +\snippet Snippets.cpp refresh-example
48 [isOn()](@ref hueplusplus::Light::isOn) is a non-const method (in this case). That means it will refresh the 40 [isOn()](@ref hueplusplus::Light::isOn) is a non-const method (in this case). That means it will refresh the
49 state if it is outdated. The default refresh time is inherited from `bridge.lights()`, so it is 30 seconds. 41 state if it is outdated. The default refresh time is inherited from `bridge.lights()`, so it is 30 seconds.
50 After 30 seconds, the state of `light` *and* `bridge.lights()` is outdated. Therefore, the entire list of lights is 42 After 30 seconds, the state of `light` *and* `bridge.lights()` is outdated. Therefore, the entire list of lights is
doc/markdown/Transactions.md
1 # Transactions {#transactions} 1 # Transactions {#transactions}
2 2
  3 +[TOC]
  4 +
3 ## Using a transaction for lights 5 ## Using a transaction for lights
4 -Often, you want to change more than one variable on a light at the same time, 6 +Often, you want to change more than one property on a light at the same time,
5 for example brightness and color. This is done using transactions ([StateTransaction](@ref hueplusplus::StateTransaction)). 7 for example brightness and color. This is done using transactions ([StateTransaction](@ref hueplusplus::StateTransaction)).
  8 +\snippet Snippets.cpp transaction-lights
6 9
7 -```{.cpp}  
8 -light.transaction().setOn(true).setBrightness(29).setColorHue(3000).setColorSaturation(128).commit();  
9 -```  
10 The request is reduced to only the variables that need to be changed based on the current state. 10 The request is reduced to only the variables that need to be changed based on the current state.
11 For example, if the light is already on, that part of the transaction is ignored. 11 For example, if the light is already on, that part of the transaction is ignored.
12 12
@@ -16,13 +16,7 @@ because that invalidates the reference. @@ -16,13 +16,7 @@ because that invalidates the reference.
16 16
17 ### Advanced usage 17 ### Advanced usage
18 Another way to use the transaction is by storing it and building up the calls separately. 18 Another way to use the transaction is by storing it and building up the calls separately.
19 -  
20 -```{.cpp}  
21 -hueplusplus::StateTransaction t = light.transaction();  
22 -if(shouldTurnOn)  
23 - t.setOn(true);  
24 -t.commit();  
25 -``` 19 +\snippet Snippets.cpp transaction-advanced
26 20
27 In this case, it is especially important that the light and the state of the light __MUST NOT__ invalidate. That means 21 In this case, it is especially important that the light and the state of the light __MUST NOT__ invalidate. That means
28 * the light variable has to live longer than the transaction 22 * the light variable has to live longer than the transaction
@@ -34,17 +28,11 @@ In general, this method is easier to screw up and should only be used when reall @@ -34,17 +28,11 @@ In general, this method is easier to screw up and should only be used when reall
34 The same principles of transactions for lights also apply for groups. The main difference is that 28 The same principles of transactions for lights also apply for groups. The main difference is that
35 for groups, there are no checks of the current state. Even if all lights in the group are already on, 29 for groups, there are no checks of the current state. Even if all lights in the group are already on,
36 the request to turn on all lights on the group is still sent. 30 the request to turn on all lights on the group is still sent.
37 -  
38 -```{.cpp}  
39 -group.transaction().setOn(true).setBrightness(64).commit();  
40 -``` 31 +\snippet Snippets.cpp transaction-groups
41 32
42 33
43 ## Creating Actions 34 ## Creating Actions
44 In a [Schedule](@ref hueplusplus::Schedule) or [Rule](@ref hueplusplus::Rule), 35 In a [Schedule](@ref hueplusplus::Schedule) or [Rule](@ref hueplusplus::Rule),
45 the bridge can set the state of lights and groups. To configure this, a transaction 36 the bridge can set the state of lights and groups. To configure this, a transaction
46 can be saved for later instead of committing it directly. 37 can be saved for later instead of committing it directly.
47 -```{.cpp}  
48 -hueplusplus::Action action = light.transaction().setOn(true).setBrightness(255).toAction();  
49 -schedule.setCommand(action);  
50 -``` 38 +\snippet Snippets.cpp transaction-action
examples/BridgeSetup.cpp
@@ -18,7 +18,8 @@ @@ -18,7 +18,8 @@
18 You should have received a copy of the GNU Lesser General Public License 18 You should have received a copy of the GNU Lesser General Public License
19 along with hueplusplus. If not, see <http://www.gnu.org/licenses/>. 19 along with hueplusplus. If not, see <http://www.gnu.org/licenses/>.
20 20
21 - \brief This example connects to a bridge with hardcoded mac and username. 21 + \example{lineno} BridgeSetup.cpp
  22 + This example connects to a bridge with hardcoded mac and username.
22 **/ 23 **/
23 24
24 25
@@ -45,7 +46,7 @@ namespace hue = hueplusplus; @@ -45,7 +46,7 @@ namespace hue = hueplusplus;
45 const std::string macAddress = ""; 46 const std::string macAddress = "";
46 const std::string username = ""; 47 const std::string username = "";
47 48
48 -//! \brief Connects to a bridge and returns it. 49 +// Connects to a bridge and returns it.
49 hue::Bridge connectToBridge() 50 hue::Bridge connectToBridge()
50 { 51 {
51 hue::BridgeFinder finder(std::make_shared<SystemHttpHandler>()); 52 hue::BridgeFinder finder(std::make_shared<SystemHttpHandler>());
examples/CMakeLists.txt
@@ -15,4 +15,10 @@ set_property(TARGET lights_off PROPERTY CXX_EXTENSIONS OFF) @@ -15,4 +15,10 @@ set_property(TARGET lights_off PROPERTY CXX_EXTENSIONS OFF)
15 target_link_libraries(username_config hueplusplusstatic) 15 target_link_libraries(username_config hueplusplusstatic)
16 16
17 add_custom_target(hueplusplus_examples) 17 add_custom_target(hueplusplus_examples)
18 -add_dependencies(hueplusplus_examples bridge_setup lights_off)  
19 \ No newline at end of file 18 \ No newline at end of file
  19 +add_dependencies(hueplusplus_examples bridge_setup lights_off username_config)
  20 +
  21 +# Snippets for documentation, not included with the examples target
  22 +add_executable(hueplusplus_snippets Snippets.cpp)
  23 +set_property(TARGET hueplusplus_snippets PROPERTY CXX_STANDARD 14)
  24 +set_property(TARGET hueplusplus_snippets PROPERTY CXX_EXTENSIONS OFF)
  25 +target_link_libraries(hueplusplus_snippets hueplusplusstatic)
examples/LightsOff.cpp
@@ -18,7 +18,8 @@ @@ -18,7 +18,8 @@
18 You should have received a copy of the GNU Lesser General Public License 18 You should have received a copy of the GNU Lesser General Public License
19 along with hueplusplus. If not, see <http://www.gnu.org/licenses/>. 19 along with hueplusplus. If not, see <http://www.gnu.org/licenses/>.
20 20
21 - \brief This example turns off all lights for 20 seconds, then turns them on again. 21 + \example{lineno} LightsOff.cpp
  22 + This example turns off all lights for 20 seconds, then turns them on again.
22 **/ 23 **/
23 24
24 #include <thread> 25 #include <thread>
@@ -43,7 +44,7 @@ namespace hue = hueplusplus; @@ -43,7 +44,7 @@ namespace hue = hueplusplus;
43 const std::string macAddress = ""; 44 const std::string macAddress = "";
44 const std::string username = ""; 45 const std::string username = "";
45 46
46 -//! \brief Connects to a bridge and returns it. 47 +// Connects to a bridge and returns it.
47 hue::Bridge connectToBridge() 48 hue::Bridge connectToBridge()
48 { 49 {
49 hue::BridgeFinder finder(std::make_shared<SystemHttpHandler>()); 50 hue::BridgeFinder finder(std::make_shared<SystemHttpHandler>());
@@ -79,9 +80,8 @@ hue::Bridge connectToBridge() @@ -79,9 +80,8 @@ hue::Bridge connectToBridge()
79 return finder.getBridge(*it); 80 return finder.getBridge(*it);
80 } 81 }
81 82
82 -//! \brief Turns off the lights on the bridge for 20 seconds.  
83 -//!  
84 -//! Only turns the lights back on that were on before. 83 +// Turns off the lights on the bridge for 20 seconds.
  84 +// Only turns the lights back on that were on before.
85 void lightsOff(hue::Bridge& hue) 85 void lightsOff(hue::Bridge& hue)
86 { 86 {
87 std::vector<hue::Light> lights = hue.lights().getAll(); 87 std::vector<hue::Light> lights = hue.lights().getAll();
examples/Snippets.cpp 0 โ†’ 100644
  1 +/**
  2 + \file Snippets.cpp
  3 + Copyright Notice\n
  4 + Copyright (C) 2021 Jan Rogall - developer\n
  5 +
  6 + This file is part of hueplusplus.
  7 +
  8 + hueplusplus is free software: you can redistribute it and/or modify
  9 + it under the terms of the GNU Lesser General Public License as published by
  10 + the Free Software Foundation, either version 3 of the License, or
  11 + (at your option) any later version.
  12 +
  13 + hueplusplus is distributed in the hope that it will be useful,
  14 + but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + GNU Lesser General Public License for more details.
  17 +
  18 + You should have received a copy of the GNU Lesser General Public License
  19 + along with hueplusplus. If not, see <http://www.gnu.org/licenses/>.
  20 +
  21 + \brief Contains code snippets used in the documentation, performs no useful functions.
  22 +**/
  23 +
  24 +#include <hueplusplus/Bridge.h>
  25 +#include <hueplusplus/CLIPSensors.h>
  26 +#include <hueplusplus/ZLLSensors.h>
  27 +
  28 +#ifdef _MSC_VER
  29 +#include <hueplusplus/WinHttpHandler.h>
  30 +
  31 +namespace hueplusplus
  32 +{
  33 +// Dirty hack to make the snippets compile under windows. Dont do this,
  34 +// instead use your own alias which is set to either type like in BridgeSetup.cpp!
  35 +using LinHttpHandler = WinHttpHandler;
  36 +} // namespace hueplusplus
  37 +
  38 +#else
  39 +#include <hueplusplus/LinHttpHandler.h>
  40 +
  41 +#endif
  42 +
  43 +void snippet1()
  44 +{
  45 + // Main page
  46 + //! [search-bridge]
  47 + // For windows use std::make_shared<hueplusplus::WinHttpHandler>();
  48 + auto handler = std::make_shared<hueplusplus::LinHttpHandler>();
  49 + hueplusplus::BridgeFinder finder(handler);
  50 + std::vector<hueplusplus::BridgeFinder::BridgeIdentification> bridges = finder.findBridges();
  51 + if (bridges.empty())
  52 + {
  53 + std::cerr << "No bridges found\n";
  54 + return;
  55 + }
  56 + //! [search-bridge]
  57 + //! [get-bridge-2]
  58 + finder.addUsername(bridges[0].mac, "<username>");
  59 + //! [get-bridge-1]
  60 + hueplusplus::Bridge bridge = finder.getBridge(bridges[0]);
  61 + //! [get-bridge-1]
  62 + //! [get-bridge-2]
  63 + //! [light-1]
  64 + hueplusplus::Light light1 = bridge.lights().get(1);
  65 + //! [light-1]
  66 + //! [light-2]
  67 + std::vector<hueplusplus::Light> lights = bridge.lights().getAll();
  68 + //! [light-2]
  69 + //! [light-3]
  70 + light1.on();
  71 + light1.setBrightness(120);
  72 + light1.alertHueSaturation({25500, 254});
  73 + light1.setColorLoop(true);
  74 + light1.setColorRGB({255, 128, 0});
  75 + lights[1].off();
  76 + lights.at(1).setColorHue(4562);
  77 + //! [light-3]
  78 + //! [light-4]
  79 + hueplusplus::ColorType type1 = light1.getColorType();
  80 + //! [light-4]
  81 + //! [light-5]
  82 + light1.hasBrightnessControl();
  83 + light1.hasTemperatureControl();
  84 + light1.hasColorControl();
  85 + //! [light-5]
  86 +
  87 + // Getting started
  88 + //! [control-lights]
  89 + hueplusplus::Light light = bridge.lights().get(1);
  90 + light.on();
  91 + light.off();
  92 + //! [control-lights]
  93 + //! [control-groups]
  94 + hueplusplus::Group group = bridge.groups().get(1);
  95 + group.setOn(true);
  96 + //! [control-groups]
  97 +
  98 + // Sensors
  99 + //! [sensor-conditions]
  100 + //! [known-sensor-1]
  101 + hueplusplus::sensors::ZLLSwitch switchSensor = bridge.sensors().getAsType<hueplusplus::sensors::ZLLSwitch>(2);
  102 + //! [known-sensor-1]
  103 + // ZLLSwitch conditions operate on `buttonEvent`, use makeConditionLastUpdate()
  104 + // to trigger on the last update time.
  105 +
  106 + // Some examples:
  107 + hueplusplus::Condition upPressed
  108 + = makeCondition(switchSensor).eq(hueplusplus::sensors::ZLLSwitch::c_UP_INITIAL_PRESS);
  109 + hueplusplus::Condition buttonChanged = makeCondition(switchSensor).dx();
  110 +
  111 + hueplusplus::time::TimeInterval interval(std::chrono::hours(12), std::chrono::hours(13));
  112 + hueplusplus::Condition updatedAtNoon = makeConditionLastUpdate(switchSensor).in(interval);
  113 + //! [sensor-conditions]
  114 + //! [known-sensor-2]
  115 + std::vector<hueplusplus::sensors::ZLLSwitch> allSwitches
  116 + = bridge.sensors().getAllByType<hueplusplus::sensors::ZLLSwitch>();
  117 + //! [known-sensor-2]
  118 + //! [generic-sensor-1]
  119 + hueplusplus::Sensor genericSensor = bridge.sensors().get(1);
  120 + if (genericSensor.hasOn())
  121 + {
  122 + // Now can check whether it is on
  123 + if (genericSensor.isOn())
  124 + {
  125 + // ...
  126 + }
  127 + }
  128 + //! [generic-sensor-1]
  129 +
  130 + // Transactions
  131 + //! [transaction-lights]
  132 + light.transaction().setOn(true).setBrightness(29).setColorHue(3000).setColorSaturation(128).commit();
  133 + //! [transaction-lights]
  134 + bool shouldTurnOn = true;
  135 + //! [transaction-advanced]
  136 + hueplusplus::StateTransaction t = light.transaction();
  137 + if (shouldTurnOn)
  138 + t.setOn(true);
  139 + t.commit();
  140 + //! [transaction-advanced]
  141 + //! [transaction-groups]
  142 + group.transaction().setOn(true).setBrightness(64).commit();
  143 + //! [transaction-groups]
  144 + hueplusplus::Schedule schedule = bridge.schedules().get(1);
  145 + //! [transaction-action]
  146 + hueplusplus::Action action = light.transaction().setOn(true).setBrightness(254).toAction();
  147 + schedule.setCommand(action);
  148 + //! [transaction-action]
  149 +}
  150 +void snippet2()
  151 +{
  152 + // Main page
  153 + //! [get-bridge-3]
  154 + // For windows use std::make_shared<hueplusplus::WinHttpHandler>();
  155 + auto handler = std::make_shared<hueplusplus::LinHttpHandler>();
  156 + hueplusplus::Bridge bridge("192.168.2.102", 80, "<username>", handler);
  157 + //! [get-bridge-3]
  158 +
  159 + // Sensors
  160 + //! [generic-sensor-2]
  161 + hueplusplus::Sensor genericSensor = bridge.sensors().get(1);
  162 + if (genericSensor.getType() == hueplusplus::sensors::ZLLSwitch::typeStr)
  163 + {
  164 + hueplusplus::sensors::ZLLSwitch switchSensor = genericSensor.asSensorType<hueplusplus::sensors::ZLLSwitch>();
  165 + // ...
  166 + }
  167 + //! [generic-sensor-2]
  168 +}
  169 +
  170 +void snippet3()
  171 +{
  172 + // Shared state
  173 + auto handler = std::make_shared<hueplusplus::LinHttpHandler>();
  174 + hueplusplus::BridgeFinder finder(handler);
  175 + std::vector<hueplusplus::BridgeFinder::BridgeIdentification> bridges = finder.findBridges();
  176 + //! [shared-bridge-1]
  177 + hueplusplus::Bridge bridge = finder.getBridge(bridges[0], true);
  178 + //! [shared-bridge-1]
  179 + //! [refresh-example]
  180 + bridge.setRefreshDuration(std::chrono::minutes(1));
  181 + bridge.lights().setRefreshDuration(std::chrono::seconds(30));
  182 + hueplusplus::Light light = bridge.lights().get(1);
  183 + // ... wait some time
  184 + bool on = light.isOn();
  185 + //! [refresh-example]
  186 +}
  187 +void snippet4()
  188 +{
  189 + // Shared state
  190 + auto handler = std::make_shared<hueplusplus::LinHttpHandler>();
  191 + //! [shared-bridge-2]
  192 + hueplusplus::Bridge bridge("192.168.2.102", 80, "<username>", handler, "", std::chrono::seconds(10), true);
  193 + //! [shared-bridge-2]
  194 +}
  195 +
  196 +int main(int argc, char** argv)
  197 +{
  198 + return 0;
  199 +}
0 \ No newline at end of file 200 \ No newline at end of file
examples/UsernameConfig.cpp
@@ -18,7 +18,8 @@ @@ -18,7 +18,8 @@
18 You should have received a copy of the GNU Lesser General Public License 18 You should have received a copy of the GNU Lesser General Public License
19 along with hueplusplus. If not, see <http://www.gnu.org/licenses/>. 19 along with hueplusplus. If not, see <http://www.gnu.org/licenses/>.
20 20
21 - \brief This example reads the username and mac address from a config file. 21 + \example{lineno} UsernameConfig.cpp
  22 + This example reads the username and mac address from a config file.
22 **/ 23 **/
23 24
24 #include <algorithm> 25 #include <algorithm>
@@ -42,9 +43,9 @@ using SystemHttpHandler = hueplusplus::LinHttpHandler; @@ -42,9 +43,9 @@ using SystemHttpHandler = hueplusplus::LinHttpHandler;
42 43
43 namespace hue = hueplusplus; 44 namespace hue = hueplusplus;
44 45
45 -//! \brief Reads a json config file.  
46 -//! \param filename Path to the config file  
47 -//! \returns Parsed json or an empty object if not successful. 46 +// Reads a json config file.
  47 +// filename: Path to the config file
  48 +// returns parsed json or an empty object if not successful.
48 nlohmann::json readConfigFile(const std::string& filename) 49 nlohmann::json readConfigFile(const std::string& filename)
49 { 50 {
50 std::ifstream stream(filename); 51 std::ifstream stream(filename);
@@ -64,20 +65,20 @@ nlohmann::json readConfigFile(const std::string&amp; filename) @@ -64,20 +65,20 @@ nlohmann::json readConfigFile(const std::string&amp; filename)
64 } 65 }
65 } 66 }
66 67
67 -//! \brief Saves a json file.  
68 -//! \param filename Path to the config file  
69 -//! \param config Json value to save 68 +// Saves a json file.
  69 +// filename: Path to the config file
  70 +// config: Json value to save
70 void saveConfigFile(const std::string& filename, const nlohmann::json& config) 71 void saveConfigFile(const std::string& filename, const nlohmann::json& config)
71 { 72 {
72 std::ofstream stream(filename); 73 std::ofstream stream(filename);
73 stream << std::setw(4) << config; 74 stream << std::setw(4) << config;
74 } 75 }
75 76
76 -//! \brief Connects to a bridge and returns it  
77 -//! \param username Already existing username, can be left empty.  
78 -//! \param macAddress MAC address of the bridge, can be left empty.  
79 -//! \throws std::runtime_error When the bridge was not found.  
80 -//! \returns A connected bridge. 77 +// Connects to a bridge and returns it
  78 +// username: Already existing username, can be left empty.
  79 +// macAddress: MAC address of the bridge, can be left empty.
  80 +// throws std::runtime_error when the bridge was not found.
  81 +// returns a connected bridge.
81 hue::Bridge connectToBridge(const std::string& username, const std::string& macAddress) 82 hue::Bridge connectToBridge(const std::string& username, const std::string& macAddress)
82 { 83 {
83 hue::BridgeFinder finder(std::make_shared<SystemHttpHandler>()); 84 hue::BridgeFinder finder(std::make_shared<SystemHttpHandler>());
@@ -113,12 +114,12 @@ hue::Bridge connectToBridge(const std::string&amp; username, const std::string&amp; macA @@ -113,12 +114,12 @@ hue::Bridge connectToBridge(const std::string&amp; username, const std::string&amp; macA
113 return finder.getBridge(*it); 114 return finder.getBridge(*it);
114 } 115 }
115 116
116 -//! Connects to a bridge. The steps are:  
117 -//! - read "config.json" for an existing config  
118 -//! - connect to the bridge  
119 -//! - save the username to the config file for the next run  
120 -//!  
121 -//! Also prints out the IP and username. 117 +// Connects to a bridge. The steps are:
  118 +// - read "config.json" for an existing config
  119 +// - connect to the bridge
  120 +// - save the username to the config file for the next run
  121 +//
  122 +// Also prints out the IP and username.
122 int main(int argc, char** argv) 123 int main(int argc, char** argv)
123 { 124 {
124 125