diff --git a/.vuepress/config.js b/.vuepress/config.js new file mode 100644 index 0000000000000000000000000000000000000000..1150e5939ba57dc28318184ca074d114119a829e --- /dev/null +++ b/.vuepress/config.js @@ -0,0 +1,26 @@ +module.exports = { + base: '/com3001/', + title: "COM3001", + description: "Final Year Project", + themeConfig: { + sidebar: 'auto', + nav: [ + { text: 'Home', link: '/' }, + { text: 'Install', link: '/INSTALL' }, + { text: 'Examples', link: '/examples/' }, + { text: 'Modules', link: '/doxygen/modules' }, + { + text: 'Classes', + items: [ + { text: 'Class List', link: '/doxygen/annotated' }, + { text: 'Class Index', link: '/doxygen/classes' }, + { text: 'Function Index', link: '/doxygen/functions' }, + { text: 'Variable Index', link: '/doxygen/variables' }, + { text: 'Enumeration Index', link: '/doxygen/enumerations' } + ] + }, + { text: 'Files', link: '/doxygen/files' }, + { text: 'Pages', link: '/doxygen/pages' } + ] + } +} diff --git a/CMakeLists.txt b/CMakeLists.txt index aad6b87cbc10f3138ee97c8f3575974fbdf2d332..578114f91be521677b9ef7020eac12410c48a4c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ option(BUILD_TESTS "Build tests" ON) option(BUILD_INSTALL "Install libraries and binaries" ON) set(CMAKE_CXX_STANDARD 14) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) # External libraries add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs) @@ -13,9 +14,7 @@ find_package(Threads) # Our subdirectories add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/decoder) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/emitter) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/encoder) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/server) # Add tests if(BUILD_TESTS) diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000000000000000000000000000000000000..376218978643ef9f1ae2b5c2ae43e1db65a4121f --- /dev/null +++ b/Doxyfile @@ -0,0 +1,2425 @@ +# Doxyfile 1.8.11 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "COM3001" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxygen + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if <section_label> ... \endif and \cond <section_label> +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = include + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, +# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. + +FILE_PATTERNS = *.h *.hpp + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = *.cpp + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = YES + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# <filter> <input-file> +# +# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 1 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = NO + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = . + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = YES + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use <access key> + S +# (what the <access key> is depends on the OS and browser, but it is typically +# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down +# key> to jump into the search results window, the results can be navigated +# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel +# the search. The filter options can be selected when the cursor is inside the +# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> +# to select a filter and <Enter> or <escape> to activate or cancel the filter +# option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +SEARCHENGINE = NO + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. There +# are two flavors of web server based searching depending on the EXTERNAL_SEARCH +# setting. When disabled, doxygen will generate a PHP script for searching and +# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing +# and searching needs to be provided by external tools. See the section +# "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain the +# search results. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). +# +# See the section "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will return the search results when EXTERNAL_SEARCH is enabled. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). See the section "External Indexing and +# Searching" for details. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. +# The default file is: searchdata.xml. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of +# to a relative location where the documentation can be found. The format is: +# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# The default value is: YES. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. +# +# Note that when enabling USE_PDFLATEX this option is only used for generating +# bitmaps for formulas in the HTML output, but not in the Makefile that is +# written to the output directory. +# The default file is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate +# index for LaTeX. +# The default file is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used by the +# printer. +# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x +# 14 inches) and executive (7.25 x 10.5 inches). +# The default value is: a4. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names +# that should be included in the LaTeX output. The package can be specified just +# by its name or with the correct syntax as to be used with the LaTeX +# \usepackage command. To get the times font for instance you can specify : +# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times} +# To use the option intlimits with the amsmath package you can specify: +# EXTRA_PACKAGES=[intlimits]{amsmath} +# If left blank no extra packages will be included. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the +# generated LaTeX document. The header should contain everything until the first +# chapter. If it is left blank doxygen will generate a standard header. See +# section "Doxygen usage" for information on how to let doxygen write the +# default header to a separate file. +# +# Note: Only use a user-defined header if you know what you are doing! The +# following commands have a special meaning inside the header: $title, +# $datetime, $date, $doxygenversion, $projectname, $projectnumber, +# $projectbrief, $projectlogo. Doxygen will replace $title with the empty +# string, for the replacement values of the other commands the user is referred +# to HTML_HEADER. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the +# generated LaTeX document. The footer should contain everything after the last +# chapter. If it is left blank doxygen will generate a standard footer. See +# LATEX_HEADER for more information on how to generate a default footer and what +# special commands can be used inside the footer. +# +# Note: Only use a user-defined footer if you know what you are doing! +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_FOOTER = + +# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# LaTeX style sheets that are included after the standard style sheets created +# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_STYLESHEET = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the LATEX_OUTPUT output +# directory. Note that the files will be copied as-is; there are no commands or +# markers available. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is +# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will +# contain links (just like the HTML output) instead of page references. This +# makes the output suitable for online browsing using a PDF viewer. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate +# the PDF file directly from the LaTeX files. Set this option to YES, to get a +# higher quality PDF documentation. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode +# command to the generated LaTeX files. This will instruct LaTeX to keep running +# if errors occur, instead of asking the user for help. This option is also used +# when generating formulas in HTML. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BATCHMODE = NO + +# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# index chapters (such as File Index, Compound Index, etc.) in the output. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HIDE_INDICES = NO + +# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source +# code with syntax highlighting in the LaTeX output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. See +# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# The default value is: plain. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BIB_STYLE = plain + +# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# RTF output is optimized for Word 97 and may not look too pretty with other RTF +# readers/editors. +# The default value is: NO. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: rtf. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will +# contain hyperlink fields. The RTF file will contain links (just like the HTML +# output) instead of page references. This makes the output suitable for online +# browsing using Word or some other Word compatible readers that support those +# fields. +# +# Note: WordPad (write) and others do not support links. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's config +# file, i.e. a series of assignments. You only have to provide replacements, +# missing definitions are set to their default value. +# +# See also section "Doxygen usage" for information on how to generate the +# default style sheet that doxygen normally uses. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an RTF document. Syntax is +# similar to doxygen's config file. A template extensions file can be generated +# using doxygen -e rtf extensionFile. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTENSIONS_FILE = + +# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code +# with syntax highlighting in the RTF output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# classes and files. +# The default value is: NO. + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. A directory man3 will be created inside the directory specified by +# MAN_OUTPUT. +# The default directory is: man. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to the generated +# man pages. In case the manual section does not start with a number, the number +# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is +# optional. +# The default value is: .3. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_EXTENSION = .3 + +# The MAN_SUBDIR tag determines the name of the directory created within +# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by +# MAN_EXTENSION with the initial . removed. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_SUBDIR = + +# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# will generate one additional man file for each entity documented in the real +# man page(s). These additional files only source the real man page, but without +# them the man command would be unable to find the correct page. +# The default value is: NO. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# captures the structure of the code including all documentation. +# The default value is: NO. + +GENERATE_XML = YES + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: xml. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# listings (including syntax highlighting and cross-referencing information) to +# the XML output. Note that enabling this will significantly increase the size +# of the XML output. +# The default value is: YES. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# that can be used to generate PDF. +# The default value is: NO. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. +# The default directory is: docbook. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_OUTPUT = docbook + +# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the +# program listings (including syntax highlighting and cross-referencing +# information) to the DOCBOOK output. Note that enabling this will significantly +# increase the size of the DOCBOOK output. +# The default value is: NO. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_PROGRAMLISTING = NO + +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# AutoGen Definitions (see http://autogen.sf.net) file that captures the +# structure of the code including all documentation. Note that this feature is +# still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# file that captures the structure of the code including all documentation. +# +# Note that this feature is still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI +# output from the Perl module output. +# The default value is: NO. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely +# formatted so it can be parsed by a human reader. This is useful if you want to +# understand what is going on. On the other hand, if this tag is set to NO, the +# size of the Perl module output will be much smaller and Perl will parse it +# just the same. +# The default value is: YES. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file are +# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful +# so different doxyrules.make files included by the same Makefile don't +# overwrite each other's variables. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# C-preprocessor directives found in the sources and include files. +# The default value is: YES. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# in the source code. If set to NO, only conditional compilation will be +# performed. Macro expansion can be done in a controlled way by setting +# EXPAND_ONLY_PREDEF to YES. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then +# the macro expansion is limited to the macros specified with the PREDEFINED and +# EXPAND_AS_DEFINED tags. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES, the include files in the +# INCLUDE_PATH will be searched if a #include is found. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by the +# preprocessor. +# This tag requires that the tag SEARCH_INCLUDES is set to YES. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will be +# used. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that are +# defined before the preprocessor is started (similar to the -D option of e.g. +# gcc). The argument of the tag is a list of macros of the form: name or +# name=definition (no spaces). If the definition and the "=" are omitted, "=1" +# is assumed. To prevent a macro definition from being undefined via #undef or +# recursively expanded use the := operator instead of the = operator. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this +# tag can be used to specify a list of macro names that should be expanded. The +# macro definition that is found in the sources will be used. Use the PREDEFINED +# tag if you want to use a different macro definition that overrules the +# definition found in the source code. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# remove all references to function-like macros that are alone on a line, have +# an all uppercase name, and do not end with a semicolon. Such function macros +# are typically used for boiler-plate code, and will confuse the parser if not +# removed. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tag files. For each tag +# file the location of the external documentation should be added. The format of +# a tag file without this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where loc1 and loc2 can be relative or absolute paths or URLs. See the +# section "Linking to external documentation" for more information about the use +# of tag files. +# Note: Each tag file must have a unique name (where the name does NOT include +# the path). If a tag file is not located in the directory in which doxygen is +# run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# tag file that is based on the input files it reads. See section "Linking to +# external documentation" for more information about the usage of tag files. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES, all external class will be listed in +# the class index. If set to NO, only the inherited external classes will be +# listed. +# The default value is: NO. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will be +# listed. +# The default value is: YES. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in +# the related pages index. If set to NO, only the current project's pages will +# be listed. +# The default value is: YES. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of 'which perl'). +# The default file (with absolute path) is: /usr/bin/perl. + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram +# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to +# NO turns the diagrams off. Note that this option also works with HAVE_DOT +# disabled, but it is recommended to install and use dot, since it yields more +# powerful graphs. +# The default value is: YES. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see: +# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. + +DIA_PATH = + +# If set to YES the inheritance and collaboration graphs will hide inheritance +# and usage relations if the target is undocumented or is not a class. +# The default value is: YES. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz (see: +# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# Bell Labs. The other options in this section have no effect if this option is +# set to NO +# The default value is: NO. + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed +# to run in parallel. When set to 0 doxygen will base this on the number of +# processors available in the system. You can set it explicitly to a value +# larger than 0 to get control over the balance between CPU load and processing +# speed. +# Minimum value: 0, maximum value: 32, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NUM_THREADS = 0 + +# When you want a differently looking font in the dot files that doxygen +# generates you can specify the font name using DOT_FONTNAME. You need to make +# sure dot is able to find the font, which can be done by putting it in a +# standard location or by setting the DOTFONTPATH environment variable or by +# setting DOT_FONTPATH to the directory containing the font. +# The default value is: Helvetica. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of +# dot graphs. +# Minimum value: 4, maximum value: 24, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the default font as specified with +# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set +# the path where dot can find it using this tag. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for +# each documented class showing the direct and indirect inheritance relations. +# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# graph for each documented class showing the direct and indirect implementation +# dependencies (inheritance, containment, and class references variables) of the +# class with other documented classes. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# groups, showing the direct groups dependencies. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside the +# class node. If there are many fields or methods and many nodes the graph may +# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the +# number of items for each type to make the size more manageable. Set this to 0 +# for no limit. Note that the threshold may be exceeded by 50% before the limit +# is enforced. So when you set the threshold to 10, up to 15 fields may appear, +# but if the number exceeds 15, the total amount of fields shown is limited to +# 10. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LIMIT_NUM_FIELDS = 10 + +# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and +# collaboration graphs will show the relations between templates and their +# instances. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +TEMPLATE_RELATIONS = NO + +# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to +# YES then doxygen will generate a graph for each documented file showing the +# direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDE_GRAPH = YES + +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are +# set to YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# hierarchy of all classes instead of a textual one. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# dependencies a directory has on other directories in a graphical way. The +# dependency relations are determined by the #include relations between the +# files in the directories. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). +# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order +# to make the SVG files visible in IE 9+ (other browsers do not have this +# requirement). +# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. +# The default value is: png. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# +# Note that this requires a modern browser other than Internet Explorer. Tested +# and working are Firefox, Chrome, Safari, and Opera. +# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make +# the SVG files visible. Older versions of IE do not have SVG support. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +INTERACTIVE_SVG = NO + +# The DOT_PATH tag can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the \dotfile +# command). +# This tag requires that the tag HAVE_DOT is set to YES. + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = + +# The DIAFILE_DIRS tag can be used to specify one or more directories that +# contain dia files that are included in the documentation (see the \diafile +# command). + +DIAFILE_DIRS = + +# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file. If left blank, it is assumed +# PlantUML is not used or called during a preprocessing step. Doxygen will +# generate a warning when it encounters a \startuml command in this case and +# will not generate output for the diagram. + +PLANTUML_JAR_PATH = + +# When using plantuml, the specified paths are searched for files specified by +# the !include statement in a plantuml block. + +PLANTUML_INCLUDE_PATH = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes +# that will be shown in the graph. If the number of nodes in a graph becomes +# larger than this value, doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that doxygen if the number of direct +# children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that +# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +# Minimum value: 0, maximum value: 10000, default value: 50. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs +# generated by dot. A depth value of 3 means that only nodes reachable from the +# root by following a path via at most 3 edges will be shown. Nodes that lay +# further from the root node will be omitted. Note that setting this option to 1 +# or 2 may greatly reduce the computation time needed for large code bases. Also +# note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +# Minimum value: 0, maximum value: 1000, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not seem +# to support this out of the box. +# +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) support +# this, this feature is disabled by default. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# explaining the meaning of the various boxes and arrows in the dot generated +# graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot +# files that are used to generate the various graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_CLEANUP = YES diff --git a/doxygen/annotated.md b/doxygen/annotated.md new file mode 100644 index 0000000000000000000000000000000000000000..b53a2ab9e5dbd4897a782c8f1552e29c1c1959b9 --- /dev/null +++ b/doxygen/annotated.md @@ -0,0 +1,20 @@ +--- +title: Annotated +meta: + - name: keywords + content: Rew AudioWriter Bucket ByteAssembler Decoder Encoder Goertzel Synth ToneSynth WavWriter +--- + +# Class List + +Here are the classes, structs, unions and interfaces with brief descriptions: +* namespace [**Rew**](namespace_rew.md) + * class [**AudioWriter**](class_rew_1_1_audio_writer.md) + * class [**Bucket**](class_rew_1_1_bucket.md) + * class [**ByteAssembler**](class_rew_1_1_byte_assembler.md) + * class [**Decoder**](class_rew_1_1_decoder.md) + * class [**Encoder**](class_rew_1_1_encoder.md) + * class [**Goertzel**](class_rew_1_1_goertzel.md) + * class [**Synth**](class_rew_1_1_synth.md) + * class [**ToneSynth**](class_rew_1_1_tone_synth.md) + * class [**WavWriter**](class_rew_1_1_wav_writer.md) diff --git a/doxygen/audio__writer_8h.md b/doxygen/audio__writer_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..174bda31f44ea8186f84f93d8927160fb610602d --- /dev/null +++ b/doxygen/audio__writer_8h.md @@ -0,0 +1,21 @@ +--- +title: file audio_writer.h +meta: + - name: keywords + content: audio_writer.h Rew::AudioWriter +--- + +# file audio\_writer.h + +**[Go to the source code of this file.](audio__writer_8h_source.md)** +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::AudioWriter**](class_rew_1_1_audio_writer.md)| + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/audio\_writer.h` diff --git a/doxygen/audio__writer_8h_source.md b/doxygen/audio__writer_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..3ce2cd46653e13dbc690a8a4c0541df70f415fae --- /dev/null +++ b/doxygen/audio__writer_8h_source.md @@ -0,0 +1,66 @@ +--- +title: audio_writer.h File Reference +meta: + - name: keywords + content: audio_writer.h file +--- + +# audio\_writer.h File Reference + +**[Go to the documentation of this file.](audio__writer_8h.md)** +Source: `include/encoder/audio\_writer.h` + + + + + + + + + + + + + +```cpp +#ifndef REW_AUDIO_SAVER +#define REW_AUDIO_SAVER + +#include <fstream> +#include <string> +#include "../config.h" + +REW_NAMESPACE{ + class REW_API AudioWriter { + public: + AudioWriter(); + virtual ~AudioWriter() = default; + virtual bool open(const std::string& path, size_t size, int bitsPerSample, int sampleRate, int numChannels) = 0; + virtual bool writeChunk(const unsigned char* data, size_t* bytesWritten) = 0; + virtual bool writeFooter() = 0; + virtual void close() = 0; + virtual bool eof() const = 0; + virtual size_t getPos() const = 0; + bool isOpen() const; + size_t getSize() const; + int getSampleRate() const; + int getNumOfChannels() const; + int getBitsPerSample() const; + size_t getChunkSize() const; + operator bool() const; + protected: + bool loaded; + size_t size; + int sampleRate; + int channelCount; + int bitsPerSample; + size_t chunkSize; + }; +}; +#endif + +``` + + + + diff --git a/doxygen/bucket_8h.md b/doxygen/bucket_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..203a20f4834cd7bb16f6b73c93a66566a5df5b91 --- /dev/null +++ b/doxygen/bucket_8h.md @@ -0,0 +1,21 @@ +--- +title: file bucket.h +meta: + - name: keywords + content: bucket.h Rew::Bucket +--- + +# file bucket.h + +**[Go to the source code of this file.](bucket_8h_source.md)** +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::Bucket**](class_rew_1_1_bucket.md)| + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/decoder/bucket.h` diff --git a/doxygen/bucket_8h_source.md b/doxygen/bucket_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..dba124cc2d767288f20059fc6f9a9e9a4b552577 --- /dev/null +++ b/doxygen/bucket_8h_source.md @@ -0,0 +1,101 @@ +--- +title: bucket.h File Reference +meta: + - name: keywords + content: bucket.h file +--- + +# bucket.h File Reference + +**[Go to the documentation of this file.](bucket_8h.md)** +Source: `include/decoder/bucket.h` + + + + + + + + + + + + +```cpp +#ifndef REW_BUCKET_H +#define REW_BUCKET_H + +#include "../config.h" +#include <vector> + +REW_NAMESPACE { + template <typename T> + class REW_API Bucket { + public: + Bucket() = default; + Bucket(Bucket&& other) noexcept: vector(std::move(other.vector)) { + + } + Bucket(const Bucket& other) = delete; + virtual ~Bucket() = default; + void swap(Bucket& other) noexcept { + using std::swap; + swap(vector, other.vector); + } + Bucket& operator = (Bucket&& other) noexcept { + if (this != &other) { + swap(other); + } + return *this; + } + Bucket& operator = (const Bucket& other) = delete; + + void pushBack (const typename std::vector<T>::value_type& value) { + if (vector.capacity() <= vector.size()) { + vector.reserve(vector.capacity() + 64); + } + vector.push_back(value); + } + + size_t size() const { + return vector.size(); + } + + typename std::vector<T>::iterator begin() { + return vector.begin(); + } + + typename std::vector<T>::const_iterator begin() const { + return vector.begin(); + } + + typename std::vector<T>::iterator end() { + return vector.end(); + } + + typename std::vector<T>::const_iterator end() const { + return vector.end(); + } + + void clear() { + vector.clear(); + } + + typename std::vector<T>::value_type& operator[](size_t i) { + return vector[i]; + } + + const typename std::vector<T>::value_type& operator[](size_t i) const { + return vector[i]; + } + private: + std::vector<T> vector; + }; +} + +#endif +``` + + + + diff --git a/doxygen/byte__assembler_8h.md b/doxygen/byte__assembler_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..606b56bf68a3d04f1b3e297c9845a179057f46a6 --- /dev/null +++ b/doxygen/byte__assembler_8h.md @@ -0,0 +1,21 @@ +--- +title: file byte_assembler.h +meta: + - name: keywords + content: byte_assembler.h Rew::ByteAssembler +--- + +# file byte\_assembler.h + +**[Go to the source code of this file.](byte__assembler_8h_source.md)** +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::ByteAssembler**](class_rew_1_1_byte_assembler.md)| + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/decoder/byte\_assembler.h` diff --git a/doxygen/byte__assembler_8h_source.md b/doxygen/byte__assembler_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..80486e1b31ed88eeeeb5f6e678d41c2ba7fc5342 --- /dev/null +++ b/doxygen/byte__assembler_8h_source.md @@ -0,0 +1,56 @@ +--- +title: byte_assembler.h File Reference +meta: + - name: keywords + content: byte_assembler.h file +--- + +# byte\_assembler.h File Reference + +**[Go to the documentation of this file.](byte__assembler_8h.md)** +Source: `include/decoder/byte\_assembler.h` + + + + + + + + + + + + + +```cpp +#ifndef REW_BYTE_ASSEMBLER_H +#define REW_BYTE_ASSEMBLER_H + +#include "../config.h" +#include "bucket.h" +#include <functional> + +REW_NAMESPACE { + class REW_API ByteAssembler { + public: + ByteAssembler(); + ByteAssembler(ByteAssembler&& other) noexcept; + ByteAssembler(const ByteAssembler& other) = delete; + void swap(ByteAssembler& other) noexcept; + ByteAssembler& operator = (ByteAssembler&& other) noexcept; + ByteAssembler& operator = (const ByteAssembler& other) = delete; + + void operator()(unsigned char magnitude, const std::function<void(unsigned char)>& callback); + private: + static size_t countValue(const unsigned char* begin, const unsigned char* end, unsigned char value); + static unsigned char toByte(const unsigned char* begin, const unsigned char* end); + Bucket<unsigned char> buffer; + }; +} + +#endif +``` + + + + diff --git a/doxygen/class_rew_1_1_audio_writer.md b/doxygen/class_rew_1_1_audio_writer.md new file mode 100644 index 0000000000000000000000000000000000000000..20e01fe916a65ab70656f9e213389dd6bf2c8ed6 --- /dev/null +++ b/doxygen/class_rew_1_1_audio_writer.md @@ -0,0 +1,252 @@ +--- +title: class Rew::AudioWriter +meta: + - name: keywords + content: Rew::AudioWriter loaded size sampleRate channelCount bitsPerSample chunkSize AudioWriter ~AudioWriter open writeChunk writeFooter close eof getPos isOpen getSize getSampleRate getNumOfChannels getBitsPerSample getChunkSize operator bool +--- + +# class Rew::AudioWriter + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) **::** [**AudioWriter**](class_rew_1_1_audio_writer.md) + + +Audio saver base class. + + +Inherited by the following classes: **[Rew::WavWriter](class_rew_1_1_wav_writer.md)** + +## Protected Attributes + +|Type|Name| +|-----|-----| +|bool|[**loaded**](class_rew_1_1_audio_writer.md#variable-loaded)| +|size\_t|[**size**](class_rew_1_1_audio_writer.md#variable-size)| +|int|[**sampleRate**](class_rew_1_1_audio_writer.md#variable-samplerate)| +|int|[**channelCount**](class_rew_1_1_audio_writer.md#variable-channelcount)| +|int|[**bitsPerSample**](class_rew_1_1_audio_writer.md#variable-bitspersample)| +|size\_t|[**chunkSize**](class_rew_1_1_audio_writer.md#variable-chunksize)| + + +## Public Functions + +|Type|Name| +|-----|-----| +||[**AudioWriter**](class_rew_1_1_audio_writer.md#function-audiowriter) () | +|virtual |[**~AudioWriter**](class_rew_1_1_audio_writer.md#function-audiowriter) () = default | +|virtual bool|[**open**](class_rew_1_1_audio_writer.md#function-open) (const std::string & path, size\_t size, int bitsPerSample, int sampleRate, int numChannels) = 0<br>Opens a file for writing. | +|virtual bool|[**writeChunk**](class_rew_1_1_audio_writer.md#function-writechunk) (const unsigned char \* data, size\_t \* bytesWritten) = 0<br>Writes a chunk of data to file. | +|virtual bool|[**writeFooter**](class_rew_1_1_audio_writer.md#function-writefooter) () = 0<br>Writes a footer. | +|virtual void|[**close**](class_rew_1_1_audio_writer.md#function-close) () = 0<br>Closes the file. | +|virtual bool|[**eof**](class_rew_1_1_audio_writer.md#function-eof) () const = 0<br>Checks if end of file. | +|virtual size\_t|[**getPos**](class_rew_1_1_audio_writer.md#function-getpos) () const = 0<br>Returns current write position in bytes. | +|bool|[**isOpen**](class_rew_1_1_audio_writer.md#function-isopen) () const <br>Checks if file is open. | +|size\_t|[**getSize**](class_rew_1_1_audio_writer.md#function-getsize) () const <br>Returns the target output size specified in function create() | +|int|[**getSampleRate**](class_rew_1_1_audio_writer.md#function-getsamplerate) () const <br>Returns the sample rate. | +|int|[**getNumOfChannels**](class_rew_1_1_audio_writer.md#function-getnumofchannels) () const <br>Returns the number of channels. | +|int|[**getBitsPerSample**](class_rew_1_1_audio_writer.md#function-getbitspersample) () const <br>Returns the bit depth of one sample. | +|size\_t|[**getChunkSize**](class_rew_1_1_audio_writer.md#function-getchunksize) () const <br>Returns the size of a chunk in bytes used by function **[writeChunk()](class_rew_1_1_audio_writer.md#function-writechunk)** | +||[**operator bool**](class_rew_1_1_audio_writer.md#function-operator-bool) () const <br>Checks if a file is open. | + + +## Protected Attributes Documentation + +### variable loaded + +```cpp +bool Rew::AudioWriter::loaded; +``` + + + +### variable size + +```cpp +size_t Rew::AudioWriter::size; +``` + + + +### variable sampleRate + +```cpp +int Rew::AudioWriter::sampleRate; +``` + + + +### variable channelCount + +```cpp +int Rew::AudioWriter::channelCount; +``` + + + +### variable bitsPerSample + +```cpp +int Rew::AudioWriter::bitsPerSample; +``` + + + +### variable chunkSize + +```cpp +size_t Rew::AudioWriter::chunkSize; +``` + + + +## Public Functions Documentation + +### function AudioWriter + +```cpp +Rew::AudioWriter::AudioWriter () +``` + + + +### function ~AudioWriter + +```cpp +virtual Rew::AudioWriter::~AudioWriter () = default +``` + + + +### function open + +```cpp +virtual bool Rew::AudioWriter::open ( + const std::string & path, + size_t size, + int bitsPerSample, + int sampleRate, + int numChannels +) = 0 +``` + +Opens a file for writing. + + +### function writeChunk + +```cpp +virtual bool Rew::AudioWriter::writeChunk ( + const unsigned char * data, + size_t * bytesWritten +) = 0 +``` + +Writes a chunk of data to file. + + + +**See also:** **[getChunkSize](class_rew_1_1_audio_writer.md#function-getchunksize)** + + +### function writeFooter + +```cpp +virtual bool Rew::AudioWriter::writeFooter () = 0 +``` + +Writes a footer. + + +### function close + +```cpp +virtual void Rew::AudioWriter::close () = 0 +``` + +Closes the file. + + +### function eof + +```cpp +virtual bool Rew::AudioWriter::eof () const = 0 +``` + +Checks if end of file. + + +### function getPos + +```cpp +virtual size_t Rew::AudioWriter::getPos () const = 0 +``` + +Returns current write position in bytes. + + +### function isOpen + +```cpp +bool Rew::AudioWriter::isOpen () const +``` + +Checks if file is open. + + +### function getSize + +```cpp +size_t Rew::AudioWriter::getSize () const +``` + +Returns the target output size specified in function create() + + +### function getSampleRate + +```cpp +int Rew::AudioWriter::getSampleRate () const +``` + +Returns the sample rate. + + +### function getNumOfChannels + +```cpp +int Rew::AudioWriter::getNumOfChannels () const +``` + +Returns the number of channels. + + +### function getBitsPerSample + +```cpp +int Rew::AudioWriter::getBitsPerSample () const +``` + +Returns the bit depth of one sample. + + +### function getChunkSize + +```cpp +size_t Rew::AudioWriter::getChunkSize () const +``` + +Returns the size of a chunk in bytes used by function **[writeChunk()](class_rew_1_1_audio_writer.md#function-writechunk)** + + +### function operator bool + +```cpp +Rew::AudioWriter::operator bool () const +``` + +Checks if a file is open. + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/audio\_writer.h` diff --git a/doxygen/class_rew_1_1_bucket.md b/doxygen/class_rew_1_1_bucket.md new file mode 100644 index 0000000000000000000000000000000000000000..1d2c84d76761eb1b4d965aa0547a941ab1b81a5a --- /dev/null +++ b/doxygen/class_rew_1_1_bucket.md @@ -0,0 +1,184 @@ +--- +title: class Rew::Bucket +meta: + - name: keywords + content: Rew::Bucket Bucket Bucket Bucket ~Bucket swap operator= operator= pushBack size begin begin end end clear operator[] operator[] +--- + +# class Rew::Bucket + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) **::** [**Bucket**](class_rew_1_1_bucket.md) + + +## Public Functions + +|Type|Name| +|-----|-----| +||[**Bucket**](class_rew_1_1_bucket.md#function-bucket-1-3) () = default | +||[**Bucket**](class_rew_1_1_bucket.md#function-bucket-2-3) (**[Bucket](class_rew_1_1_bucket.md)** && other) noexcept | +||[**Bucket**](class_rew_1_1_bucket.md#function-bucket-3-3) (const **[Bucket](class_rew_1_1_bucket.md)** & other) = delete | +|virtual |[**~Bucket**](class_rew_1_1_bucket.md#function-bucket) () = default | +|void|[**swap**](class_rew_1_1_bucket.md#function-swap) (**[Bucket](class_rew_1_1_bucket.md)** & other) noexcept | +|**[Bucket](class_rew_1_1_bucket.md)** &|[**operator=**](class_rew_1_1_bucket.md#function-operator-1-2) (**[Bucket](class_rew_1_1_bucket.md)** && other) noexcept | +|**[Bucket](class_rew_1_1_bucket.md)** &|[**operator=**](class_rew_1_1_bucket.md#function-operator-2-2) (const **[Bucket](class_rew_1_1_bucket.md)** & other) = delete | +|void|[**pushBack**](class_rew_1_1_bucket.md#function-pushback) (const typename std::vector< T >::value\_type & value) | +|size\_t|[**size**](class_rew_1_1_bucket.md#function-size) () const | +|std::vector< T >::iterator|[**begin**](class_rew_1_1_bucket.md#function-begin-1-2) () | +|std::vector< T >::const\_iterator|[**begin**](class_rew_1_1_bucket.md#function-begin-2-2) () const | +|std::vector< T >::iterator|[**end**](class_rew_1_1_bucket.md#function-end-1-2) () | +|std::vector< T >::const\_iterator|[**end**](class_rew_1_1_bucket.md#function-end-2-2) () const | +|void|[**clear**](class_rew_1_1_bucket.md#function-clear) () | +|std::vector< T >::value\_type &|[**operator[]**](class_rew_1_1_bucket.md#function-operator[]-1-2) (size\_t i) | +|const std::vector< T >::value\_type &|[**operator[]**](class_rew_1_1_bucket.md#function-operator[]-2-2) (size\_t i) const | + + +## Public Functions Documentation + +### function Bucket (1/3) + +```cpp +Rew::Bucket::Bucket () = default +``` + + + +### function Bucket (2/3) + +```cpp +Rew::Bucket::Bucket ( + Bucket && other +) noexcept +``` + + + +### function Bucket (3/3) + +```cpp +Rew::Bucket::Bucket ( + const Bucket & other +) = delete +``` + + + +### function ~Bucket + +```cpp +virtual Rew::Bucket::~Bucket () = default +``` + + + +### function swap + +```cpp +void Rew::Bucket::swap ( + Bucket & other +) noexcept +``` + + + +### function operator= (1/2) + +```cpp +Bucket & Rew::Bucket::operator= ( + Bucket && other +) noexcept +``` + + + +### function operator= (2/2) + +```cpp +Bucket & Rew::Bucket::operator= ( + const Bucket & other +) = delete +``` + + + +### function pushBack + +```cpp +void Rew::Bucket::pushBack ( + const typename std::vector< T >::value_type & value +) +``` + + + +### function size + +```cpp +size_t Rew::Bucket::size () const +``` + + + +### function begin (1/2) + +```cpp +std::vector< T >::iterator Rew::Bucket::begin () +``` + + + +### function begin (2/2) + +```cpp +std::vector< T >::const_iterator Rew::Bucket::begin () const +``` + + + +### function end (1/2) + +```cpp +std::vector< T >::iterator Rew::Bucket::end () +``` + + + +### function end (2/2) + +```cpp +std::vector< T >::const_iterator Rew::Bucket::end () const +``` + + + +### function clear + +```cpp +void Rew::Bucket::clear () +``` + + + +### function operator[] (1/2) + +```cpp +std::vector< T >::value_type & Rew::Bucket::operator[] ( + size_t i +) +``` + + + +### function operator[] (2/2) + +```cpp +const std::vector< T >::value_type & Rew::Bucket::operator[] ( + size_t i +) const +``` + + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/decoder/bucket.h` diff --git a/doxygen/class_rew_1_1_byte_assembler.md b/doxygen/class_rew_1_1_byte_assembler.md new file mode 100644 index 0000000000000000000000000000000000000000..aedd49dd86aea2321cfe4449421f9359346cd027 --- /dev/null +++ b/doxygen/class_rew_1_1_byte_assembler.md @@ -0,0 +1,100 @@ +--- +title: class Rew::ByteAssembler +meta: + - name: keywords + content: Rew::ByteAssembler ByteAssembler ByteAssembler ByteAssembler swap operator= operator= operator() +--- + +# class Rew::ByteAssembler + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) **::** [**ByteAssembler**](class_rew_1_1_byte_assembler.md) + + +## Public Functions + +|Type|Name| +|-----|-----| +||[**ByteAssembler**](class_rew_1_1_byte_assembler.md#function-byteassembler-1-3) () | +||[**ByteAssembler**](class_rew_1_1_byte_assembler.md#function-byteassembler-2-3) (**[ByteAssembler](class_rew_1_1_byte_assembler.md)** && other) noexcept | +||[**ByteAssembler**](class_rew_1_1_byte_assembler.md#function-byteassembler-3-3) (const **[ByteAssembler](class_rew_1_1_byte_assembler.md)** & other) = delete | +|void|[**swap**](class_rew_1_1_byte_assembler.md#function-swap) (**[ByteAssembler](class_rew_1_1_byte_assembler.md)** & other) noexcept | +|**[ByteAssembler](class_rew_1_1_byte_assembler.md)** &|[**operator=**](class_rew_1_1_byte_assembler.md#function-operator-1-2) (**[ByteAssembler](class_rew_1_1_byte_assembler.md)** && other) noexcept | +|**[ByteAssembler](class_rew_1_1_byte_assembler.md)** &|[**operator=**](class_rew_1_1_byte_assembler.md#function-operator-2-2) (const **[ByteAssembler](class_rew_1_1_byte_assembler.md)** & other) = delete | +|void|[**operator()**](class_rew_1_1_byte_assembler.md#function-operator()) (unsigned char magnitude, const std::function< void(unsigned char)> & callback) | + + +## Public Functions Documentation + +### function ByteAssembler (1/3) + +```cpp +Rew::ByteAssembler::ByteAssembler () +``` + + + +### function ByteAssembler (2/3) + +```cpp +Rew::ByteAssembler::ByteAssembler ( + ByteAssembler && other +) noexcept +``` + + + +### function ByteAssembler (3/3) + +```cpp +Rew::ByteAssembler::ByteAssembler ( + const ByteAssembler & other +) = delete +``` + + + +### function swap + +```cpp +void Rew::ByteAssembler::swap ( + ByteAssembler & other +) noexcept +``` + + + +### function operator= (1/2) + +```cpp +ByteAssembler & Rew::ByteAssembler::operator= ( + ByteAssembler && other +) noexcept +``` + + + +### function operator= (2/2) + +```cpp +ByteAssembler & Rew::ByteAssembler::operator= ( + const ByteAssembler & other +) = delete +``` + + + +### function operator() + +```cpp +void Rew::ByteAssembler::operator() ( + unsigned char magnitude, + const std::function< void(unsigned char)> & callback +) +``` + + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/decoder/byte\_assembler.h` diff --git a/doxygen/class_rew_1_1_decoder.md b/doxygen/class_rew_1_1_decoder.md new file mode 100644 index 0000000000000000000000000000000000000000..e5bfa6778ef72b48dd192351e4bf4b1f128b1153 --- /dev/null +++ b/doxygen/class_rew_1_1_decoder.md @@ -0,0 +1,151 @@ +--- +title: class Rew::Decoder +meta: + - name: keywords + content: Rew::Decoder Decoder Decoder Decoder ~Decoder swap operator= operator= operator() operator() getLowMagnitude getHighMagnitude +--- + +# class Rew::Decoder + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) **::** [**Decoder**](class_rew_1_1_decoder.md) + + +## Public Functions + +|Type|Name| +|-----|-----| +||[**Decoder**](class_rew_1_1_decoder.md#function-decoder-1-3) (size\_t lowToneFreq = 2400, size\_t highToneFreq = 4800, double sampleLengthMs = 1.25) | +||[**Decoder**](class_rew_1_1_decoder.md#function-decoder-2-3) (**[Decoder](class_rew_1_1_decoder.md)** && other) noexcept | +||[**Decoder**](class_rew_1_1_decoder.md#function-decoder-3-3) (const **[Decoder](class_rew_1_1_decoder.md)** & other) = delete | +|virtual |[**~Decoder**](class_rew_1_1_decoder.md#function-decoder) () = default | +|void|[**swap**](class_rew_1_1_decoder.md#function-swap) (**[Decoder](class_rew_1_1_decoder.md)** & other) noexcept | +|**[Decoder](class_rew_1_1_decoder.md)** &|[**operator=**](class_rew_1_1_decoder.md#function-operator-1-2) (**[Decoder](class_rew_1_1_decoder.md)** && other) noexcept | +|**[Decoder](class_rew_1_1_decoder.md)** &|[**operator=**](class_rew_1_1_decoder.md#function-operator-2-2) (const **[Decoder](class_rew_1_1_decoder.md)** & other) = delete | +|void|[**operator()**](class_rew_1_1_decoder.md#function-operator()-1-2) (const float \* samples, size\_t length, const std::function< void(unsigned char)> & callback) | +|void|[**operator()**](class_rew_1_1_decoder.md#function-operator()-2-2) (const float \* samples, size\_t length, const std::function< void(float, float)> & callback) | +|float \*|[**getLowMagnitude**](class_rew_1_1_decoder.md#function-getlowmagnitude) (const float \* samples, size\_t length) | +|float \*|[**getHighMagnitude**](class_rew_1_1_decoder.md#function-gethighmagnitude) (const float \* samples, size\_t length) | + + +## Public Functions Documentation + +### function Decoder (1/3) + +```cpp +Rew::Decoder::Decoder ( + size_t lowToneFreq = 2400, + size_t highToneFreq = 4800, + double sampleLengthMs = 1.25 +) +``` + + + +### function Decoder (2/3) + +```cpp +Rew::Decoder::Decoder ( + Decoder && other +) noexcept +``` + + + +### function Decoder (3/3) + +```cpp +Rew::Decoder::Decoder ( + const Decoder & other +) = delete +``` + + + +### function ~Decoder + +```cpp +virtual Rew::Decoder::~Decoder () = default +``` + + + +### function swap + +```cpp +void Rew::Decoder::swap ( + Decoder & other +) noexcept +``` + + + +### function operator= (1/2) + +```cpp +Decoder & Rew::Decoder::operator= ( + Decoder && other +) noexcept +``` + + + +### function operator= (2/2) + +```cpp +Decoder & Rew::Decoder::operator= ( + const Decoder & other +) = delete +``` + + + +### function operator() (1/2) + +```cpp +void Rew::Decoder::operator() ( + const float * samples, + size_t length, + const std::function< void(unsigned char)> & callback +) +``` + + + +### function operator() (2/2) + +```cpp +void Rew::Decoder::operator() ( + const float * samples, + size_t length, + const std::function< void(float, float)> & callback +) +``` + + + +### function getLowMagnitude + +```cpp +float * Rew::Decoder::getLowMagnitude ( + const float * samples, + size_t length +) +``` + + + +### function getHighMagnitude + +```cpp +float * Rew::Decoder::getHighMagnitude ( + const float * samples, + size_t length +) +``` + + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/decoder/decoder.h` diff --git a/doxygen/class_rew_1_1_encoder.md b/doxygen/class_rew_1_1_encoder.md new file mode 100644 index 0000000000000000000000000000000000000000..dd705f030d40148fc03e7ce919484a78871cb3f7 --- /dev/null +++ b/doxygen/class_rew_1_1_encoder.md @@ -0,0 +1,115 @@ +--- +title: class Rew::Encoder +meta: + - name: keywords + content: Rew::Encoder Encoder Encoder Encoder swap operator= operator= operator() getNumOfSamples +--- + +# class Rew::Encoder + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) **::** [**Encoder**](class_rew_1_1_encoder.md) + + +## Public Functions + +|Type|Name| +|-----|-----| +||[**Encoder**](class_rew_1_1_encoder.md#function-encoder-1-3) (size\_t lowToneFreq = 2400, size\_t highToneFreq = 4800, double sampleLengthMs = 1.25) | +||[**Encoder**](class_rew_1_1_encoder.md#function-encoder-2-3) (**[Encoder](class_rew_1_1_encoder.md)** && other) noexcept | +||[**Encoder**](class_rew_1_1_encoder.md#function-encoder-3-3) (const **[Encoder](class_rew_1_1_encoder.md)** & other) = delete | +|void|[**swap**](class_rew_1_1_encoder.md#function-swap) (**[Encoder](class_rew_1_1_encoder.md)** & other) noexcept | +|**[Encoder](class_rew_1_1_encoder.md)** &|[**operator=**](class_rew_1_1_encoder.md#function-operator-1-2) (**[Encoder](class_rew_1_1_encoder.md)** && other) noexcept | +|**[Encoder](class_rew_1_1_encoder.md)** &|[**operator=**](class_rew_1_1_encoder.md#function-operator-2-2) (const **[Encoder](class_rew_1_1_encoder.md)** & other) = delete | +|float \*|[**operator()**](class_rew_1_1_encoder.md#function-operator()) (const unsigned char \* data, size\_t length) const | +|size\_t|[**getNumOfSamples**](class_rew_1_1_encoder.md#function-getnumofsamples) (size\_t length) const | + + +## Public Functions Documentation + +### function Encoder (1/3) + +```cpp +Rew::Encoder::Encoder ( + size_t lowToneFreq = 2400, + size_t highToneFreq = 4800, + double sampleLengthMs = 1.25 +) +``` + + + +### function Encoder (2/3) + +```cpp +Rew::Encoder::Encoder ( + Encoder && other +) noexcept +``` + + + +### function Encoder (3/3) + +```cpp +Rew::Encoder::Encoder ( + const Encoder & other +) = delete +``` + + + +### function swap + +```cpp +void Rew::Encoder::swap ( + Encoder & other +) noexcept +``` + + + +### function operator= (1/2) + +```cpp +Encoder & Rew::Encoder::operator= ( + Encoder && other +) noexcept +``` + + + +### function operator= (2/2) + +```cpp +Encoder & Rew::Encoder::operator= ( + const Encoder & other +) = delete +``` + + + +### function operator() + +```cpp +float * Rew::Encoder::operator() ( + const unsigned char * data, + size_t length +) const +``` + + + +### function getNumOfSamples + +```cpp +size_t Rew::Encoder::getNumOfSamples ( + size_t length +) const +``` + + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/encoder.h` diff --git a/doxygen/class_rew_1_1_goertzel.md b/doxygen/class_rew_1_1_goertzel.md new file mode 100644 index 0000000000000000000000000000000000000000..da98ea978609ac49cbe9e8843bfe1beeeb82326a --- /dev/null +++ b/doxygen/class_rew_1_1_goertzel.md @@ -0,0 +1,66 @@ +--- +title: class Rew::Goertzel +meta: + - name: keywords + content: Rew::Goertzel Goertzel ~Goertzel operator() getBlockSize +--- + +# class Rew::Goertzel + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) **::** [**Goertzel**](class_rew_1_1_goertzel.md) + + +## Public Functions + +|Type|Name| +|-----|-----| +||[**Goertzel**](class_rew_1_1_goertzel.md#function-goertzel) (size\_t blockSize, float targetFrequency, float sampleRate) | +|virtual |[**~Goertzel**](class_rew_1_1_goertzel.md#function-goertzel) () = default | +|float|[**operator()**](class_rew_1_1_goertzel.md#function-operator()) (const float \* samples) | +|size\_t|[**getBlockSize**](class_rew_1_1_goertzel.md#function-getblocksize) () const | + + +## Public Functions Documentation + +### function Goertzel + +```cpp +Rew::Goertzel::Goertzel ( + size_t blockSize, + float targetFrequency, + float sampleRate +) +``` + + + +### function ~Goertzel + +```cpp +virtual Rew::Goertzel::~Goertzel () = default +``` + + + +### function operator() + +```cpp +float Rew::Goertzel::operator() ( + const float * samples +) +``` + + + +### function getBlockSize + +```cpp +size_t Rew::Goertzel::getBlockSize () const +``` + + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/decoder/goertzel.h` diff --git a/doxygen/class_rew_1_1_synth.md b/doxygen/class_rew_1_1_synth.md new file mode 100644 index 0000000000000000000000000000000000000000..fb74466e59ad435ef3de2afb7d1fb3f20f40716c --- /dev/null +++ b/doxygen/class_rew_1_1_synth.md @@ -0,0 +1,39 @@ +--- +title: class Rew::Synth +meta: + - name: keywords + content: Rew::Synth operator() +--- + +# class Rew::Synth + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) **::** [**Synth**](class_rew_1_1_synth.md) + + + + +Inherited by the following classes: **[Rew::ToneSynth](class_rew_1_1_tone_synth.md)** + +## Public Functions + +|Type|Name| +|-----|-----| +|virtual size\_t|[**operator()**](class_rew_1_1_synth.md#function-operator()) (float \* dst) const = 0| + + +## Public Functions Documentation + +### function operator() + +```cpp +virtual size_t Rew::Synth::operator() ( + float * dst +) const = 0 +``` + + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/synth.h` diff --git a/doxygen/class_rew_1_1_tone_synth.md b/doxygen/class_rew_1_1_tone_synth.md new file mode 100644 index 0000000000000000000000000000000000000000..3a93bf7f5a620ffafc3583c21029af2eab24baa8 --- /dev/null +++ b/doxygen/class_rew_1_1_tone_synth.md @@ -0,0 +1,108 @@ +--- +title: class Rew::ToneSynth +meta: + - name: keywords + content: Rew::ToneSynth ToneSynth ToneSynth ToneSynth operator= operator= operator() getSamplesPerBlock +--- + +# class Rew::ToneSynth + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) **::** [**ToneSynth**](class_rew_1_1_tone_synth.md) + + + + +Inherits the following classes: **[Rew::Synth](class_rew_1_1_synth.md)** + +## Public Functions + +|Type|Name| +|-----|-----| +||[**ToneSynth**](class_rew_1_1_tone_synth.md#function-tonesynth-1-3) (size\_t frequency, size\_t sampleRate, double ms) | +||[**ToneSynth**](class_rew_1_1_tone_synth.md#function-tonesynth-2-3) (**[ToneSynth](class_rew_1_1_tone_synth.md)** && other) noexcept | +||[**ToneSynth**](class_rew_1_1_tone_synth.md#function-tonesynth-3-3) (const **[ToneSynth](class_rew_1_1_tone_synth.md)** & other) = delete | +|**[ToneSynth](class_rew_1_1_tone_synth.md)** &|[**operator=**](class_rew_1_1_tone_synth.md#function-operator-1-2) (**[ToneSynth](class_rew_1_1_tone_synth.md)** && other) noexcept | +|**[ToneSynth](class_rew_1_1_tone_synth.md)** &|[**operator=**](class_rew_1_1_tone_synth.md#function-operator-2-2) (const **[ToneSynth](class_rew_1_1_tone_synth.md)** & other) = delete | +|virtual size\_t|[**operator()**](class_rew_1_1_tone_synth.md#function-operator()) (float \* dst) override const | +|size\_t|[**getSamplesPerBlock**](class_rew_1_1_tone_synth.md#function-getsamplesperblock) () const | + + +## Public Functions Documentation + +### function ToneSynth (1/3) + +```cpp +Rew::ToneSynth::ToneSynth ( + size_t frequency, + size_t sampleRate, + double ms +) +``` + + + +### function ToneSynth (2/3) + +```cpp +Rew::ToneSynth::ToneSynth ( + ToneSynth && other +) noexcept +``` + + + +### function ToneSynth (3/3) + +```cpp +Rew::ToneSynth::ToneSynth ( + const ToneSynth & other +) = delete +``` + + + +### function operator= (1/2) + +```cpp +ToneSynth & Rew::ToneSynth::operator= ( + ToneSynth && other +) noexcept +``` + + + +### function operator= (2/2) + +```cpp +ToneSynth & Rew::ToneSynth::operator= ( + const ToneSynth & other +) = delete +``` + + + +### function operator() + +```cpp +virtual size_t Rew::ToneSynth::operator() ( + float * dst +) const +``` + + + +Implements **[Synth::operator()](class_rew_1_1_synth.md#function-operator())** + + +### function getSamplesPerBlock + +```cpp +size_t Rew::ToneSynth::getSamplesPerBlock () const +``` + + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/tone\_synth.h` diff --git a/doxygen/class_rew_1_1_wav_writer.md b/doxygen/class_rew_1_1_wav_writer.md new file mode 100644 index 0000000000000000000000000000000000000000..e1724d6e9f6bc8d55e893e7e614b1034e1cf982b --- /dev/null +++ b/doxygen/class_rew_1_1_wav_writer.md @@ -0,0 +1,138 @@ +--- +title: class Rew::WavWriter +meta: + - name: keywords + content: Rew::WavWriter WavWriter ~WavWriter open close writeChunk writeFooter eof getPos +--- + +# class Rew::WavWriter + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) **::** [**WavWriter**](class_rew_1_1_wav_writer.md) + + +WAV file saver. + + +Inherits the following classes: **[Rew::AudioWriter](class_rew_1_1_audio_writer.md)** + +## Public Functions + +|Type|Name| +|-----|-----| +||[**WavWriter**](class_rew_1_1_wav_writer.md#function-wavwriter) () | +|virtual |[**~WavWriter**](class_rew_1_1_wav_writer.md#function-wavwriter) () | +|virtual bool|[**open**](class_rew_1_1_wav_writer.md#function-open) (const std::string & path, size\_t size, int bitsPerSample, int sampleRate, int numChannels) override <br>Opens a file for writing. | +|virtual void|[**close**](class_rew_1_1_wav_writer.md#function-close) () override <br>Closes the file. | +|virtual bool|[**writeChunk**](class_rew_1_1_wav_writer.md#function-writechunk) (const unsigned char \* data, size\_t \* bytesWritten) override <br>Writes a chunk of data to file. | +|virtual bool|[**writeFooter**](class_rew_1_1_wav_writer.md#function-writefooter) () override <br>Writes a footer. | +|virtual bool|[**eof**](class_rew_1_1_wav_writer.md#function-eof) () override const <br>Checks if end of file. | +|virtual size\_t|[**getPos**](class_rew_1_1_wav_writer.md#function-getpos) () override const <br>Returns current write position in bytes. | + + +## Public Functions Documentation + +### function WavWriter + +```cpp +Rew::WavWriter::WavWriter () +``` + + + +### function ~WavWriter + +```cpp +virtual Rew::WavWriter::~WavWriter () +``` + + + +### function open + +```cpp +virtual bool Rew::WavWriter::open ( + const std::string & path, + size_t size, + int bitsPerSample, + int sampleRate, + int numChannels +) +``` + +Opens a file for writing. + + +Implements **[AudioWriter::open](class_rew_1_1_audio_writer.md#function-open)** + + +### function close + +```cpp +virtual void Rew::WavWriter::close () +``` + +Closes the file. + + +Implements **[AudioWriter::close](class_rew_1_1_audio_writer.md#function-close)** + + +### function writeChunk + +```cpp +virtual bool Rew::WavWriter::writeChunk ( + const unsigned char * data, + size_t * bytesWritten +) +``` + +Writes a chunk of data to file. + + + +**See also:** **[getChunkSize](class_rew_1_1_audio_writer.md#function-getchunksize)** + + +Implements **[AudioWriter::writeChunk](class_rew_1_1_audio_writer.md#function-writechunk)** + + +### function writeFooter + +```cpp +virtual bool Rew::WavWriter::writeFooter () +``` + +Writes a footer. + + +Implements **[AudioWriter::writeFooter](class_rew_1_1_audio_writer.md#function-writefooter)** + + +### function eof + +```cpp +virtual bool Rew::WavWriter::eof () const +``` + +Checks if end of file. + + +Implements **[AudioWriter::eof](class_rew_1_1_audio_writer.md#function-eof)** + + +### function getPos + +```cpp +virtual size_t Rew::WavWriter::getPos () const +``` + +Returns current write position in bytes. + + +Implements **[AudioWriter::getPos](class_rew_1_1_audio_writer.md#function-getpos)** + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/wav\_writer.h` diff --git a/doxygen/classes.md b/doxygen/classes.md new file mode 100644 index 0000000000000000000000000000000000000000..516f86d96c930b3e971a63d5adf09152702c28e1 --- /dev/null +++ b/doxygen/classes.md @@ -0,0 +1,50 @@ +--- +title: Class Index +meta: + - name: keywords + content: AudioWriter Bucket ByteAssembler Decoder Encoder Goertzel Synth ToneSynth WavWriter +--- + +# Class Index + +## A + +* [**AudioWriter**](class_rew_1_1_audio_writer.md) ([**Rew**](namespace_rew.md)) + + +## B + +* [**Bucket**](class_rew_1_1_bucket.md) ([**Rew**](namespace_rew.md)) +* [**ByteAssembler**](class_rew_1_1_byte_assembler.md) ([**Rew**](namespace_rew.md)) + + +## D + +* [**Decoder**](class_rew_1_1_decoder.md) ([**Rew**](namespace_rew.md)) + + +## E + +* [**Encoder**](class_rew_1_1_encoder.md) ([**Rew**](namespace_rew.md)) + + +## G + +* [**Goertzel**](class_rew_1_1_goertzel.md) ([**Rew**](namespace_rew.md)) + + +## S + +* [**Synth**](class_rew_1_1_synth.md) ([**Rew**](namespace_rew.md)) + + +## T + +* [**ToneSynth**](class_rew_1_1_tone_synth.md) ([**Rew**](namespace_rew.md)) + + +## W + +* [**WavWriter**](class_rew_1_1_wav_writer.md) ([**Rew**](namespace_rew.md)) + + diff --git a/doxygen/config_8h.md b/doxygen/config_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..72adf1222393a16aae0eae1faeb354c1c7b7ef40 --- /dev/null +++ b/doxygen/config_8h.md @@ -0,0 +1,94 @@ +--- +title: file config.h +meta: + - name: keywords + content: config.h REW_API REW_NAMESPACE NOEXCEPT RAD_TO_DEG DEG_TO_RAD M_PI DEFAULT_LOW_TONE_FREQ DEFAULT_HIGH_TONE_FREQ +--- + +# file config.h + +**[Go to the source code of this file.](config_8h_source.md)** +## Defines + +|Type|Name| +|-----|-----| +||[**REW\_API**](config_8h.md#define-rew-api)| +||[**REW\_NAMESPACE**](config_8h.md#define-rew-namespace)| +||[**NOEXCEPT**](config_8h.md#define-noexcept)| +||[**RAD\_TO\_DEG**](config_8h.md#define-rad-to-deg)| +||[**DEG\_TO\_RAD**](config_8h.md#define-deg-to-rad)| +||[**M\_PI**](config_8h.md#define-m-pi)| +||[**DEFAULT\_LOW\_TONE\_FREQ**](config_8h.md#define-default-low-tone-freq)| +||[**DEFAULT\_HIGH\_TONE\_FREQ**](config_8h.md#define-default-high-tone-freq)| + + +## Defines Documentation + +### define REW\_API + +```cpp +define REW_API; +``` + + + +### define REW\_NAMESPACE + +```cpp +define REW_NAMESPACE; +``` + + + +### define NOEXCEPT + +```cpp +define NOEXCEPT; +``` + + + +### define RAD\_TO\_DEG + +```cpp +define RAD_TO_DEG; +``` + + + +### define DEG\_TO\_RAD + +```cpp +define DEG_TO_RAD; +``` + + + +### define M\_PI + +```cpp +define M_PI; +``` + + + +### define DEFAULT\_LOW\_TONE\_FREQ + +```cpp +define DEFAULT_LOW_TONE_FREQ; +``` + + + +### define DEFAULT\_HIGH\_TONE\_FREQ + +```cpp +define DEFAULT_HIGH_TONE_FREQ; +``` + + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/config.h` diff --git a/doxygen/config_8h_source.md b/doxygen/config_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..d59219a74f8f6bf6cdb217cb9a7112636af9f04e --- /dev/null +++ b/doxygen/config_8h_source.md @@ -0,0 +1,124 @@ +--- +title: config.h File Reference +meta: + - name: keywords + content: config.h file +--- + +# config.h File Reference + +**[Go to the documentation of this file.](config_8h.md)** +Source: `include/config.h` + + + + + + + + + + + + + + + +```cpp +/*** This file is part of FineFramework project ***/ +#ifndef REW_CONFIG +#define REW_CONFIG + +// Using Visual Studio +#ifdef _MSC_VER +#define REW_WINDOWS_MSVC 1 +#define REW_WINDOWS 1 +#pragma warning( disable: 4251 ) +#endif + +// Using MinGW +#ifdef __MINGW32__ +#define REW_WINDOWS_MINGW 1 +#define REW_WINDOWS 1 +#endif + +// Using Linux GCC +#ifdef __linux__ +#define REW_LINUX_GCC 1 +#define REW_LINUX 1 +#endif + +// Using MAX OS X +#if defined(__APPLE__) && defined(__MACH__) +#define REW_OSX_CLANG 1 +#define REW_OSX 1 +#endif + +#if !defined(REW_WINDOWS_MSVC) && !defined(REW_WINDOWS_MINGW) && !defined(REW_LINUX_GCC) && !defined(REW_OSX_CLANG) +#error Please use Visual Studio, MinGW, Linux GCC, or OS X Clang to compile COM3001! +#endif +#if !defined(REW_WINDOWS) && !defined(REW_LINUX) && !defined(REW_OSX) +#error Target platform not selected! +#endif + +// COM3001 export for Windows +#if defined(REW_WINDOWS) +#ifdef REW_EXPORTS +#define REW_API __declspec(dllexport) +#else +#define REW_API __declspec(dllimport) +#endif +#else +#define REW_API +#endif + +#define REW_NAMESPACE namespace Rew + +#if !defined(REW_API) +#error REW_API dllexport not defined! +#endif + +#if !defined(HAS_NOEXCEPT) +#if defined(__clang__) +#if __has_feature(cxx_noexcept) +#define HAS_NOEXCEPT +#endif +#else +#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 || defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026 +#define HAS_NOEXCEPT +#endif +#endif + +#ifdef HAS_NOEXCEPT +#define NOEXCEPT noexcept +#else +#define NOEXCEPT +#endif +#endif + +#include <cstddef> + +#ifndef RAD_TO_DEG +#define RAD_TO_DEG 57.2957795131 +#endif +#ifndef DEG_TO_RAD +#define DEG_TO_RAD 0.01745329251 +#endif +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#ifndef DEFAULT_LOW_TONE_FREQ +#define DEFAULT_LOW_TONE_FREQ 2400 +#endif + +#ifndef DEFAULT_HIGH_TONE_FREQ +#define DEFAULT_HIGH_TONE_FREQ 4800 +#endif + +#endif +``` + + + + diff --git a/doxygen/decoder_8h.md b/doxygen/decoder_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..19f5db52a5ab550e82bfb11b7e532f7af5dca24a --- /dev/null +++ b/doxygen/decoder_8h.md @@ -0,0 +1,21 @@ +--- +title: file decoder.h +meta: + - name: keywords + content: decoder.h Rew::Decoder +--- + +# file decoder.h + +**[Go to the source code of this file.](decoder_8h_source.md)** +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::Decoder**](class_rew_1_1_decoder.md)| + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/decoder/decoder.h` diff --git a/doxygen/decoder_8h_source.md b/doxygen/decoder_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..a04fe90b4782f9022a969a34411797da98d56306 --- /dev/null +++ b/doxygen/decoder_8h_source.md @@ -0,0 +1,67 @@ +--- +title: decoder.h File Reference +meta: + - name: keywords + content: decoder.h file +--- + +# decoder.h File Reference + +**[Go to the documentation of this file.](decoder_8h.md)** +Source: `include/decoder/decoder.h` + + + + + + + + + + + + + +```cpp +#ifndef REW_DECODER_H +#define REW_DECODER_H + +#include "goertzel.h" +#include <utility> +#include <functional> +#include <memory> +#include "byte_assembler.h" + +REW_NAMESPACE { + class REW_API Decoder { + public: + Decoder( + size_t lowToneFreq = DEFAULT_LOW_TONE_FREQ, + size_t highToneFreq = DEFAULT_HIGH_TONE_FREQ, + double sampleLengthMs = 1.25); + Decoder(Decoder&& other) noexcept; + Decoder(const Decoder& other) = delete; + virtual ~Decoder() = default; + void swap(Decoder& other) noexcept; + Decoder& operator = (Decoder&& other) noexcept; + Decoder& operator = (const Decoder& other) = delete; + + void operator()(const float* samples, size_t length, const std::function<void(unsigned char)>& callback); + void operator()(const float* samples, size_t length, const std::function<void(float, float)>& callback); + float* getLowMagnitude(const float* samples, size_t length); + float* getHighMagnitude(const float* samples, size_t length); + private: + size_t blockSize; + Goertzel lowGoertzel; + Goertzel highGoertzel; + std::unique_ptr<float> buffer; + ByteAssembler byteAssembler; + }; +} + +#endif +``` + + + + diff --git a/doxygen/dir_acb9e55bfefdf4d43f13fff6aa240ad7.md b/doxygen/dir_acb9e55bfefdf4d43f13fff6aa240ad7.md new file mode 100644 index 0000000000000000000000000000000000000000..fd885ec3e1dd5e57c135f36fd2d9250c6a1a3992 --- /dev/null +++ b/doxygen/dir_acb9e55bfefdf4d43f13fff6aa240ad7.md @@ -0,0 +1,16 @@ +--- +title: include/encoder Directory Reference +meta: + - name: keywords + content: audio_writer.h encoder.h synth.h tone_synth.h wav_writer.h +--- + +# include/encoder Directory Reference + +## Files + +* **[audio\_writer.h](audio__writer_8h.md)** +* **[encoder.h](encoder_8h.md)** +* **[synth.h](synth_8h.md)** +* **[tone\_synth.h](tone__synth_8h.md)** +* **[wav\_writer.h](wav__writer_8h.md)** diff --git a/doxygen/dir_d44c64559bbebec7f509842c48db8b23.md b/doxygen/dir_d44c64559bbebec7f509842c48db8b23.md new file mode 100644 index 0000000000000000000000000000000000000000..5b9e54d1e4d421423b044f665b18ef69f7555c2e --- /dev/null +++ b/doxygen/dir_d44c64559bbebec7f509842c48db8b23.md @@ -0,0 +1,14 @@ +--- +title: include Directory Reference +meta: + - name: keywords + content: include/decoder include/encoder config.h +--- + +# include Directory Reference + +## Files + +* **[include/decoder/](dir_ef4c7dabb16c9bee1e17c47c3bb25728.md)** +* **[include/encoder/](dir_acb9e55bfefdf4d43f13fff6aa240ad7.md)** +* **[config.h](config_8h.md)** diff --git a/doxygen/dir_ef4c7dabb16c9bee1e17c47c3bb25728.md b/doxygen/dir_ef4c7dabb16c9bee1e17c47c3bb25728.md new file mode 100644 index 0000000000000000000000000000000000000000..201a6319f650196f2c6b03ded9fe2fd6240a688e --- /dev/null +++ b/doxygen/dir_ef4c7dabb16c9bee1e17c47c3bb25728.md @@ -0,0 +1,15 @@ +--- +title: include/decoder Directory Reference +meta: + - name: keywords + content: bucket.h byte_assembler.h decoder.h goertzel.h +--- + +# include/decoder Directory Reference + +## Files + +* **[bucket.h](bucket_8h.md)** +* **[byte\_assembler.h](byte__assembler_8h.md)** +* **[decoder.h](decoder_8h.md)** +* **[goertzel.h](goertzel_8h.md)** diff --git a/doxygen/encoder_8h.md b/doxygen/encoder_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..2f7856c384c2806e69bab72fd3eabecdd19acde6 --- /dev/null +++ b/doxygen/encoder_8h.md @@ -0,0 +1,21 @@ +--- +title: file encoder.h +meta: + - name: keywords + content: encoder.h Rew::Encoder +--- + +# file encoder.h + +**[Go to the source code of this file.](encoder_8h_source.md)** +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::Encoder**](class_rew_1_1_encoder.md)| + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/encoder.h` diff --git a/doxygen/encoder_8h_source.md b/doxygen/encoder_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..a49e10ee6ba4471cf5ebf4763bd73e84f87d3180 --- /dev/null +++ b/doxygen/encoder_8h_source.md @@ -0,0 +1,58 @@ +--- +title: encoder.h File Reference +meta: + - name: keywords + content: encoder.h file +--- + +# encoder.h File Reference + +**[Go to the documentation of this file.](encoder_8h.md)** +Source: `include/encoder/encoder.h` + + + + + + + + + + + +```cpp +#ifndef REW_ENCODER_H +#define REW_ENCODER_H + +#include "../config.h" +#include "tone_synth.h" +#include "wav_writer.h" + +REW_NAMESPACE { + class REW_API Encoder { + public: + Encoder( + size_t lowToneFreq = DEFAULT_LOW_TONE_FREQ, + size_t highToneFreq = DEFAULT_HIGH_TONE_FREQ, + double sampleLengthMs = 1.25); + Encoder(Encoder&& other) noexcept; + Encoder(const Encoder& other) = delete; + void swap(Encoder& other) noexcept; + Encoder& operator = (Encoder&& other) noexcept; + Encoder& operator = (const Encoder& other) = delete; + + float* operator()(const unsigned char* data, size_t length) const; + size_t getNumOfSamples(size_t length) const; + private: + ToneSynth lowTone; + ToneSynth highTone; + std::unique_ptr<float[]> nullTone; + }; +} + +#endif +``` + + + + diff --git a/doxygen/enumerations.md b/doxygen/enumerations.md new file mode 100644 index 0000000000000000000000000000000000000000..ea1605e330778fae8d2cc03485447cac6b0d1860 --- /dev/null +++ b/doxygen/enumerations.md @@ -0,0 +1,7 @@ +--- +title: Enumeration Index +--- + +# Enumeration Index + +Here is a list of all enumerations with links to the class documentation for each member: diff --git a/doxygen/files.md b/doxygen/files.md new file mode 100644 index 0000000000000000000000000000000000000000..d87aa247e2203af97441beeb4ff2f6b25ffb318e --- /dev/null +++ b/doxygen/files.md @@ -0,0 +1,23 @@ +--- +title: Files +meta: + - name: keywords + content: config.h bucket.h byte_assembler.h decoder.h goertzel.h decoder audio_writer.h encoder.h synth.h tone_synth.h wav_writer.h encoder include +--- + +# File List + +Here is a list of all documented files with brief descriptions: +* **[include/](dir_d44c64559bbebec7f509842c48db8b23.md)** + * **[config.h](config_8h.md)** + * **[decoder/](dir_ef4c7dabb16c9bee1e17c47c3bb25728.md)** + * **[bucket.h](bucket_8h.md)** + * **[byte\_assembler.h](byte__assembler_8h.md)** + * **[decoder.h](decoder_8h.md)** + * **[goertzel.h](goertzel_8h.md)** + * **[encoder/](dir_acb9e55bfefdf4d43f13fff6aa240ad7.md)** + * **[audio\_writer.h](audio__writer_8h.md)** + * **[encoder.h](encoder_8h.md)** + * **[synth.h](synth_8h.md)** + * **[tone\_synth.h](tone__synth_8h.md)** + * **[wav\_writer.h](wav__writer_8h.md)** diff --git a/doxygen/functions.md b/doxygen/functions.md new file mode 100644 index 0000000000000000000000000000000000000000..0a3b6dc45054d24c49da599ddf7885d6222048fd --- /dev/null +++ b/doxygen/functions.md @@ -0,0 +1,113 @@ +--- +title: Function Index +meta: + - name: keywords + content: AudioWriter::AudioWriter ToneSynth::allocate Bucket::Bucket ByteAssembler::ByteAssembler Bucket::begin Bucket::clear WavWriter::close ByteAssembler::countValue Decoder::Decoder Encoder::Encoder Bucket::end WavWriter::eof Goertzel::Goertzel AudioWriter::getBitsPerSample Goertzel::getBlockSize AudioWriter::getChunkSize Decoder::getHighMagnitude Decoder::getLowMagnitude Goertzel::getMagnitude AudioWriter::getNumOfChannels Encoder::getNumOfSamples WavWriter::getPos AudioWriter::getSampleRate ToneSynth::getSamplesPerBlock AudioWriter::getSize Goertzel::init AudioWriter::isOpen WavWriter::open AudioWriter::operator bool ToneSynth::operator() ToneSynth::operator= Bucket::operator[] Goertzel::processSample Bucket::pushBack Goertzel::reset Bucket::size Encoder::swap ToneSynth::ToneSynth ByteAssembler::toByte WavWriter::WavWriter WavWriter::writeChunk WavWriter::writeFooter AudioWriter::~AudioWriter Bucket::~Bucket Decoder::~Decoder Goertzel::~Goertzel WavWriter::~WavWriter +--- + +# Function Index + +Here is a list of all functions with links to the class documentation for each member: +## A + +* **AudioWriter** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-audiowriter)) +* **allocate** ([**Rew::ToneSynth**](class_rew_1_1_tone_synth.md#function-allocate)) + + +## B + +* **Bucket** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-bucket-1-3)) +* **ByteAssembler** ([**Rew::ByteAssembler**](class_rew_1_1_byte_assembler.md#function-byteassembler-1-3)) +* **begin** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-begin-1-2)) + + +## C + +* **clear** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-clear)) +* **close** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-close), [**Rew::WavWriter**](class_rew_1_1_wav_writer.md#function-close)) +* **countValue** ([**Rew::ByteAssembler**](class_rew_1_1_byte_assembler.md#function-countvalue)) + + +## D + +* **Decoder** ([**Rew::Decoder**](class_rew_1_1_decoder.md#function-decoder-1-3)) + + +## E + +* **Encoder** ([**Rew::Encoder**](class_rew_1_1_encoder.md#function-encoder-1-3)) +* **end** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-end-1-2)) +* **eof** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-eof), [**Rew::WavWriter**](class_rew_1_1_wav_writer.md#function-eof)) + + +## G + +* **Goertzel** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#function-goertzel)) +* **getBitsPerSample** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-getbitspersample)) +* **getBlockSize** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#function-getblocksize)) +* **getChunkSize** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-getchunksize)) +* **getHighMagnitude** ([**Rew::Decoder**](class_rew_1_1_decoder.md#function-gethighmagnitude)) +* **getLowMagnitude** ([**Rew::Decoder**](class_rew_1_1_decoder.md#function-getlowmagnitude)) +* **getMagnitude** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#function-getmagnitude)) +* **getNumOfChannels** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-getnumofchannels)) +* **getNumOfSamples** ([**Rew::Encoder**](class_rew_1_1_encoder.md#function-getnumofsamples)) +* **getPos** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-getpos), [**Rew::WavWriter**](class_rew_1_1_wav_writer.md#function-getpos)) +* **getSampleRate** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-getsamplerate)) +* **getSamplesPerBlock** ([**Rew::ToneSynth**](class_rew_1_1_tone_synth.md#function-getsamplesperblock)) +* **getSize** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-getsize)) + + +## I + +* **init** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#function-init)) +* **isOpen** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-isopen)) + + +## O + +* **open** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-open), [**Rew::WavWriter**](class_rew_1_1_wav_writer.md#function-open)) +* **operator bool** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-operator-bool)) +* **operator()** ([**Rew::ByteAssembler**](class_rew_1_1_byte_assembler.md#function-operator()), [**Rew::Decoder**](class_rew_1_1_decoder.md#function-operator()-1-2), [**Rew::Encoder**](class_rew_1_1_encoder.md#function-operator()), [**Rew::Goertzel**](class_rew_1_1_goertzel.md#function-operator()), [**Rew::Synth**](class_rew_1_1_synth.md#function-operator()), [**Rew::ToneSynth**](class_rew_1_1_tone_synth.md#function-operator())) +* **operator=** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-operator-1-2), [**Rew::ByteAssembler**](class_rew_1_1_byte_assembler.md#function-operator-1-2), [**Rew::Decoder**](class_rew_1_1_decoder.md#function-operator-1-2), [**Rew::Encoder**](class_rew_1_1_encoder.md#function-operator-1-2), [**Rew::ToneSynth**](class_rew_1_1_tone_synth.md#function-operator-1-2)) +* **operator[]** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-operator[]-1-2)) + + +## P + +* **processSample** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#function-processsample)) +* **pushBack** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-pushback)) + + +## R + +* **reset** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#function-reset)) + + +## S + +* **size** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-size)) +* **swap** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-swap), [**Rew::ByteAssembler**](class_rew_1_1_byte_assembler.md#function-swap), [**Rew::Decoder**](class_rew_1_1_decoder.md#function-swap), [**Rew::Encoder**](class_rew_1_1_encoder.md#function-swap)) + + +## T + +* **ToneSynth** ([**Rew::ToneSynth**](class_rew_1_1_tone_synth.md#function-tonesynth-1-3)) +* **toByte** ([**Rew::ByteAssembler**](class_rew_1_1_byte_assembler.md#function-tobyte)) + + +## W + +* **WavWriter** ([**Rew::WavWriter**](class_rew_1_1_wav_writer.md#function-wavwriter)) +* **writeChunk** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-writechunk), [**Rew::WavWriter**](class_rew_1_1_wav_writer.md#function-writechunk)) +* **writeFooter** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-writefooter), [**Rew::WavWriter**](class_rew_1_1_wav_writer.md#function-writefooter)) + + +## ~ + +* **~AudioWriter** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#function-audiowriter)) +* **~Bucket** ([**Rew::Bucket**](class_rew_1_1_bucket.md#function-bucket)) +* **~Decoder** ([**Rew::Decoder**](class_rew_1_1_decoder.md#function-decoder)) +* **~Goertzel** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#function-goertzel)) +* **~WavWriter** ([**Rew::WavWriter**](class_rew_1_1_wav_writer.md#function-wavwriter)) + + diff --git a/doxygen/goertzel_8h.md b/doxygen/goertzel_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..098d3e3384c62165880e26d651b5759a3501609e --- /dev/null +++ b/doxygen/goertzel_8h.md @@ -0,0 +1,21 @@ +--- +title: file goertzel.h +meta: + - name: keywords + content: goertzel.h Rew::Goertzel +--- + +# file goertzel.h + +**[Go to the source code of this file.](goertzel_8h_source.md)** +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::Goertzel**](class_rew_1_1_goertzel.md)| + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/decoder/goertzel.h` diff --git a/doxygen/goertzel_8h_source.md b/doxygen/goertzel_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..c76ef3769b1c98420f22ec0064d459e980b3f2c1 --- /dev/null +++ b/doxygen/goertzel_8h_source.md @@ -0,0 +1,60 @@ +--- +title: goertzel.h File Reference +meta: + - name: keywords + content: goertzel.h file +--- + +# goertzel.h File Reference + +**[Go to the documentation of this file.](goertzel_8h.md)** +Source: `include/decoder/goertzel.h` + + + + + + + + + + + +```cpp +#ifndef REW_DECODER_GOERTZEL_H +#define REW_DECODER_GOERTZEL_H + +#include "../config.h" + +REW_NAMESPACE{ + class REW_API Goertzel { + public: + Goertzel(size_t blockSize, float targetFrequency, float sampleRate); + virtual ~Goertzel() = default; + + float operator()(const float* samples); + + inline size_t getBlockSize() const { + return blockSize; + } + private: + void processSample(float sample); + void init(size_t blockSize, float targetFrequency, float sampleRate); + void reset(); + float getMagnitude() const; + + float coeff; + float Q1; + float Q2; + float sine; + float cosine; + size_t blockSize; + }; +} + +#endif +``` + + + + diff --git a/doxygen/group__decoder.md b/doxygen/group__decoder.md new file mode 100644 index 0000000000000000000000000000000000000000..8dc37045d6a8772bd0d10d663aa1f339fcb93fcf --- /dev/null +++ b/doxygen/group__decoder.md @@ -0,0 +1,20 @@ +--- +title: group decoder +meta: + - name: keywords + content: decoder Rew::Bucket Rew::ByteAssembler Rew::Decoder Rew::Goertzel +--- + +# group decoder + +The clientside part of the project for decoding the signal. +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::Bucket**](class_rew_1_1_bucket.md)| +|class|[**Rew::ByteAssembler**](class_rew_1_1_byte_assembler.md)| +|class|[**Rew::Decoder**](class_rew_1_1_decoder.md)| +|class|[**Rew::Goertzel**](class_rew_1_1_goertzel.md)| + + diff --git a/doxygen/group__encoder.md b/doxygen/group__encoder.md new file mode 100644 index 0000000000000000000000000000000000000000..044dd49374f7ff8aafcd80ec66853126f5e050a7 --- /dev/null +++ b/doxygen/group__encoder.md @@ -0,0 +1,21 @@ +--- +title: group encoder +meta: + - name: keywords + content: encoder Rew::AudioWriter Rew::Encoder Rew::Synth Rew::ToneSynth Rew::WavWriter +--- + +# group encoder + +The server side part of the project for encoding the data into signal. +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::AudioWriter**](class_rew_1_1_audio_writer.md)| +|class|[**Rew::Encoder**](class_rew_1_1_encoder.md)| +|class|[**Rew::Synth**](class_rew_1_1_synth.md)| +|class|[**Rew::ToneSynth**](class_rew_1_1_tone_synth.md)| +|class|[**Rew::WavWriter**](class_rew_1_1_wav_writer.md)| + + diff --git a/doxygen/make.bat b/doxygen/make.bat new file mode 100644 index 0000000000000000000000000000000000000000..f0bd4f678db1e5c2e23b7b7f901ac35c35c98894 --- /dev/null +++ b/doxygen/make.bat @@ -0,0 +1,2 @@ +doxygen Doxyfile || exit /b +doxybook -i doxygen/xml -o doxygen -t vuepress diff --git a/doxygen/make.sh b/doxygen/make.sh new file mode 100644 index 0000000000000000000000000000000000000000..18ac30cbba2ef6240aedc5d9394c20cf67f0e394 --- /dev/null +++ b/doxygen/make.sh @@ -0,0 +1,3 @@ +set -e +doxygen Doxyfile +doxybook -i doxygen/xml -o doxygen -t vuepress diff --git a/doxygen/modules.md b/doxygen/modules.md new file mode 100644 index 0000000000000000000000000000000000000000..b7114c4665df97bed095642b83432c45988bb1c6 --- /dev/null +++ b/doxygen/modules.md @@ -0,0 +1,12 @@ +--- +title: Modules +meta: + - name: keywords + content: decoder encoder +--- + +# Modules + +Here is a list of all modules: +* **[decoder](group__decoder.md)** The clientside part of the project for decoding the signal. +* **[encoder](group__encoder.md)** The server side part of the project for encoding the data into signal. diff --git a/doxygen/namespace_rew.md b/doxygen/namespace_rew.md new file mode 100644 index 0000000000000000000000000000000000000000..94a61aa741d5f343fe7baf7c996e56c8b68f1863 --- /dev/null +++ b/doxygen/namespace_rew.md @@ -0,0 +1,55 @@ +--- +title: namespace Rew +meta: + - name: keywords + content: Rew AudioWriter Bucket ByteAssembler Decoder Encoder Goertzel Synth ToneSynth WavWriter saveWav +--- + +# namespace Rew + +[**Class List**](annotated.md) **>** [**Rew**](namespace_rew.md) + + +## Classes + +|Type|Name| +|-----|-----| +|class|[**AudioWriter**](class_rew_1_1_audio_writer.md)| +|class|[**Bucket**](class_rew_1_1_bucket.md)| +|class|[**ByteAssembler**](class_rew_1_1_byte_assembler.md)| +|class|[**Decoder**](class_rew_1_1_decoder.md)| +|class|[**Encoder**](class_rew_1_1_encoder.md)| +|class|[**Goertzel**](class_rew_1_1_goertzel.md)| +|class|[**Synth**](class_rew_1_1_synth.md)| +|class|[**ToneSynth**](class_rew_1_1_tone_synth.md)| +|class|[**WavWriter**](class_rew_1_1_wav_writer.md)| + + +## Functions + +|Type|Name| +|-----|-----| +|bool|[**saveWav**](namespace_rew.md#function-savewav) (const std::string & path, const unsigned char \* data, size\_t size, int bitsPerSample, int sampleRate, int numChannels) | + + +## Functions Documentation + +### function saveWav + +```cpp +bool Rew::saveWav ( + const std::string & path, + const unsigned char * data, + size_t size, + int bitsPerSample, + int sampleRate, + int numChannels +) +``` + + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/decoder/bucket.h` diff --git a/doxygen/pages.md b/doxygen/pages.md new file mode 100644 index 0000000000000000000000000000000000000000..d94ab5459a75eed8c360c96549227e7c0e1d03c2 --- /dev/null +++ b/doxygen/pages.md @@ -0,0 +1,7 @@ +--- +title: Related Pages +--- + +# Related Pages + +Here is a list of all related documentation pages: diff --git a/doxygen/synth_8h.md b/doxygen/synth_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..11b74f904f9eec45fba2f0a706a71f796f17b542 --- /dev/null +++ b/doxygen/synth_8h.md @@ -0,0 +1,21 @@ +--- +title: file synth.h +meta: + - name: keywords + content: synth.h Rew::Synth +--- + +# file synth.h + +**[Go to the source code of this file.](synth_8h_source.md)** +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::Synth**](class_rew_1_1_synth.md)| + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/synth.h` diff --git a/doxygen/synth_8h_source.md b/doxygen/synth_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..38906744c8a6383d91b93da8bc8bf241319f9e36 --- /dev/null +++ b/doxygen/synth_8h_source.md @@ -0,0 +1,41 @@ +--- +title: synth.h File Reference +meta: + - name: keywords + content: synth.h file +--- + +# synth.h File Reference + +**[Go to the documentation of this file.](synth_8h.md)** +Source: `include/encoder/synth.h` + + + + + + + + + + + +```cpp +#ifndef REW_EMITTER_SYNTH_H +#define REW_EMITTER_SYNTH_H + +#include "../config.h" + +REW_NAMESPACE { + class REW_API Synth { + public: + virtual size_t operator()(float* dst) const = 0; + }; +} + +#endif +``` + + + + diff --git a/doxygen/tone__synth_8h.md b/doxygen/tone__synth_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..83c8d6556235e22872d4d419e02629f07115c3cc --- /dev/null +++ b/doxygen/tone__synth_8h.md @@ -0,0 +1,21 @@ +--- +title: file tone_synth.h +meta: + - name: keywords + content: tone_synth.h Rew::ToneSynth +--- + +# file tone\_synth.h + +**[Go to the source code of this file.](tone__synth_8h_source.md)** +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::ToneSynth**](class_rew_1_1_tone_synth.md)| + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/tone\_synth.h` diff --git a/doxygen/tone__synth_8h_source.md b/doxygen/tone__synth_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..6ea6c2572a800461814905b60e498b42aee19aa7 --- /dev/null +++ b/doxygen/tone__synth_8h_source.md @@ -0,0 +1,60 @@ +--- +title: tone_synth.h File Reference +meta: + - name: keywords + content: tone_synth.h file +--- + +# tone\_synth.h File Reference + +**[Go to the documentation of this file.](tone__synth_8h.md)** +Source: `include/encoder/tone\_synth.h` + + + + + + + + + + + + +```cpp +#ifndef REW_EMITTER_TONE_SYNTH_H +#define REW_EMITTER_TONE_SYNTH_H + +#include <memory> +#include "synth.h" + +REW_NAMESPACE { + class REW_API ToneSynth: public Synth { + public: + ToneSynth(size_t frequency, size_t sampleRate, double ms); + ToneSynth(ToneSynth&& other) noexcept = default; + ToneSynth(const ToneSynth& other) = delete; + ToneSynth& operator = (ToneSynth&& other) noexcept = default; + ToneSynth& operator = (const ToneSynth& other) = delete; + + size_t operator()(float* dst) const override; + inline size_t getSamplesPerBlock() const { + return total; + } + private: + void allocate(size_t sampleRate, double ms); + + + size_t frequency; + size_t total; + std::unique_ptr<float[]> src; + + }; +} + +#endif +``` + + + + diff --git a/doxygen/variables.md b/doxygen/variables.md new file mode 100644 index 0000000000000000000000000000000000000000..28a2b9985ef48b0c318f355026587865f8087a67 --- /dev/null +++ b/doxygen/variables.md @@ -0,0 +1,89 @@ +--- +title: Variable Index +meta: + - name: keywords + content: AudioWriter::bitsPerSample Goertzel::blockSize Decoder::buffer Decoder::byteAssembler AudioWriter::channelCount AudioWriter::chunkSize Goertzel::coeff Goertzel::cosine WavWriter::dataOffset WavWriter::dataWritten WavWriter::eos ToneSynth::frequency Decoder::highGoertzel Encoder::highTone AudioWriter::loaded Decoder::lowGoertzel Encoder::lowTone Encoder::nullTone WavWriter::output Goertzel::Q1 Goertzel::Q2 AudioWriter::sampleRate Goertzel::sine AudioWriter::size ToneSynth::src ToneSynth::total Bucket::vector +--- + +# Variable Index + +Here is a list of all variables with links to the class documentation for each member: +## B + +* **bitsPerSample** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#variable-bitspersample)) +* **blockSize** ([**Rew::Decoder**](class_rew_1_1_decoder.md#variable-blocksize), [**Rew::Goertzel**](class_rew_1_1_goertzel.md#variable-blocksize)) +* **buffer** ([**Rew::ByteAssembler**](class_rew_1_1_byte_assembler.md#variable-buffer), [**Rew::Decoder**](class_rew_1_1_decoder.md#variable-buffer)) +* **byteAssembler** ([**Rew::Decoder**](class_rew_1_1_decoder.md#variable-byteassembler)) + + +## C + +* **channelCount** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#variable-channelcount)) +* **chunkSize** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#variable-chunksize)) +* **coeff** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#variable-coeff)) +* **cosine** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#variable-cosine)) + + +## D + +* **dataOffset** ([**Rew::WavWriter**](class_rew_1_1_wav_writer.md#variable-dataoffset)) +* **dataWritten** ([**Rew::WavWriter**](class_rew_1_1_wav_writer.md#variable-datawritten)) + + +## E + +* **eos** ([**Rew::WavWriter**](class_rew_1_1_wav_writer.md#variable-eos)) + + +## F + +* **frequency** ([**Rew::ToneSynth**](class_rew_1_1_tone_synth.md#variable-frequency)) + + +## H + +* **highGoertzel** ([**Rew::Decoder**](class_rew_1_1_decoder.md#variable-highgoertzel)) +* **highTone** ([**Rew::Encoder**](class_rew_1_1_encoder.md#variable-hightone)) + + +## L + +* **loaded** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#variable-loaded)) +* **lowGoertzel** ([**Rew::Decoder**](class_rew_1_1_decoder.md#variable-lowgoertzel)) +* **lowTone** ([**Rew::Encoder**](class_rew_1_1_encoder.md#variable-lowtone)) + + +## N + +* **nullTone** ([**Rew::Encoder**](class_rew_1_1_encoder.md#variable-nulltone)) + + +## O + +* **output** ([**Rew::WavWriter**](class_rew_1_1_wav_writer.md#variable-output)) + + +## Q + +* **Q1** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#variable-q1)) +* **Q2** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#variable-q2)) + + +## S + +* **sampleRate** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#variable-samplerate)) +* **sine** ([**Rew::Goertzel**](class_rew_1_1_goertzel.md#variable-sine)) +* **size** ([**Rew::AudioWriter**](class_rew_1_1_audio_writer.md#variable-size)) +* **src** ([**Rew::ToneSynth**](class_rew_1_1_tone_synth.md#variable-src)) + + +## T + +* **total** ([**Rew::ToneSynth**](class_rew_1_1_tone_synth.md#variable-total)) + + +## V + +* **vector** ([**Rew::Bucket**](class_rew_1_1_bucket.md#variable-vector)) + + diff --git a/doxygen/wav__writer_8h.md b/doxygen/wav__writer_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..c5fbf72c80fa7f8e7b03fdefeed0410f5dcd903e --- /dev/null +++ b/doxygen/wav__writer_8h.md @@ -0,0 +1,21 @@ +--- +title: file wav_writer.h +meta: + - name: keywords + content: wav_writer.h Rew::WavWriter +--- + +# file wav\_writer.h + +**[Go to the source code of this file.](wav__writer_8h_source.md)** +## Classes + +|Type|Name| +|-----|-----| +|class|[**Rew::WavWriter**](class_rew_1_1_wav_writer.md)| + + + + +---------------------------------------- +The documentation for this class was generated from the following file: `include/encoder/wav\_writer.h` diff --git a/doxygen/wav__writer_8h_source.md b/doxygen/wav__writer_8h_source.md new file mode 100644 index 0000000000000000000000000000000000000000..05b595a58c928b49d1924ea5fe3ec360ed3b29be --- /dev/null +++ b/doxygen/wav__writer_8h_source.md @@ -0,0 +1,58 @@ +--- +title: wav_writer.h File Reference +meta: + - name: keywords + content: wav_writer.h file +--- + +# wav\_writer.h File Reference + +**[Go to the documentation of this file.](wav__writer_8h.md)** +Source: `include/encoder/wav\_writer.h` + + + + + + + + + + + + +```cpp +#ifndef REW_WAV_SAVER +#define REW_WAV_SAVER + +#include <fstream> +#include "audio_writer.h" + +REW_NAMESPACE { + class REW_API WavWriter : public AudioWriter { + public: + WavWriter(); + virtual ~WavWriter(); + + bool open(const std::string& path, size_t size, int bitsPerSample, int sampleRate, int numChannels) override; + void close() override; + bool writeChunk(const unsigned char* data, size_t* bytesWritten) override; + bool writeFooter() override; + bool eof() const override; + size_t getPos() const override; + private: + std::fstream output; + bool eos; + size_t dataOffset; + size_t dataWritten; + }; + + bool REW_API saveWav(const std::string& path, const unsigned char* data, size_t size, int bitsPerSample, int sampleRate, int numChannels); +}; + +#endif +``` + + + + diff --git a/doxygen/xml/audio__writer_8h.xml b/doxygen/xml/audio__writer_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..466b2dfcffccd33ab2d4f68f19981b470d43862a --- /dev/null +++ b/doxygen/xml/audio__writer_8h.xml @@ -0,0 +1,100 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="audio__writer_8h" kind="file" language="C++"> + <compoundname>audio_writer.h</compoundname> + <includes local="no">fstream</includes> + <includes local="no">string</includes> + <includes refid="config_8h" local="yes">../config.h</includes> + <includedby refid="wav__writer_8h" local="yes">include/encoder/wav_writer.h</includedby> + <incdepgraph> + <node id="43"> + <label>include/encoder/audio_writer.h</label> + <link refid="audio__writer_8h"/> + <childnode refid="44" relation="include"> + </childnode> + <childnode refid="45" relation="include"> + </childnode> + <childnode refid="46" relation="include"> + </childnode> + </node> + <node id="45"> + <label>string</label> + </node> + <node id="44"> + <label>fstream</label> + </node> + <node id="47"> + <label>cstddef</label> + </node> + <node id="46"> + <label>../config.h</label> + <link refid="config_8h"/> + <childnode refid="47" relation="include"> + </childnode> + </node> + </incdepgraph> + <invincdepgraph> + <node id="49"> + <label>include/encoder/wav_writer.h</label> + <link refid="wav__writer_8h"/> + <childnode refid="50" relation="include"> + </childnode> + </node> + <node id="48"> + <label>include/encoder/audio_writer.h</label> + <link refid="audio__writer_8h"/> + <childnode refid="49" relation="include"> + </childnode> + </node> + <node id="50"> + <label>include/encoder/encoder.h</label> + <link refid="encoder_8h"/> + </node> + </invincdepgraph> + <innerclass refid="class_rew_1_1_audio_writer" prot="public">Rew::AudioWriter</innerclass> + <innernamespace refid="namespace_rew">Rew</innernamespace> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="preprocessor">#ifndef<sp/>REW_AUDIO_SAVER</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_AUDIO_SAVER</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><fstream></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><string></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"../config.h"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="7"><highlight class="normal"></highlight></codeline> +<codeline lineno="8"><highlight class="normal"><ref refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kindref="member">REW_NAMESPACE</ref>{</highlight></codeline> +<codeline lineno="13" refid="class_rew_1_1_audio_writer" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="class_rew_1_1_audio_writer" kindref="compound">AudioWriter</ref><sp/>{</highlight></codeline> +<codeline lineno="14"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="15"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_audio_writer" kindref="compound">AudioWriter</ref>();</highlight></codeline> +<codeline lineno="16"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>~<ref refid="class_rew_1_1_audio_writer" kindref="compound">AudioWriter</ref>()<sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="20"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>open(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string&<sp/>path,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>size,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>bitsPerSample,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>sampleRate,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>numChannels)<sp/>=<sp/>0;</highlight></codeline> +<codeline lineno="25"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>writeChunk(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>data,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal">*<sp/>bytesWritten)<sp/>=<sp/>0;</highlight></codeline> +<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>writeFooter()<sp/>=<sp/>0;</highlight></codeline> +<codeline lineno="33"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>close()<sp/>=<sp/>0;</highlight></codeline> +<codeline lineno="37"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>eof()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>=<sp/>0;</highlight></codeline> +<codeline lineno="41"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>getPos()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>=<sp/>0;</highlight></codeline> +<codeline lineno="45"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>isOpen()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="49"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>getSize()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>getSampleRate()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="57"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>getNumOfChannels()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>getBitsPerSample()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>getChunkSize()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="69"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">operator</highlight><highlight class="normal"><sp/>bool()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="70"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="71" refid="class_rew_1_1_audio_writer_1a4eca6a6861551d45c1d079d3971f01df" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1a4eca6a6861551d45c1d079d3971f01df" kindref="member">loaded</ref>;</highlight></codeline> +<codeline lineno="72" refid="class_rew_1_1_audio_writer_1aa84a112f4f791cad425aa63f3b412efa" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1aa84a112f4f791cad425aa63f3b412efa" kindref="member">size</ref>;</highlight></codeline> +<codeline lineno="73" refid="class_rew_1_1_audio_writer_1a71567e58f680b1f3346727ce20d09115" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1a71567e58f680b1f3346727ce20d09115" kindref="member">sampleRate</ref>;</highlight></codeline> +<codeline lineno="74" refid="class_rew_1_1_audio_writer_1aabfb8aed29b83114ff67ae2a0a063bbb" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1aabfb8aed29b83114ff67ae2a0a063bbb" kindref="member">channelCount</ref>;</highlight></codeline> +<codeline lineno="75" refid="class_rew_1_1_audio_writer_1ac3d60ac33859cc0688ca3761b5dbf010" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1ac3d60ac33859cc0688ca3761b5dbf010" kindref="member">bitsPerSample</ref>;</highlight></codeline> +<codeline lineno="76" refid="class_rew_1_1_audio_writer_1a0f0e4ea476c6e557af77ba1902cdde13" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1a0f0e4ea476c6e557af77ba1902cdde13" kindref="member">chunkSize</ref>;</highlight></codeline> +<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline> +<codeline lineno="78"><highlight class="normal">};</highlight></codeline> +<codeline lineno="79"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="80"><highlight class="normal"></highlight></codeline> + </programlisting> + <location file="include/encoder/audio_writer.h"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/bucket_8h.xml b/doxygen/xml/bucket_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..fe07b05d8faa31593c4aac3a6f04bdf5af37eb3b --- /dev/null +++ b/doxygen/xml/bucket_8h.xml @@ -0,0 +1,130 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="bucket_8h" kind="file" language="C++"> + <compoundname>bucket.h</compoundname> + <includes refid="config_8h" local="yes">../config.h</includes> + <includes local="no">vector</includes> + <includedby refid="byte__assembler_8h" local="yes">include/decoder/byte_assembler.h</includedby> + <incdepgraph> + <node id="12"> + <label>include/decoder/bucket.h</label> + <link refid="bucket_8h"/> + <childnode refid="13" relation="include"> + </childnode> + <childnode refid="15" relation="include"> + </childnode> + </node> + <node id="15"> + <label>vector</label> + </node> + <node id="14"> + <label>cstddef</label> + </node> + <node id="13"> + <label>../config.h</label> + <link refid="config_8h"/> + <childnode refid="14" relation="include"> + </childnode> + </node> + </incdepgraph> + <invincdepgraph> + <node id="16"> + <label>include/decoder/bucket.h</label> + <link refid="bucket_8h"/> + <childnode refid="17" relation="include"> + </childnode> + </node> + <node id="18"> + <label>include/decoder/decoder.h</label> + <link refid="decoder_8h"/> + </node> + <node id="17"> + <label>include/decoder/byte_assembler.h</label> + <link refid="byte__assembler_8h"/> + <childnode refid="18" relation="include"> + </childnode> + </node> + </invincdepgraph> + <innerclass refid="class_rew_1_1_bucket" prot="public">Rew::Bucket</innerclass> + <innernamespace refid="namespace_rew">Rew</innernamespace> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="preprocessor">#ifndef<sp/>REW_BUCKET_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_BUCKET_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"../config.h"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><vector></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"></highlight></codeline> +<codeline lineno="7" refid="namespace_rew" refkind="compound"><highlight class="normal"><ref refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kindref="member">REW_NAMESPACE</ref><sp/>{</highlight></codeline> +<codeline lineno="11"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>T></highlight></codeline> +<codeline lineno="12" refid="class_rew_1_1_bucket" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref><sp/>{</highlight></codeline> +<codeline lineno="13"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="14"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>()<sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="15" refid="class_rew_1_1_bucket_1aa80d0bdc739c2446e33312b6f7fa1fae" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_bucket_1aa80d0bdc739c2446e33312b6f7fa1fae" kindref="member">Bucket</ref>(<ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>&&<sp/>other)<sp/>noexcept:<sp/>vector(std::move(other.vector))<sp/>{</highlight></codeline> +<codeline lineno="16"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline> +<codeline lineno="17"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="18"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="19"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>~<ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>()<sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="20" refid="class_rew_1_1_bucket_1aa34958b0d7d35a288b45952460fe322e" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_bucket_1aa34958b0d7d35a288b45952460fe322e" kindref="member">swap</ref>(<ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>&<sp/>other)<sp/>noexcept<sp/>{</highlight></codeline> +<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using</highlight><highlight class="normal"><sp/>std::swap;</highlight></codeline> +<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>swap(vector,<sp/>other.vector);</highlight></codeline> +<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="24" refid="class_rew_1_1_bucket_1a24d6780a56671976c1dd50eec59f90f4" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>&<sp/>operator<sp/>=<sp/>(<ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>&&<sp/>other)<sp/>noexcept<sp/>{</highlight></codeline> +<codeline lineno="25"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keyword">this</highlight><highlight class="normal"><sp/>!=<sp/>&other)<sp/>{</highlight></codeline> +<codeline lineno="26"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>swap(other);</highlight></codeline> +<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="28"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>*</highlight><highlight class="keyword">this</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="30"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>&<sp/>operator<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="31"><highlight class="normal"></highlight></codeline> +<codeline lineno="32" refid="class_rew_1_1_bucket_1ac5cbeedb6b0b579ec26c9669a6754571" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_bucket_1ac5cbeedb6b0b579ec26c9669a6754571" kindref="member">pushBack</ref><sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>std::vector<T>::value_type&<sp/>value)<sp/>{</highlight></codeline> +<codeline lineno="33"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(vector.capacity()<sp/><=<sp/>vector.size())<sp/>{</highlight></codeline> +<codeline lineno="34"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>vector.reserve(vector.capacity()<sp/>+<sp/>64);</highlight></codeline> +<codeline lineno="35"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="36"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>vector.push_back(value);</highlight></codeline> +<codeline lineno="37"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="38"><highlight class="normal"></highlight></codeline> +<codeline lineno="39" refid="class_rew_1_1_bucket_1a220215d7c14acc8ebf3a93918f81468b" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_bucket_1a220215d7c14acc8ebf3a93918f81468b" kindref="member">size</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline> +<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>vector.size();</highlight></codeline> +<codeline lineno="41"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="42"><highlight class="normal"></highlight></codeline> +<codeline lineno="43" refid="class_rew_1_1_bucket_1a412e4d2186c14d8296f17c63ff7465d8" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>std::vector<T>::iterator<sp/><ref refid="class_rew_1_1_bucket_1a412e4d2186c14d8296f17c63ff7465d8" kindref="member">begin</ref>()<sp/>{</highlight></codeline> +<codeline lineno="44"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>vector.begin();</highlight></codeline> +<codeline lineno="45"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="46"><highlight class="normal"></highlight></codeline> +<codeline lineno="47" refid="class_rew_1_1_bucket_1afc320156c6efd79f8e86667aa7f7cb05" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>std::vector<T>::const_iterator<sp/><ref refid="class_rew_1_1_bucket_1afc320156c6efd79f8e86667aa7f7cb05" kindref="member">begin</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline> +<codeline lineno="48"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>vector.begin();</highlight></codeline> +<codeline lineno="49"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="50"><highlight class="normal"></highlight></codeline> +<codeline lineno="51" refid="class_rew_1_1_bucket_1a51fb9092c7601809ce04367ae1cc8beb" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>std::vector<T>::iterator<sp/><ref refid="class_rew_1_1_bucket_1a51fb9092c7601809ce04367ae1cc8beb" kindref="member">end</ref>()<sp/>{</highlight></codeline> +<codeline lineno="52"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>vector.end();</highlight></codeline> +<codeline lineno="53"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="54"><highlight class="normal"></highlight></codeline> +<codeline lineno="55" refid="class_rew_1_1_bucket_1a8b0f1a414910a05f2742dccdcb7e3fa9" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>std::vector<T>::const_iterator<sp/><ref refid="class_rew_1_1_bucket_1a8b0f1a414910a05f2742dccdcb7e3fa9" kindref="member">end</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline> +<codeline lineno="56"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>vector.end();</highlight></codeline> +<codeline lineno="57"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="58"><highlight class="normal"></highlight></codeline> +<codeline lineno="59" refid="class_rew_1_1_bucket_1ab0490d14ae89f27f16982294ae1f56e1" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_bucket_1ab0490d14ae89f27f16982294ae1f56e1" kindref="member">clear</ref>()<sp/>{</highlight></codeline> +<codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>vector.clear();</highlight></codeline> +<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="62"><highlight class="normal"></highlight></codeline> +<codeline lineno="63" refid="class_rew_1_1_bucket_1acda8cc938f48bf23c01b3644ff0d114c" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>std::vector<T>::value_type&<sp/><ref refid="class_rew_1_1_bucket_1acda8cc938f48bf23c01b3644ff0d114c" kindref="member">operator[]</ref>(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>i)<sp/>{</highlight></codeline> +<codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>vector[i];</highlight></codeline> +<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="66"><highlight class="normal"></highlight></codeline> +<codeline lineno="67" refid="class_rew_1_1_bucket_1a03c0248f1d3e025dda02331ca6e54bd2" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>std::vector<T>::value_type&<sp/><ref refid="class_rew_1_1_bucket_1a03c0248f1d3e025dda02331ca6e54bd2" kindref="member">operator[]</ref>(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>i)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline> +<codeline lineno="68"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>vector[i];</highlight></codeline> +<codeline lineno="69"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="70"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="71"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::vector<T><sp/>vector;</highlight></codeline> +<codeline lineno="72"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline> +<codeline lineno="73"><highlight class="normal">}</highlight></codeline> +<codeline lineno="74"><highlight class="normal"></highlight></codeline> +<codeline lineno="75"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline> + </programlisting> + <location file="include/decoder/bucket.h"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/byte__assembler_8h.xml b/doxygen/xml/byte__assembler_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..ff1adc7d3d573d9c83fd99637aa399101862d2b4 --- /dev/null +++ b/doxygen/xml/byte__assembler_8h.xml @@ -0,0 +1,92 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="byte__assembler_8h" kind="file" language="C++"> + <compoundname>byte_assembler.h</compoundname> + <includes refid="config_8h" local="yes">../config.h</includes> + <includes refid="bucket_8h" local="yes">bucket.h</includes> + <includes local="no">functional</includes> + <includedby refid="decoder_8h" local="yes">include/decoder/decoder.h</includedby> + <incdepgraph> + <node id="24"> + <label>functional</label> + </node> + <node id="22"> + <label>bucket.h</label> + <link refid="bucket_8h"/> + <childnode refid="20" relation="include"> + </childnode> + <childnode refid="23" relation="include"> + </childnode> + </node> + <node id="23"> + <label>vector</label> + </node> + <node id="21"> + <label>cstddef</label> + </node> + <node id="20"> + <label>../config.h</label> + <link refid="config_8h"/> + <childnode refid="21" relation="include"> + </childnode> + </node> + <node id="19"> + <label>include/decoder/byte_assembler.h</label> + <link refid="byte__assembler_8h"/> + <childnode refid="20" relation="include"> + </childnode> + <childnode refid="22" relation="include"> + </childnode> + <childnode refid="24" relation="include"> + </childnode> + </node> + </incdepgraph> + <invincdepgraph> + <node id="26"> + <label>include/decoder/decoder.h</label> + <link refid="decoder_8h"/> + </node> + <node id="25"> + <label>include/decoder/byte_assembler.h</label> + <link refid="byte__assembler_8h"/> + <childnode refid="26" relation="include"> + </childnode> + </node> + </invincdepgraph> + <innerclass refid="class_rew_1_1_byte_assembler" prot="public">Rew::ByteAssembler</innerclass> + <innernamespace refid="namespace_rew">Rew</innernamespace> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="preprocessor">#ifndef<sp/>REW_BYTE_ASSEMBLER_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_BYTE_ASSEMBLER_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"../config.h"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="bucket_8h" kindref="compound">bucket.h</ref>"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><functional></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="7"><highlight class="normal"></highlight></codeline> +<codeline lineno="8"><highlight class="normal"><ref refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kindref="member">REW_NAMESPACE</ref><sp/>{</highlight></codeline> +<codeline lineno="12" refid="class_rew_1_1_byte_assembler" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref><sp/>{</highlight></codeline> +<codeline lineno="13"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="14"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>();</highlight></codeline> +<codeline lineno="15"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>(<ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>&&<sp/>other)<sp/>noexcept;</highlight></codeline> +<codeline lineno="16"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="17"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>swap(<ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>&<sp/>other)<sp/>noexcept;</highlight></codeline> +<codeline lineno="18"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>&<sp/>operator<sp/>=<sp/>(<ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>&&<sp/>other)<sp/>noexcept;</highlight></codeline> +<codeline lineno="19"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>&<sp/>operator<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="20"><highlight class="normal"></highlight></codeline> +<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>operator()(</highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>magnitude,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::function<</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">(</highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">)>&<sp/>callback);</highlight></codeline> +<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>countValue(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>begin,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>end,<sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>value);</highlight></codeline> +<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>toByte(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>begin,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>end);</highlight></codeline> +<codeline lineno="25"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket<unsigned char></ref><sp/>buffer;</highlight></codeline> +<codeline lineno="26"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline> +<codeline lineno="27"><highlight class="normal">}</highlight></codeline> +<codeline lineno="28"><highlight class="normal"></highlight></codeline> +<codeline lineno="29"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline> + </programlisting> + <location file="include/decoder/byte_assembler.h"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/class_rew_1_1_audio_writer.xml b/doxygen/xml/class_rew_1_1_audio_writer.xml new file mode 100644 index 0000000000000000000000000000000000000000..4c6442b657afaa01939e7e1afd57b7616a2eaa7d --- /dev/null +++ b/doxygen/xml/class_rew_1_1_audio_writer.xml @@ -0,0 +1,360 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="class_rew_1_1_audio_writer" kind="class" language="C++" prot="public" abstract="yes"> + <compoundname>Rew::AudioWriter</compoundname> + <derivedcompoundref refid="class_rew_1_1_wav_writer" prot="public" virt="non-virtual">Rew::WavWriter</derivedcompoundref> + <includes refid="audio__writer_8h" local="no">audio_writer.h</includes> + <sectiondef kind="protected-attrib"> + <memberdef kind="variable" id="class_rew_1_1_audio_writer_1a4eca6a6861551d45c1d079d3971f01df" prot="protected" static="no" mutable="no"> + <type>bool</type> + <definition>bool Rew::AudioWriter::loaded</definition> + <argsstring></argsstring> + <name>loaded</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="71" column="1" bodyfile="include/encoder/audio_writer.h" bodystart="71" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_audio_writer_1aa84a112f4f791cad425aa63f3b412efa" prot="protected" static="no" mutable="no"> + <type>size_t</type> + <definition>size_t Rew::AudioWriter::size</definition> + <argsstring></argsstring> + <name>size</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="72" column="1" bodyfile="include/encoder/audio_writer.h" bodystart="72" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_audio_writer_1a71567e58f680b1f3346727ce20d09115" prot="protected" static="no" mutable="no"> + <type>int</type> + <definition>int Rew::AudioWriter::sampleRate</definition> + <argsstring></argsstring> + <name>sampleRate</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="73" column="1" bodyfile="include/encoder/audio_writer.h" bodystart="73" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_audio_writer_1aabfb8aed29b83114ff67ae2a0a063bbb" prot="protected" static="no" mutable="no"> + <type>int</type> + <definition>int Rew::AudioWriter::channelCount</definition> + <argsstring></argsstring> + <name>channelCount</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="74" column="1" bodyfile="include/encoder/audio_writer.h" bodystart="74" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_audio_writer_1ac3d60ac33859cc0688ca3761b5dbf010" prot="protected" static="no" mutable="no"> + <type>int</type> + <definition>int Rew::AudioWriter::bitsPerSample</definition> + <argsstring></argsstring> + <name>bitsPerSample</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="75" column="1" bodyfile="include/encoder/audio_writer.h" bodystart="75" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_audio_writer_1a0f0e4ea476c6e557af77ba1902cdde13" prot="protected" static="no" mutable="no"> + <type>size_t</type> + <definition>size_t Rew::AudioWriter::chunkSize</definition> + <argsstring></argsstring> + <name>chunkSize</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="76" column="1" bodyfile="include/encoder/audio_writer.h" bodystart="76" bodyend="-1"/> + </memberdef> + </sectiondef> + <sectiondef kind="public-func"> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1a7898acd23a7adbbc1c1fe96220608957" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::AudioWriter::AudioWriter</definition> + <argsstring>()</argsstring> + <name>AudioWriter</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="15" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1a88b3be8be3b8bd644a16939e7faefcd5" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual"> + <type></type> + <definition>virtual Rew::AudioWriter::~AudioWriter</definition> + <argsstring>()=default</argsstring> + <name>~AudioWriter</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="16" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1a619c520a49467c7dd6a6bee0d3ac399c" prot="public" static="no" const="no" explicit="no" inline="no" virt="pure-virtual"> + <type>bool</type> + <definition>virtual bool Rew::AudioWriter::open</definition> + <argsstring>(const std::string &path, size_t size, int bitsPerSample, int sampleRate, int numChannels)=0</argsstring> + <name>open</name> + <reimplementedby refid="class_rew_1_1_wav_writer_1a4700f564e14ca54a319ed2a23337581b">open</reimplementedby> + <param> + <type>const std::string &</type> + <declname>path</declname> + </param> + <param> + <type>size_t</type> + <declname>size</declname> + </param> + <param> + <type>int</type> + <declname>bitsPerSample</declname> + </param> + <param> + <type>int</type> + <declname>sampleRate</declname> + </param> + <param> + <type>int</type> + <declname>numChannels</declname> + </param> + <briefdescription> +<para>Opens a file for writing. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="20" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1a4ac109653fd08b3d51dd54930593b859" prot="public" static="no" const="no" explicit="no" inline="no" virt="pure-virtual"> + <type>bool</type> + <definition>virtual bool Rew::AudioWriter::writeChunk</definition> + <argsstring>(const unsigned char *data, size_t *bytesWritten)=0</argsstring> + <name>writeChunk</name> + <reimplementedby refid="class_rew_1_1_wav_writer_1a21f12fc360fee57a7cfc85d9a4ff07be">writeChunk</reimplementedby> + <param> + <type>const unsigned char *</type> + <declname>data</declname> + </param> + <param> + <type>size_t *</type> + <declname>bytesWritten</declname> + </param> + <briefdescription> +<para>Writes a chunk of data to file. </para> </briefdescription> + <detaileddescription> +<para><simplesect kind="see"><para><ref refid="class_rew_1_1_audio_writer_1a16c70083411cc3921233092c0ad632c3" kindref="member">getChunkSize</ref> </para></simplesect> +</para> </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="25" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1aa8b315cb43e7598aa1b1ea2ff0e036af" prot="public" static="no" const="no" explicit="no" inline="no" virt="pure-virtual"> + <type>bool</type> + <definition>virtual bool Rew::AudioWriter::writeFooter</definition> + <argsstring>()=0</argsstring> + <name>writeFooter</name> + <reimplementedby refid="class_rew_1_1_wav_writer_1a0ca68ad62f42f0eb1334ffc49319f4a1">writeFooter</reimplementedby> + <briefdescription> +<para>Writes a footer. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="29" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1a2d891dcd78323ef0ba32335041eb923c" prot="public" static="no" const="no" explicit="no" inline="no" virt="pure-virtual"> + <type>void</type> + <definition>virtual void Rew::AudioWriter::close</definition> + <argsstring>()=0</argsstring> + <name>close</name> + <reimplementedby refid="class_rew_1_1_wav_writer_1a017679508e2b7f7645ff6192e275af54">close</reimplementedby> + <briefdescription> +<para>Closes the file. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="33" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1a5288a2b883fab9d06d8292c6a657c077" prot="public" static="no" const="yes" explicit="no" inline="no" virt="pure-virtual"> + <type>bool</type> + <definition>virtual bool Rew::AudioWriter::eof</definition> + <argsstring>() const =0</argsstring> + <name>eof</name> + <reimplementedby refid="class_rew_1_1_wav_writer_1a2fee28dbc8c223c8b7e361eaf65ce22f">eof</reimplementedby> + <briefdescription> +<para>Checks if end of file. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="37" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1ae3d33d0968b52793b545d46c7e8cdb55" prot="public" static="no" const="yes" explicit="no" inline="no" virt="pure-virtual"> + <type>size_t</type> + <definition>virtual size_t Rew::AudioWriter::getPos</definition> + <argsstring>() const =0</argsstring> + <name>getPos</name> + <reimplementedby refid="class_rew_1_1_wav_writer_1a4314c21ee94386f745f951c57d82bc7f">getPos</reimplementedby> + <briefdescription> +<para>Returns current write position in bytes. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="41" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1ab3f42f0f4b515dadd3de7c51f857d042" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type>bool</type> + <definition>bool Rew::AudioWriter::isOpen</definition> + <argsstring>() const</argsstring> + <name>isOpen</name> + <briefdescription> +<para>Checks if file is open. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="45" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1a344835d861a600f89454e35bfe4958b9" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type>size_t</type> + <definition>size_t Rew::AudioWriter::getSize</definition> + <argsstring>() const</argsstring> + <name>getSize</name> + <briefdescription> +<para>Returns the target output size specified in function create() </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="49" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1af5e4622f9b4faa35bb553522766c5cd8" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type>int</type> + <definition>int Rew::AudioWriter::getSampleRate</definition> + <argsstring>() const</argsstring> + <name>getSampleRate</name> + <briefdescription> +<para>Returns the sample rate. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="53" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1ab3a2df9304221bd8e4b593efe277598a" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type>int</type> + <definition>int Rew::AudioWriter::getNumOfChannels</definition> + <argsstring>() const</argsstring> + <name>getNumOfChannels</name> + <briefdescription> +<para>Returns the number of channels. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="57" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1a8255a4d834e892a6594bcd1e449aa54f" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type>int</type> + <definition>int Rew::AudioWriter::getBitsPerSample</definition> + <argsstring>() const</argsstring> + <name>getBitsPerSample</name> + <briefdescription> +<para>Returns the bit depth of one sample. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="61" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1a16c70083411cc3921233092c0ad632c3" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type>size_t</type> + <definition>size_t Rew::AudioWriter::getChunkSize</definition> + <argsstring>() const</argsstring> + <name>getChunkSize</name> + <briefdescription> +<para>Returns the size of a chunk in bytes used by function <ref refid="class_rew_1_1_audio_writer_1a4ac109653fd08b3d51dd54930593b859" kindref="member">writeChunk()</ref> </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="65" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_audio_writer_1ae11b1fa568d431d6a976bee5f14d38d8" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::AudioWriter::operator bool</definition> + <argsstring>() const</argsstring> + <name>operator bool</name> + <briefdescription> +<para>Checks if a file is open. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/audio_writer.h" line="69" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> +<para>Audio saver base class. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inheritancegraph> + <node id="1"> + <label>Rew::WavWriter</label> + <link refid="class_rew_1_1_wav_writer"/> + <childnode refid="0" relation="public-inheritance"> + </childnode> + </node> + <node id="0"> + <label>Rew::AudioWriter</label> + <link refid="class_rew_1_1_audio_writer"/> + </node> + </inheritancegraph> + <location file="include/encoder/audio_writer.h" line="13" column="1" bodyfile="include/encoder/audio_writer.h" bodystart="13" bodyend="77"/> + <listofallmembers> + <member refid="class_rew_1_1_audio_writer_1a7898acd23a7adbbc1c1fe96220608957" prot="public" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>AudioWriter</name></member> + <member refid="class_rew_1_1_audio_writer_1ac3d60ac33859cc0688ca3761b5dbf010" prot="protected" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>bitsPerSample</name></member> + <member refid="class_rew_1_1_audio_writer_1aabfb8aed29b83114ff67ae2a0a063bbb" prot="protected" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>channelCount</name></member> + <member refid="class_rew_1_1_audio_writer_1a0f0e4ea476c6e557af77ba1902cdde13" prot="protected" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>chunkSize</name></member> + <member refid="class_rew_1_1_audio_writer_1a2d891dcd78323ef0ba32335041eb923c" prot="public" virt="pure-virtual"><scope>Rew::AudioWriter</scope><name>close</name></member> + <member refid="class_rew_1_1_audio_writer_1a5288a2b883fab9d06d8292c6a657c077" prot="public" virt="pure-virtual"><scope>Rew::AudioWriter</scope><name>eof</name></member> + <member refid="class_rew_1_1_audio_writer_1a8255a4d834e892a6594bcd1e449aa54f" prot="public" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>getBitsPerSample</name></member> + <member refid="class_rew_1_1_audio_writer_1a16c70083411cc3921233092c0ad632c3" prot="public" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>getChunkSize</name></member> + <member refid="class_rew_1_1_audio_writer_1ab3a2df9304221bd8e4b593efe277598a" prot="public" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>getNumOfChannels</name></member> + <member refid="class_rew_1_1_audio_writer_1ae3d33d0968b52793b545d46c7e8cdb55" prot="public" virt="pure-virtual"><scope>Rew::AudioWriter</scope><name>getPos</name></member> + <member refid="class_rew_1_1_audio_writer_1af5e4622f9b4faa35bb553522766c5cd8" prot="public" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>getSampleRate</name></member> + <member refid="class_rew_1_1_audio_writer_1a344835d861a600f89454e35bfe4958b9" prot="public" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>getSize</name></member> + <member refid="class_rew_1_1_audio_writer_1ab3f42f0f4b515dadd3de7c51f857d042" prot="public" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>isOpen</name></member> + <member refid="class_rew_1_1_audio_writer_1a4eca6a6861551d45c1d079d3971f01df" prot="protected" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>loaded</name></member> + <member refid="class_rew_1_1_audio_writer_1a619c520a49467c7dd6a6bee0d3ac399c" prot="public" virt="pure-virtual"><scope>Rew::AudioWriter</scope><name>open</name></member> + <member refid="class_rew_1_1_audio_writer_1ae11b1fa568d431d6a976bee5f14d38d8" prot="public" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>operator bool</name></member> + <member refid="class_rew_1_1_audio_writer_1a71567e58f680b1f3346727ce20d09115" prot="protected" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>sampleRate</name></member> + <member refid="class_rew_1_1_audio_writer_1aa84a112f4f791cad425aa63f3b412efa" prot="protected" virt="non-virtual"><scope>Rew::AudioWriter</scope><name>size</name></member> + <member refid="class_rew_1_1_audio_writer_1a4ac109653fd08b3d51dd54930593b859" prot="public" virt="pure-virtual"><scope>Rew::AudioWriter</scope><name>writeChunk</name></member> + <member refid="class_rew_1_1_audio_writer_1aa8b315cb43e7598aa1b1ea2ff0e036af" prot="public" virt="pure-virtual"><scope>Rew::AudioWriter</scope><name>writeFooter</name></member> + <member refid="class_rew_1_1_audio_writer_1a88b3be8be3b8bd644a16939e7faefcd5" prot="public" virt="virtual"><scope>Rew::AudioWriter</scope><name>~AudioWriter</name></member> + </listofallmembers> + </compounddef> +</doxygen> diff --git a/doxygen/xml/class_rew_1_1_bucket.xml b/doxygen/xml/class_rew_1_1_bucket.xml new file mode 100644 index 0000000000000000000000000000000000000000..bc12fcc79a7c8cb24ec5222daea5588694d0874e --- /dev/null +++ b/doxygen/xml/class_rew_1_1_bucket.xml @@ -0,0 +1,295 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="class_rew_1_1_bucket" kind="class" language="C++" prot="public"> + <compoundname>Rew::Bucket</compoundname> + <includes refid="bucket_8h" local="no">bucket.h</includes> + <templateparamlist> + <param> + <type>typename</type> + <declname>T</declname> + <defname>T</defname> + </param> + </templateparamlist> + <sectiondef kind="private-attrib"> + <memberdef kind="variable" id="class_rew_1_1_bucket_1acbc95b93eb4ceff039ee2bf9050dfd3b" prot="private" static="no" mutable="no"> + <type>std::vector< T ></type> + <definition>std::vector<T> Rew::Bucket< T >::vector</definition> + <argsstring></argsstring> + <name>vector</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="71" column="1" bodyfile="include/decoder/bucket.h" bodystart="71" bodyend="-1"/> + </memberdef> + </sectiondef> + <sectiondef kind="public-func"> + <memberdef kind="function" id="class_rew_1_1_bucket_1a26d4ad2b2302ad18be73b383d70f2c44" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::Bucket< T >::Bucket</definition> + <argsstring>()=default</argsstring> + <name>Bucket</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="14" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1aa80d0bdc739c2446e33312b6f7fa1fae" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> + <type></type> + <definition>Rew::Bucket< T >::Bucket</definition> + <argsstring>(Bucket &&other) noexcept</argsstring> + <name>Bucket</name> + <param> + <type><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="15" column="1" bodyfile="include/decoder/bucket.h" bodystart="15" bodyend="17"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1a44338da96cb18d730ed767896fe148bf" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::Bucket< T >::Bucket</definition> + <argsstring>(const Bucket &other)=delete</argsstring> + <name>Bucket</name> + <param> + <type>const <ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="18" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1aff77d0f0031128e321d62c0f6e39f760" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual"> + <type></type> + <definition>virtual Rew::Bucket< T >::~Bucket</definition> + <argsstring>()=default</argsstring> + <name>~Bucket</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="19" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1aa34958b0d7d35a288b45952460fe322e" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Bucket< T >::swap</definition> + <argsstring>(Bucket &other) noexcept</argsstring> + <name>swap</name> + <param> + <type><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="20" column="1" bodyfile="include/decoder/bucket.h" bodystart="20" bodyend="23"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1a24d6780a56671976c1dd50eec59f90f4" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> + <type><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref> &</type> + <definition>Bucket& Rew::Bucket< T >::operator=</definition> + <argsstring>(Bucket &&other) noexcept</argsstring> + <name>operator=</name> + <param> + <type><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="24" column="1" bodyfile="include/decoder/bucket.h" bodystart="24" bodyend="29"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1acccd57a3a54af96e368ee2434a43e6f0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref> &</type> + <definition>Bucket& Rew::Bucket< T >::operator=</definition> + <argsstring>(const Bucket &other)=delete</argsstring> + <name>operator=</name> + <param> + <type>const <ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="30" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1ac5cbeedb6b0b579ec26c9669a6754571" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Bucket< T >::pushBack</definition> + <argsstring>(const typename std::vector< T >::value_type &value)</argsstring> + <name>pushBack</name> + <param> + <type>const typename std::vector< T >::value_type &</type> + <declname>value</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="32" column="1" bodyfile="include/decoder/bucket.h" bodystart="32" bodyend="37"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1a220215d7c14acc8ebf3a93918f81468b" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual"> + <type>size_t</type> + <definition>size_t Rew::Bucket< T >::size</definition> + <argsstring>() const</argsstring> + <name>size</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="39" column="1" bodyfile="include/decoder/bucket.h" bodystart="39" bodyend="41"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1a412e4d2186c14d8296f17c63ff7465d8" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> + <type>std::vector< T >::iterator</type> + <definition>std::vector<T>::iterator Rew::Bucket< T >::begin</definition> + <argsstring>()</argsstring> + <name>begin</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="43" column="1" bodyfile="include/decoder/bucket.h" bodystart="43" bodyend="45"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1afc320156c6efd79f8e86667aa7f7cb05" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual"> + <type>std::vector< T >::const_iterator</type> + <definition>std::vector<T>::const_iterator Rew::Bucket< T >::begin</definition> + <argsstring>() const</argsstring> + <name>begin</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="47" column="1" bodyfile="include/decoder/bucket.h" bodystart="47" bodyend="49"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1a51fb9092c7601809ce04367ae1cc8beb" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> + <type>std::vector< T >::iterator</type> + <definition>std::vector<T>::iterator Rew::Bucket< T >::end</definition> + <argsstring>()</argsstring> + <name>end</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="51" column="1" bodyfile="include/decoder/bucket.h" bodystart="51" bodyend="53"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1a8b0f1a414910a05f2742dccdcb7e3fa9" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual"> + <type>std::vector< T >::const_iterator</type> + <definition>std::vector<T>::const_iterator Rew::Bucket< T >::end</definition> + <argsstring>() const</argsstring> + <name>end</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="55" column="1" bodyfile="include/decoder/bucket.h" bodystart="55" bodyend="57"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1ab0490d14ae89f27f16982294ae1f56e1" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Bucket< T >::clear</definition> + <argsstring>()</argsstring> + <name>clear</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="59" column="1" bodyfile="include/decoder/bucket.h" bodystart="59" bodyend="61"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1acda8cc938f48bf23c01b3644ff0d114c" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> + <type>std::vector< T >::value_type &</type> + <definition>std::vector<T>::value_type& Rew::Bucket< T >::operator[]</definition> + <argsstring>(size_t i)</argsstring> + <name>operator[]</name> + <param> + <type>size_t</type> + <declname>i</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="63" column="1" bodyfile="include/decoder/bucket.h" bodystart="63" bodyend="65"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_bucket_1a03c0248f1d3e025dda02331ca6e54bd2" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual"> + <type>const std::vector< T >::value_type &</type> + <definition>const std::vector<T>::value_type& Rew::Bucket< T >::operator[]</definition> + <argsstring>(size_t i) const</argsstring> + <name>operator[]</name> + <param> + <type>size_t</type> + <declname>i</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/bucket.h" line="67" column="1" bodyfile="include/decoder/bucket.h" bodystart="67" bodyend="69"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <location file="include/decoder/bucket.h" line="12" column="1" bodyfile="include/decoder/bucket.h" bodystart="12" bodyend="72"/> + <listofallmembers> + <member refid="class_rew_1_1_bucket_1a412e4d2186c14d8296f17c63ff7465d8" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>begin</name></member> + <member refid="class_rew_1_1_bucket_1afc320156c6efd79f8e86667aa7f7cb05" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>begin</name></member> + <member refid="class_rew_1_1_bucket_1a26d4ad2b2302ad18be73b383d70f2c44" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>Bucket</name></member> + <member refid="class_rew_1_1_bucket_1aa80d0bdc739c2446e33312b6f7fa1fae" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>Bucket</name></member> + <member refid="class_rew_1_1_bucket_1a44338da96cb18d730ed767896fe148bf" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>Bucket</name></member> + <member refid="class_rew_1_1_bucket_1ab0490d14ae89f27f16982294ae1f56e1" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>clear</name></member> + <member refid="class_rew_1_1_bucket_1a51fb9092c7601809ce04367ae1cc8beb" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>end</name></member> + <member refid="class_rew_1_1_bucket_1a8b0f1a414910a05f2742dccdcb7e3fa9" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>end</name></member> + <member refid="class_rew_1_1_bucket_1a24d6780a56671976c1dd50eec59f90f4" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>operator=</name></member> + <member refid="class_rew_1_1_bucket_1acccd57a3a54af96e368ee2434a43e6f0" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>operator=</name></member> + <member refid="class_rew_1_1_bucket_1acda8cc938f48bf23c01b3644ff0d114c" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>operator[]</name></member> + <member refid="class_rew_1_1_bucket_1a03c0248f1d3e025dda02331ca6e54bd2" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>operator[]</name></member> + <member refid="class_rew_1_1_bucket_1ac5cbeedb6b0b579ec26c9669a6754571" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>pushBack</name></member> + <member refid="class_rew_1_1_bucket_1a220215d7c14acc8ebf3a93918f81468b" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>size</name></member> + <member refid="class_rew_1_1_bucket_1aa34958b0d7d35a288b45952460fe322e" prot="public" virt="non-virtual"><scope>Rew::Bucket</scope><name>swap</name></member> + <member refid="class_rew_1_1_bucket_1acbc95b93eb4ceff039ee2bf9050dfd3b" prot="private" virt="non-virtual"><scope>Rew::Bucket</scope><name>vector</name></member> + <member refid="class_rew_1_1_bucket_1aff77d0f0031128e321d62c0f6e39f760" prot="public" virt="virtual"><scope>Rew::Bucket</scope><name>~Bucket</name></member> + </listofallmembers> + </compounddef> +</doxygen> diff --git a/doxygen/xml/class_rew_1_1_byte_assembler.xml b/doxygen/xml/class_rew_1_1_byte_assembler.xml new file mode 100644 index 0000000000000000000000000000000000000000..e70be2aab8bf9af7d54a48a68ccb6152a4eb9303 --- /dev/null +++ b/doxygen/xml/class_rew_1_1_byte_assembler.xml @@ -0,0 +1,208 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="class_rew_1_1_byte_assembler" kind="class" language="C++" prot="public"> + <compoundname>Rew::ByteAssembler</compoundname> + <includes refid="byte__assembler_8h" local="no">byte_assembler.h</includes> + <sectiondef kind="private-attrib"> + <memberdef kind="variable" id="class_rew_1_1_byte_assembler_1a68242e586e317103789946300a7126d8" prot="private" static="no" mutable="no"> + <type><ref refid="class_rew_1_1_bucket" kindref="compound">Bucket</ref>< unsigned char ></type> + <definition>Bucket<unsigned char> Rew::ByteAssembler::buffer</definition> + <argsstring></argsstring> + <name>buffer</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="25" column="1" bodyfile="include/decoder/byte_assembler.h" bodystart="25" bodyend="-1"/> + </memberdef> + </sectiondef> + <sectiondef kind="public-func"> + <memberdef kind="function" id="class_rew_1_1_byte_assembler_1a5a7a1c9ce7a2e928afa23a0e3598cb92" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::ByteAssembler::ByteAssembler</definition> + <argsstring>()</argsstring> + <name>ByteAssembler</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="14" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_byte_assembler_1a6b63b45d083d74819ed12dc380b7e64b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::ByteAssembler::ByteAssembler</definition> + <argsstring>(ByteAssembler &&other) noexcept</argsstring> + <name>ByteAssembler</name> + <param> + <type><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="15" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_byte_assembler_1a2f3f8050d82ed23bef25cbcd91c51cc7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::ByteAssembler::ByteAssembler</definition> + <argsstring>(const ByteAssembler &other)=delete</argsstring> + <name>ByteAssembler</name> + <param> + <type>const <ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="16" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_byte_assembler_1a1b9676cb634c5e58292528b4dd66a632" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::ByteAssembler::swap</definition> + <argsstring>(ByteAssembler &other) noexcept</argsstring> + <name>swap</name> + <param> + <type><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="17" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_byte_assembler_1ad0c945b42ab0799a909e90819e65282e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref> &</type> + <definition>ByteAssembler& Rew::ByteAssembler::operator=</definition> + <argsstring>(ByteAssembler &&other) noexcept</argsstring> + <name>operator=</name> + <param> + <type><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="18" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_byte_assembler_1aea609342e2813315926997783da794e8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref> &</type> + <definition>ByteAssembler& Rew::ByteAssembler::operator=</definition> + <argsstring>(const ByteAssembler &other)=delete</argsstring> + <name>operator=</name> + <param> + <type>const <ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="19" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_byte_assembler_1a269def0ed892b84e5284f80008dd0837" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::ByteAssembler::operator()</definition> + <argsstring>(unsigned char magnitude, const std::function< void(unsigned char)> &callback)</argsstring> + <name>operator()</name> + <param> + <type>unsigned char</type> + <declname>magnitude</declname> + </param> + <param> + <type>const std::function< void(unsigned char)> &</type> + <declname>callback</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="21" column="1"/> + </memberdef> + </sectiondef> + <sectiondef kind="private-static-func"> + <memberdef kind="function" id="class_rew_1_1_byte_assembler_1a1c0c4cc1d99eaada68c33725aa7c90e4" prot="private" static="yes" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>size_t</type> + <definition>static size_t Rew::ByteAssembler::countValue</definition> + <argsstring>(const unsigned char *begin, const unsigned char *end, unsigned char value)</argsstring> + <name>countValue</name> + <param> + <type>const unsigned char *</type> + <declname>begin</declname> + </param> + <param> + <type>const unsigned char *</type> + <declname>end</declname> + </param> + <param> + <type>unsigned char</type> + <declname>value</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="23" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_byte_assembler_1a15cf8c29c1c6fb7f9eb7f62c82093a80" prot="private" static="yes" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>unsigned char</type> + <definition>static unsigned char Rew::ByteAssembler::toByte</definition> + <argsstring>(const unsigned char *begin, const unsigned char *end)</argsstring> + <name>toByte</name> + <param> + <type>const unsigned char *</type> + <declname>begin</declname> + </param> + <param> + <type>const unsigned char *</type> + <declname>end</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/byte_assembler.h" line="24" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <location file="include/decoder/byte_assembler.h" line="12" column="1" bodyfile="include/decoder/byte_assembler.h" bodystart="12" bodyend="26"/> + <listofallmembers> + <member refid="class_rew_1_1_byte_assembler_1a68242e586e317103789946300a7126d8" prot="private" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>buffer</name></member> + <member refid="class_rew_1_1_byte_assembler_1a5a7a1c9ce7a2e928afa23a0e3598cb92" prot="public" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>ByteAssembler</name></member> + <member refid="class_rew_1_1_byte_assembler_1a6b63b45d083d74819ed12dc380b7e64b" prot="public" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>ByteAssembler</name></member> + <member refid="class_rew_1_1_byte_assembler_1a2f3f8050d82ed23bef25cbcd91c51cc7" prot="public" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>ByteAssembler</name></member> + <member refid="class_rew_1_1_byte_assembler_1a1c0c4cc1d99eaada68c33725aa7c90e4" prot="private" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>countValue</name></member> + <member refid="class_rew_1_1_byte_assembler_1a269def0ed892b84e5284f80008dd0837" prot="public" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>operator()</name></member> + <member refid="class_rew_1_1_byte_assembler_1ad0c945b42ab0799a909e90819e65282e" prot="public" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>operator=</name></member> + <member refid="class_rew_1_1_byte_assembler_1aea609342e2813315926997783da794e8" prot="public" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>operator=</name></member> + <member refid="class_rew_1_1_byte_assembler_1a1b9676cb634c5e58292528b4dd66a632" prot="public" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>swap</name></member> + <member refid="class_rew_1_1_byte_assembler_1a15cf8c29c1c6fb7f9eb7f62c82093a80" prot="private" virt="non-virtual"><scope>Rew::ByteAssembler</scope><name>toByte</name></member> + </listofallmembers> + </compounddef> +</doxygen> diff --git a/doxygen/xml/class_rew_1_1_decoder.xml b/doxygen/xml/class_rew_1_1_decoder.xml new file mode 100644 index 0000000000000000000000000000000000000000..b211ab98951c55889029375eed5dec70873f117e --- /dev/null +++ b/doxygen/xml/class_rew_1_1_decoder.xml @@ -0,0 +1,317 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="class_rew_1_1_decoder" kind="class" language="C++" prot="public"> + <compoundname>Rew::Decoder</compoundname> + <includes refid="decoder_8h" local="no">decoder.h</includes> + <sectiondef kind="private-attrib"> + <memberdef kind="variable" id="class_rew_1_1_decoder_1af6cc7425e112b2db1f2641a501ec3cda" prot="private" static="no" mutable="no"> + <type>size_t</type> + <definition>size_t Rew::Decoder::blockSize</definition> + <argsstring></argsstring> + <name>blockSize</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="37" column="1" bodyfile="include/decoder/decoder.h" bodystart="37" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_decoder_1adf24b0af05fa183f082c2c1541389abf" prot="private" static="no" mutable="no"> + <type><ref refid="class_rew_1_1_goertzel" kindref="compound">Goertzel</ref></type> + <definition>Goertzel Rew::Decoder::lowGoertzel</definition> + <argsstring></argsstring> + <name>lowGoertzel</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="38" column="1" bodyfile="include/decoder/decoder.h" bodystart="38" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_decoder_1a97039031c00bdf00dc64bb2d373795bb" prot="private" static="no" mutable="no"> + <type><ref refid="class_rew_1_1_goertzel" kindref="compound">Goertzel</ref></type> + <definition>Goertzel Rew::Decoder::highGoertzel</definition> + <argsstring></argsstring> + <name>highGoertzel</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="39" column="1" bodyfile="include/decoder/decoder.h" bodystart="39" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_decoder_1a58c85fb9b5be4a9c00e2e9e351991cb9" prot="private" static="no" mutable="no"> + <type>std::unique_ptr< float ></type> + <definition>std::unique_ptr<float> Rew::Decoder::buffer</definition> + <argsstring></argsstring> + <name>buffer</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="40" column="1" bodyfile="include/decoder/decoder.h" bodystart="40" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_decoder_1a8aca3fb866d8d663a863b375b26a4490" prot="private" static="no" mutable="no"> + <type><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref></type> + <definition>ByteAssembler Rew::Decoder::byteAssembler</definition> + <argsstring></argsstring> + <name>byteAssembler</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="41" column="1" bodyfile="include/decoder/decoder.h" bodystart="41" bodyend="-1"/> + </memberdef> + </sectiondef> + <sectiondef kind="public-func"> + <memberdef kind="function" id="class_rew_1_1_decoder_1ae253e716569f260f8c00bba62b715ac3" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::Decoder::Decoder</definition> + <argsstring>(size_t lowToneFreq=2400, size_t highToneFreq=4800, double sampleLengthMs=1.25)</argsstring> + <name>Decoder</name> + <param> + <type>size_t</type> + <declname>lowToneFreq</declname> + <defval>2400</defval> + </param> + <param> + <type>size_t</type> + <declname>highToneFreq</declname> + <defval>4800</defval> + </param> + <param> + <type>double</type> + <declname>sampleLengthMs</declname> + <defval>1.25</defval> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="21" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1ac3eff2261a903149a73dd6006bdbb51b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::Decoder::Decoder</definition> + <argsstring>(Decoder &&other) noexcept</argsstring> + <name>Decoder</name> + <param> + <type><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="25" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1a52a421be82572621f079bbfc6ddefef5" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::Decoder::Decoder</definition> + <argsstring>(const Decoder &other)=delete</argsstring> + <name>Decoder</name> + <param> + <type>const <ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="26" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1a9f64b20ac742596b863ae501eae8d487" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual"> + <type></type> + <definition>virtual Rew::Decoder::~Decoder</definition> + <argsstring>()=default</argsstring> + <name>~Decoder</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="27" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1ad969594c2b324386833aa72ad797ed6c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Decoder::swap</definition> + <argsstring>(Decoder &other) noexcept</argsstring> + <name>swap</name> + <param> + <type><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="28" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1a632a4f0a49b4296fd1ad72e0d9c80704" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref> &</type> + <definition>Decoder& Rew::Decoder::operator=</definition> + <argsstring>(Decoder &&other) noexcept</argsstring> + <name>operator=</name> + <param> + <type><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="29" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1a189cb08a95c53b70c35164286c5a9061" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref> &</type> + <definition>Decoder& Rew::Decoder::operator=</definition> + <argsstring>(const Decoder &other)=delete</argsstring> + <name>operator=</name> + <param> + <type>const <ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="30" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1ac241d859a05f016a4f8b0c3959539426" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Decoder::operator()</definition> + <argsstring>(const float *samples, size_t length, const std::function< void(unsigned char)> &callback)</argsstring> + <name>operator()</name> + <param> + <type>const float *</type> + <declname>samples</declname> + </param> + <param> + <type>size_t</type> + <declname>length</declname> + </param> + <param> + <type>const std::function< void(unsigned char)> &</type> + <declname>callback</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="32" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1a650bd842d77f10777a1af25a60cea7d2" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Decoder::operator()</definition> + <argsstring>(const float *samples, size_t length, const std::function< void(float, float)> &callback)</argsstring> + <name>operator()</name> + <param> + <type>const float *</type> + <declname>samples</declname> + </param> + <param> + <type>size_t</type> + <declname>length</declname> + </param> + <param> + <type>const std::function< void(float, float)> &</type> + <declname>callback</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="33" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1aa3febdd0293f6d329f55964d64ed9559" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>float *</type> + <definition>float* Rew::Decoder::getLowMagnitude</definition> + <argsstring>(const float *samples, size_t length)</argsstring> + <name>getLowMagnitude</name> + <param> + <type>const float *</type> + <declname>samples</declname> + </param> + <param> + <type>size_t</type> + <declname>length</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="34" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_decoder_1a954fcde976db8571a1550a23a38e376b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>float *</type> + <definition>float* Rew::Decoder::getHighMagnitude</definition> + <argsstring>(const float *samples, size_t length)</argsstring> + <name>getHighMagnitude</name> + <param> + <type>const float *</type> + <declname>samples</declname> + </param> + <param> + <type>size_t</type> + <declname>length</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/decoder.h" line="35" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <location file="include/decoder/decoder.h" line="19" column="1" bodyfile="include/decoder/decoder.h" bodystart="19" bodyend="42"/> + <listofallmembers> + <member refid="class_rew_1_1_decoder_1af6cc7425e112b2db1f2641a501ec3cda" prot="private" virt="non-virtual"><scope>Rew::Decoder</scope><name>blockSize</name></member> + <member refid="class_rew_1_1_decoder_1a58c85fb9b5be4a9c00e2e9e351991cb9" prot="private" virt="non-virtual"><scope>Rew::Decoder</scope><name>buffer</name></member> + <member refid="class_rew_1_1_decoder_1a8aca3fb866d8d663a863b375b26a4490" prot="private" virt="non-virtual"><scope>Rew::Decoder</scope><name>byteAssembler</name></member> + <member refid="class_rew_1_1_decoder_1ae253e716569f260f8c00bba62b715ac3" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>Decoder</name></member> + <member refid="class_rew_1_1_decoder_1ac3eff2261a903149a73dd6006bdbb51b" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>Decoder</name></member> + <member refid="class_rew_1_1_decoder_1a52a421be82572621f079bbfc6ddefef5" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>Decoder</name></member> + <member refid="class_rew_1_1_decoder_1a954fcde976db8571a1550a23a38e376b" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>getHighMagnitude</name></member> + <member refid="class_rew_1_1_decoder_1aa3febdd0293f6d329f55964d64ed9559" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>getLowMagnitude</name></member> + <member refid="class_rew_1_1_decoder_1a97039031c00bdf00dc64bb2d373795bb" prot="private" virt="non-virtual"><scope>Rew::Decoder</scope><name>highGoertzel</name></member> + <member refid="class_rew_1_1_decoder_1adf24b0af05fa183f082c2c1541389abf" prot="private" virt="non-virtual"><scope>Rew::Decoder</scope><name>lowGoertzel</name></member> + <member refid="class_rew_1_1_decoder_1ac241d859a05f016a4f8b0c3959539426" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>operator()</name></member> + <member refid="class_rew_1_1_decoder_1a650bd842d77f10777a1af25a60cea7d2" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>operator()</name></member> + <member refid="class_rew_1_1_decoder_1a632a4f0a49b4296fd1ad72e0d9c80704" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>operator=</name></member> + <member refid="class_rew_1_1_decoder_1a189cb08a95c53b70c35164286c5a9061" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>operator=</name></member> + <member refid="class_rew_1_1_decoder_1ad969594c2b324386833aa72ad797ed6c" prot="public" virt="non-virtual"><scope>Rew::Decoder</scope><name>swap</name></member> + <member refid="class_rew_1_1_decoder_1a9f64b20ac742596b863ae501eae8d487" prot="public" virt="virtual"><scope>Rew::Decoder</scope><name>~Decoder</name></member> + </listofallmembers> + </compounddef> +</doxygen> diff --git a/doxygen/xml/class_rew_1_1_encoder.xml b/doxygen/xml/class_rew_1_1_encoder.xml new file mode 100644 index 0000000000000000000000000000000000000000..e1a877b48ecb5d088c699597ddffa1c0b7385376 --- /dev/null +++ b/doxygen/xml/class_rew_1_1_encoder.xml @@ -0,0 +1,219 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="class_rew_1_1_encoder" kind="class" language="C++" prot="public"> + <compoundname>Rew::Encoder</compoundname> + <includes refid="encoder_8h" local="no">encoder.h</includes> + <sectiondef kind="private-attrib"> + <memberdef kind="variable" id="class_rew_1_1_encoder_1abab25a20be3f4f7cc8fada65321fb855" prot="private" static="no" mutable="no"> + <type><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref></type> + <definition>ToneSynth Rew::Encoder::lowTone</definition> + <argsstring></argsstring> + <name>lowTone</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="32" column="1" bodyfile="include/encoder/encoder.h" bodystart="32" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_encoder_1a21b9fb238f3b7cc1b56a58b75e22018f" prot="private" static="no" mutable="no"> + <type><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref></type> + <definition>ToneSynth Rew::Encoder::highTone</definition> + <argsstring></argsstring> + <name>highTone</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="33" column="1" bodyfile="include/encoder/encoder.h" bodystart="33" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_encoder_1ae9018203e48442fc11f71ca4dc91d11b" prot="private" static="no" mutable="no"> + <type>std::unique_ptr< float[]></type> + <definition>std::unique_ptr<float[]> Rew::Encoder::nullTone</definition> + <argsstring></argsstring> + <name>nullTone</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="34" column="1" bodyfile="include/encoder/encoder.h" bodystart="34" bodyend="-1"/> + </memberdef> + </sectiondef> + <sectiondef kind="public-func"> + <memberdef kind="function" id="class_rew_1_1_encoder_1a1ef7cf58b6f6addfb22fdaa1c9ba7df7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::Encoder::Encoder</definition> + <argsstring>(size_t lowToneFreq=2400, size_t highToneFreq=4800, double sampleLengthMs=1.25)</argsstring> + <name>Encoder</name> + <param> + <type>size_t</type> + <declname>lowToneFreq</declname> + <defval>2400</defval> + </param> + <param> + <type>size_t</type> + <declname>highToneFreq</declname> + <defval>4800</defval> + </param> + <param> + <type>double</type> + <declname>sampleLengthMs</declname> + <defval>1.25</defval> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="19" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_encoder_1ab018bb9b035bd40da89d04109e4c2374" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::Encoder::Encoder</definition> + <argsstring>(Encoder &&other) noexcept</argsstring> + <name>Encoder</name> + <param> + <type><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="23" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_encoder_1a81fb438ec14c31d3e86f1c6f35b0f41c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::Encoder::Encoder</definition> + <argsstring>(const Encoder &other)=delete</argsstring> + <name>Encoder</name> + <param> + <type>const <ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="24" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_encoder_1a2d121516fb43077f1d8dc318a02feac6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Encoder::swap</definition> + <argsstring>(Encoder &other) noexcept</argsstring> + <name>swap</name> + <param> + <type><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="25" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_encoder_1a487d21e4e2135a174f08fbc71c182ae9" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref> &</type> + <definition>Encoder& Rew::Encoder::operator=</definition> + <argsstring>(Encoder &&other) noexcept</argsstring> + <name>operator=</name> + <param> + <type><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="26" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_encoder_1a7cb96ed4848060c6479076eb8d79ab87" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref> &</type> + <definition>Encoder& Rew::Encoder::operator=</definition> + <argsstring>(const Encoder &other)=delete</argsstring> + <name>operator=</name> + <param> + <type>const <ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="27" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_encoder_1a0fbf3ed6f39c0099771eef9e64d294ea" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type>float *</type> + <definition>float* Rew::Encoder::operator()</definition> + <argsstring>(const unsigned char *data, size_t length) const</argsstring> + <name>operator()</name> + <param> + <type>const unsigned char *</type> + <declname>data</declname> + </param> + <param> + <type>size_t</type> + <declname>length</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="29" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_encoder_1a5a0eff754a3373a361ae2c78d692bdc4" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type>size_t</type> + <definition>size_t Rew::Encoder::getNumOfSamples</definition> + <argsstring>(size_t length) const</argsstring> + <name>getNumOfSamples</name> + <param> + <type>size_t</type> + <declname>length</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/encoder.h" line="30" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <location file="include/encoder/encoder.h" line="17" column="1" bodyfile="include/encoder/encoder.h" bodystart="17" bodyend="35"/> + <listofallmembers> + <member refid="class_rew_1_1_encoder_1a1ef7cf58b6f6addfb22fdaa1c9ba7df7" prot="public" virt="non-virtual"><scope>Rew::Encoder</scope><name>Encoder</name></member> + <member refid="class_rew_1_1_encoder_1ab018bb9b035bd40da89d04109e4c2374" prot="public" virt="non-virtual"><scope>Rew::Encoder</scope><name>Encoder</name></member> + <member refid="class_rew_1_1_encoder_1a81fb438ec14c31d3e86f1c6f35b0f41c" prot="public" virt="non-virtual"><scope>Rew::Encoder</scope><name>Encoder</name></member> + <member refid="class_rew_1_1_encoder_1a5a0eff754a3373a361ae2c78d692bdc4" prot="public" virt="non-virtual"><scope>Rew::Encoder</scope><name>getNumOfSamples</name></member> + <member refid="class_rew_1_1_encoder_1a21b9fb238f3b7cc1b56a58b75e22018f" prot="private" virt="non-virtual"><scope>Rew::Encoder</scope><name>highTone</name></member> + <member refid="class_rew_1_1_encoder_1abab25a20be3f4f7cc8fada65321fb855" prot="private" virt="non-virtual"><scope>Rew::Encoder</scope><name>lowTone</name></member> + <member refid="class_rew_1_1_encoder_1ae9018203e48442fc11f71ca4dc91d11b" prot="private" virt="non-virtual"><scope>Rew::Encoder</scope><name>nullTone</name></member> + <member refid="class_rew_1_1_encoder_1a0fbf3ed6f39c0099771eef9e64d294ea" prot="public" virt="non-virtual"><scope>Rew::Encoder</scope><name>operator()</name></member> + <member refid="class_rew_1_1_encoder_1a487d21e4e2135a174f08fbc71c182ae9" prot="public" virt="non-virtual"><scope>Rew::Encoder</scope><name>operator=</name></member> + <member refid="class_rew_1_1_encoder_1a7cb96ed4848060c6479076eb8d79ab87" prot="public" virt="non-virtual"><scope>Rew::Encoder</scope><name>operator=</name></member> + <member refid="class_rew_1_1_encoder_1a2d121516fb43077f1d8dc318a02feac6" prot="public" virt="non-virtual"><scope>Rew::Encoder</scope><name>swap</name></member> + </listofallmembers> + </compounddef> +</doxygen> diff --git a/doxygen/xml/class_rew_1_1_goertzel.xml b/doxygen/xml/class_rew_1_1_goertzel.xml new file mode 100644 index 0000000000000000000000000000000000000000..ae37d6367484da387dc502c0f4d1b65797900de4 --- /dev/null +++ b/doxygen/xml/class_rew_1_1_goertzel.xml @@ -0,0 +1,248 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="class_rew_1_1_goertzel" kind="class" language="C++" prot="public"> + <compoundname>Rew::Goertzel</compoundname> + <includes refid="goertzel_8h" local="no">goertzel.h</includes> + <sectiondef kind="private-attrib"> + <memberdef kind="variable" id="class_rew_1_1_goertzel_1aa4d84715b925577ab63368b59044edc9" prot="private" static="no" mutable="no"> + <type>float</type> + <definition>float Rew::Goertzel::coeff</definition> + <argsstring></argsstring> + <name>coeff</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="26" column="1" bodyfile="include/decoder/goertzel.h" bodystart="26" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_goertzel_1af231f9f7c1d7abcba220d8c648e121a1" prot="private" static="no" mutable="no"> + <type>float</type> + <definition>float Rew::Goertzel::Q1</definition> + <argsstring></argsstring> + <name>Q1</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="27" column="1" bodyfile="include/decoder/goertzel.h" bodystart="27" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_goertzel_1a10a385a1ef24f90178fc8ac5ea89767c" prot="private" static="no" mutable="no"> + <type>float</type> + <definition>float Rew::Goertzel::Q2</definition> + <argsstring></argsstring> + <name>Q2</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="28" column="1" bodyfile="include/decoder/goertzel.h" bodystart="28" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_goertzel_1a64e806f9edd8eeee230547b2f99bde19" prot="private" static="no" mutable="no"> + <type>float</type> + <definition>float Rew::Goertzel::sine</definition> + <argsstring></argsstring> + <name>sine</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="29" column="1" bodyfile="include/decoder/goertzel.h" bodystart="29" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_goertzel_1ac7be9bdbcd8c4ba2ac281c0ff4747f6b" prot="private" static="no" mutable="no"> + <type>float</type> + <definition>float Rew::Goertzel::cosine</definition> + <argsstring></argsstring> + <name>cosine</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="30" column="1" bodyfile="include/decoder/goertzel.h" bodystart="30" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_goertzel_1a9d9347d8bfa02fc805875d3bb52ce6bd" prot="private" static="no" mutable="no"> + <type>size_t</type> + <definition>size_t Rew::Goertzel::blockSize</definition> + <argsstring></argsstring> + <name>blockSize</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="31" column="1" bodyfile="include/decoder/goertzel.h" bodystart="31" bodyend="-1"/> + </memberdef> + </sectiondef> + <sectiondef kind="public-func"> + <memberdef kind="function" id="class_rew_1_1_goertzel_1ae5f0a6149e1c9a8cbf2e3a89cbb3a0ef" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::Goertzel::Goertzel</definition> + <argsstring>(size_t blockSize, float targetFrequency, float sampleRate)</argsstring> + <name>Goertzel</name> + <param> + <type>size_t</type> + <declname>blockSize</declname> + </param> + <param> + <type>float</type> + <declname>targetFrequency</declname> + </param> + <param> + <type>float</type> + <declname>sampleRate</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="12" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_goertzel_1a07d48d1c8342c443f5573a661a240da3" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual"> + <type></type> + <definition>virtual Rew::Goertzel::~Goertzel</definition> + <argsstring>()=default</argsstring> + <name>~Goertzel</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="13" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_goertzel_1a781fe776d1841c2591d16a4288c67757" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>float</type> + <definition>float Rew::Goertzel::operator()</definition> + <argsstring>(const float *samples)</argsstring> + <name>operator()</name> + <param> + <type>const float *</type> + <declname>samples</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="15" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_goertzel_1ae28f15fc29df22d452b61fc43fb66aa8" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual"> + <type>size_t</type> + <definition>size_t Rew::Goertzel::getBlockSize</definition> + <argsstring>() const</argsstring> + <name>getBlockSize</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="17" column="1" bodyfile="include/decoder/goertzel.h" bodystart="17" bodyend="19"/> + </memberdef> + </sectiondef> + <sectiondef kind="private-func"> + <memberdef kind="function" id="class_rew_1_1_goertzel_1a308f30e32fef56737d077941730a9fe3" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Goertzel::processSample</definition> + <argsstring>(float sample)</argsstring> + <name>processSample</name> + <param> + <type>float</type> + <declname>sample</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="21" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_goertzel_1a679a7cf5c39ed0d6960c3d72ce23c4c2" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Goertzel::init</definition> + <argsstring>(size_t blockSize, float targetFrequency, float sampleRate)</argsstring> + <name>init</name> + <param> + <type>size_t</type> + <declname>blockSize</declname> + </param> + <param> + <type>float</type> + <declname>targetFrequency</declname> + </param> + <param> + <type>float</type> + <declname>sampleRate</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="22" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_goertzel_1ab2e4991eb6a7a1ef205d6f2dc26785f0" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::Goertzel::reset</definition> + <argsstring>()</argsstring> + <name>reset</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="23" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_goertzel_1a5178077648810edec45d07462a59df86" prot="private" static="no" const="yes" explicit="no" inline="no" virt="non-virtual"> + <type>float</type> + <definition>float Rew::Goertzel::getMagnitude</definition> + <argsstring>() const</argsstring> + <name>getMagnitude</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/decoder/goertzel.h" line="24" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <location file="include/decoder/goertzel.h" line="10" column="1" bodyfile="include/decoder/goertzel.h" bodystart="10" bodyend="32"/> + <listofallmembers> + <member refid="class_rew_1_1_goertzel_1a9d9347d8bfa02fc805875d3bb52ce6bd" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>blockSize</name></member> + <member refid="class_rew_1_1_goertzel_1aa4d84715b925577ab63368b59044edc9" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>coeff</name></member> + <member refid="class_rew_1_1_goertzel_1ac7be9bdbcd8c4ba2ac281c0ff4747f6b" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>cosine</name></member> + <member refid="class_rew_1_1_goertzel_1ae28f15fc29df22d452b61fc43fb66aa8" prot="public" virt="non-virtual"><scope>Rew::Goertzel</scope><name>getBlockSize</name></member> + <member refid="class_rew_1_1_goertzel_1a5178077648810edec45d07462a59df86" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>getMagnitude</name></member> + <member refid="class_rew_1_1_goertzel_1ae5f0a6149e1c9a8cbf2e3a89cbb3a0ef" prot="public" virt="non-virtual"><scope>Rew::Goertzel</scope><name>Goertzel</name></member> + <member refid="class_rew_1_1_goertzel_1a679a7cf5c39ed0d6960c3d72ce23c4c2" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>init</name></member> + <member refid="class_rew_1_1_goertzel_1a781fe776d1841c2591d16a4288c67757" prot="public" virt="non-virtual"><scope>Rew::Goertzel</scope><name>operator()</name></member> + <member refid="class_rew_1_1_goertzel_1a308f30e32fef56737d077941730a9fe3" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>processSample</name></member> + <member refid="class_rew_1_1_goertzel_1af231f9f7c1d7abcba220d8c648e121a1" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>Q1</name></member> + <member refid="class_rew_1_1_goertzel_1a10a385a1ef24f90178fc8ac5ea89767c" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>Q2</name></member> + <member refid="class_rew_1_1_goertzel_1ab2e4991eb6a7a1ef205d6f2dc26785f0" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>reset</name></member> + <member refid="class_rew_1_1_goertzel_1a64e806f9edd8eeee230547b2f99bde19" prot="private" virt="non-virtual"><scope>Rew::Goertzel</scope><name>sine</name></member> + <member refid="class_rew_1_1_goertzel_1a07d48d1c8342c443f5573a661a240da3" prot="public" virt="virtual"><scope>Rew::Goertzel</scope><name>~Goertzel</name></member> + </listofallmembers> + </compounddef> +</doxygen> diff --git a/doxygen/xml/class_rew_1_1_synth.xml b/doxygen/xml/class_rew_1_1_synth.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd0c64ffbf616d6756d7eb548510f7d25ff6dcc1 --- /dev/null +++ b/doxygen/xml/class_rew_1_1_synth.xml @@ -0,0 +1,48 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="class_rew_1_1_synth" kind="class" language="C++" prot="public" abstract="yes"> + <compoundname>Rew::Synth</compoundname> + <derivedcompoundref refid="class_rew_1_1_tone_synth" prot="public" virt="non-virtual">Rew::ToneSynth</derivedcompoundref> + <includes refid="synth_8h" local="no">synth.h</includes> + <sectiondef kind="public-func"> + <memberdef kind="function" id="class_rew_1_1_synth_1ace1cefd258dc0d74251541a59f5b2ac6" prot="public" static="no" const="yes" explicit="no" inline="no" virt="pure-virtual"> + <type>size_t</type> + <definition>virtual size_t Rew::Synth::operator()</definition> + <argsstring>(float *dst) const =0</argsstring> + <name>operator()</name> + <reimplementedby refid="class_rew_1_1_tone_synth_1aac7488713a60314c28bf2ce69254bed3">operator()</reimplementedby> + <param> + <type>float *</type> + <declname>dst</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/synth.h" line="12" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inheritancegraph> + <node id="14"> + <label>Rew::ToneSynth</label> + <link refid="class_rew_1_1_tone_synth"/> + <childnode refid="13" relation="public-inheritance"> + </childnode> + </node> + <node id="13"> + <label>Rew::Synth</label> + <link refid="class_rew_1_1_synth"/> + </node> + </inheritancegraph> + <location file="include/encoder/synth.h" line="10" column="1" bodyfile="include/encoder/synth.h" bodystart="10" bodyend="13"/> + <listofallmembers> + <member refid="class_rew_1_1_synth_1ace1cefd258dc0d74251541a59f5b2ac6" prot="public" virt="pure-virtual"><scope>Rew::Synth</scope><name>operator()</name></member> + </listofallmembers> + </compounddef> +</doxygen> diff --git a/doxygen/xml/class_rew_1_1_tone_synth.xml b/doxygen/xml/class_rew_1_1_tone_synth.xml new file mode 100644 index 0000000000000000000000000000000000000000..d89e10201e070bd0fdb3059a0e23313e6239b648 --- /dev/null +++ b/doxygen/xml/class_rew_1_1_tone_synth.xml @@ -0,0 +1,240 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="class_rew_1_1_tone_synth" kind="class" language="C++" prot="public"> + <compoundname>Rew::ToneSynth</compoundname> + <basecompoundref refid="class_rew_1_1_synth" prot="public" virt="non-virtual">Rew::Synth</basecompoundref> + <includes refid="tone__synth_8h" local="no">tone_synth.h</includes> + <sectiondef kind="private-attrib"> + <memberdef kind="variable" id="class_rew_1_1_tone_synth_1a6aa45a42763100554f5062dd8f03bb37" prot="private" static="no" mutable="no"> + <type>size_t</type> + <definition>size_t Rew::ToneSynth::frequency</definition> + <argsstring></argsstring> + <name>frequency</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="27" column="1" bodyfile="include/encoder/tone_synth.h" bodystart="27" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_tone_synth_1aa27efd3fcc9a3da57aab4c528654dff7" prot="private" static="no" mutable="no"> + <type>size_t</type> + <definition>size_t Rew::ToneSynth::total</definition> + <argsstring></argsstring> + <name>total</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="28" column="1" bodyfile="include/encoder/tone_synth.h" bodystart="28" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_tone_synth_1a665a2d073189fd425d21c405da41ab8e" prot="private" static="no" mutable="no"> + <type>std::unique_ptr< float[]></type> + <definition>std::unique_ptr<float[]> Rew::ToneSynth::src</definition> + <argsstring></argsstring> + <name>src</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="29" column="1" bodyfile="include/encoder/tone_synth.h" bodystart="29" bodyend="-1"/> + </memberdef> + </sectiondef> + <sectiondef kind="public-func"> + <memberdef kind="function" id="class_rew_1_1_tone_synth_1aa07adb49b8173acbe587634375296b83" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::ToneSynth::ToneSynth</definition> + <argsstring>(size_t frequency, size_t sampleRate, double ms)</argsstring> + <name>ToneSynth</name> + <param> + <type>size_t</type> + <declname>frequency</declname> + </param> + <param> + <type>size_t</type> + <declname>sampleRate</declname> + </param> + <param> + <type>double</type> + <declname>ms</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="13" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_tone_synth_1a8198c80ea4d9f4fa5756b0da55c7cb3d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::ToneSynth::ToneSynth</definition> + <argsstring>(ToneSynth &&other) noexcept=default</argsstring> + <name>ToneSynth</name> + <param> + <type><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="14" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_tone_synth_1a442ec4059583bebb796999a77d6e54a0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::ToneSynth::ToneSynth</definition> + <argsstring>(const ToneSynth &other)=delete</argsstring> + <name>ToneSynth</name> + <param> + <type>const <ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="15" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_tone_synth_1af9f03f7e685e9ec65e7a2af37375d2f1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref> &</type> + <definition>ToneSynth& Rew::ToneSynth::operator=</definition> + <argsstring>(ToneSynth &&other) noexcept=default</argsstring> + <name>operator=</name> + <param> + <type><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref> &&</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="16" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_tone_synth_1a9ef2c6fe4b3a77a30310ae2db7767921" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref> &</type> + <definition>ToneSynth& Rew::ToneSynth::operator=</definition> + <argsstring>(const ToneSynth &other)=delete</argsstring> + <name>operator=</name> + <param> + <type>const <ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref> &</type> + <declname>other</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="17" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_tone_synth_1aac7488713a60314c28bf2ce69254bed3" prot="public" static="no" const="yes" explicit="no" inline="no" virt="virtual"> + <type>size_t</type> + <definition>size_t Rew::ToneSynth::operator()</definition> + <argsstring>(float *dst) const override</argsstring> + <name>operator()</name> + <reimplements refid="class_rew_1_1_synth_1ace1cefd258dc0d74251541a59f5b2ac6">operator()</reimplements> + <param> + <type>float *</type> + <declname>dst</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="19" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_tone_synth_1afe306b4551ee6abf6383d0c9b75e1d17" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual"> + <type>size_t</type> + <definition>size_t Rew::ToneSynth::getSamplesPerBlock</definition> + <argsstring>() const</argsstring> + <name>getSamplesPerBlock</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="20" column="1" bodyfile="include/encoder/tone_synth.h" bodystart="20" bodyend="22"/> + </memberdef> + </sectiondef> + <sectiondef kind="private-func"> + <memberdef kind="function" id="class_rew_1_1_tone_synth_1a27740d024ea2ee4115882c5ecb650341" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void Rew::ToneSynth::allocate</definition> + <argsstring>(size_t sampleRate, double ms)</argsstring> + <name>allocate</name> + <param> + <type>size_t</type> + <declname>sampleRate</declname> + </param> + <param> + <type>double</type> + <declname>ms</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/tone_synth.h" line="24" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inheritancegraph> + <node id="16"> + <label>Rew::ToneSynth</label> + <link refid="class_rew_1_1_tone_synth"/> + <childnode refid="17" relation="public-inheritance"> + </childnode> + </node> + <node id="17"> + <label>Rew::Synth</label> + <link refid="class_rew_1_1_synth"/> + </node> + </inheritancegraph> + <collaborationgraph> + <node id="18"> + <label>Rew::ToneSynth</label> + <link refid="class_rew_1_1_tone_synth"/> + <childnode refid="19" relation="public-inheritance"> + </childnode> + </node> + <node id="19"> + <label>Rew::Synth</label> + <link refid="class_rew_1_1_synth"/> + </node> + </collaborationgraph> + <location file="include/encoder/tone_synth.h" line="11" column="1" bodyfile="include/encoder/tone_synth.h" bodystart="11" bodyend="31"/> + <listofallmembers> + <member refid="class_rew_1_1_tone_synth_1a27740d024ea2ee4115882c5ecb650341" prot="private" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>allocate</name></member> + <member refid="class_rew_1_1_tone_synth_1a6aa45a42763100554f5062dd8f03bb37" prot="private" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>frequency</name></member> + <member refid="class_rew_1_1_tone_synth_1afe306b4551ee6abf6383d0c9b75e1d17" prot="public" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>getSamplesPerBlock</name></member> + <member refid="class_rew_1_1_tone_synth_1aac7488713a60314c28bf2ce69254bed3" prot="public" virt="virtual"><scope>Rew::ToneSynth</scope><name>operator()</name></member> + <member refid="class_rew_1_1_tone_synth_1af9f03f7e685e9ec65e7a2af37375d2f1" prot="public" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>operator=</name></member> + <member refid="class_rew_1_1_tone_synth_1a9ef2c6fe4b3a77a30310ae2db7767921" prot="public" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>operator=</name></member> + <member refid="class_rew_1_1_tone_synth_1a665a2d073189fd425d21c405da41ab8e" prot="private" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>src</name></member> + <member refid="class_rew_1_1_tone_synth_1aa07adb49b8173acbe587634375296b83" prot="public" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>ToneSynth</name></member> + <member refid="class_rew_1_1_tone_synth_1a8198c80ea4d9f4fa5756b0da55c7cb3d" prot="public" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>ToneSynth</name></member> + <member refid="class_rew_1_1_tone_synth_1a442ec4059583bebb796999a77d6e54a0" prot="public" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>ToneSynth</name></member> + <member refid="class_rew_1_1_tone_synth_1aa27efd3fcc9a3da57aab4c528654dff7" prot="private" virt="non-virtual"><scope>Rew::ToneSynth</scope><name>total</name></member> + </listofallmembers> + </compounddef> +</doxygen> diff --git a/doxygen/xml/class_rew_1_1_wav_writer.xml b/doxygen/xml/class_rew_1_1_wav_writer.xml new file mode 100644 index 0000000000000000000000000000000000000000..caa4dad8fc90e7826fde889ade821e5406ae1877 --- /dev/null +++ b/doxygen/xml/class_rew_1_1_wav_writer.xml @@ -0,0 +1,261 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="class_rew_1_1_wav_writer" kind="class" language="C++" prot="public"> + <compoundname>Rew::WavWriter</compoundname> + <basecompoundref refid="class_rew_1_1_audio_writer" prot="public" virt="non-virtual">Rew::AudioWriter</basecompoundref> + <includes refid="wav__writer_8h" local="no">wav_writer.h</includes> + <sectiondef kind="private-attrib"> + <memberdef kind="variable" id="class_rew_1_1_wav_writer_1a4bdeea5d1815794649ca3cfd17725e65" prot="private" static="no" mutable="no"> + <type>std::fstream</type> + <definition>std::fstream Rew::WavWriter::output</definition> + <argsstring></argsstring> + <name>output</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="24" column="1" bodyfile="include/encoder/wav_writer.h" bodystart="24" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_wav_writer_1a7d15122ae661ec7be4065b1417401642" prot="private" static="no" mutable="no"> + <type>bool</type> + <definition>bool Rew::WavWriter::eos</definition> + <argsstring></argsstring> + <name>eos</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="25" column="1" bodyfile="include/encoder/wav_writer.h" bodystart="25" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_wav_writer_1a99940678fabcd731c90e2dec3802e935" prot="private" static="no" mutable="no"> + <type>size_t</type> + <definition>size_t Rew::WavWriter::dataOffset</definition> + <argsstring></argsstring> + <name>dataOffset</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="26" column="1" bodyfile="include/encoder/wav_writer.h" bodystart="26" bodyend="-1"/> + </memberdef> + <memberdef kind="variable" id="class_rew_1_1_wav_writer_1a18999b980002a2aaa91a330d9177ecca" prot="private" static="no" mutable="no"> + <type>size_t</type> + <definition>size_t Rew::WavWriter::dataWritten</definition> + <argsstring></argsstring> + <name>dataWritten</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="27" column="1" bodyfile="include/encoder/wav_writer.h" bodystart="27" bodyend="-1"/> + </memberdef> + </sectiondef> + <sectiondef kind="public-func"> + <memberdef kind="function" id="class_rew_1_1_wav_writer_1af9a57cca60c3e4332ed403d3c5a9aac5" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type></type> + <definition>Rew::WavWriter::WavWriter</definition> + <argsstring>()</argsstring> + <name>WavWriter</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="14" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_wav_writer_1ab47e21b2b233b8a4ac56bcfcd4426b5f" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual"> + <type></type> + <definition>virtual Rew::WavWriter::~WavWriter</definition> + <argsstring>()</argsstring> + <name>~WavWriter</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="15" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_wav_writer_1a4700f564e14ca54a319ed2a23337581b" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual"> + <type>bool</type> + <definition>bool Rew::WavWriter::open</definition> + <argsstring>(const std::string &path, size_t size, int bitsPerSample, int sampleRate, int numChannels) override</argsstring> + <name>open</name> + <reimplements refid="class_rew_1_1_audio_writer_1a619c520a49467c7dd6a6bee0d3ac399c">open</reimplements> + <param> + <type>const std::string &</type> + <declname>path</declname> + </param> + <param> + <type>size_t</type> + <declname>size</declname> + </param> + <param> + <type>int</type> + <declname>bitsPerSample</declname> + </param> + <param> + <type>int</type> + <declname>sampleRate</declname> + </param> + <param> + <type>int</type> + <declname>numChannels</declname> + </param> + <briefdescription> +<para>Opens a file for writing. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="17" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_wav_writer_1a017679508e2b7f7645ff6192e275af54" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual"> + <type>void</type> + <definition>void Rew::WavWriter::close</definition> + <argsstring>() override</argsstring> + <name>close</name> + <reimplements refid="class_rew_1_1_audio_writer_1a2d891dcd78323ef0ba32335041eb923c">close</reimplements> + <briefdescription> +<para>Closes the file. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="18" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_wav_writer_1a21f12fc360fee57a7cfc85d9a4ff07be" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual"> + <type>bool</type> + <definition>bool Rew::WavWriter::writeChunk</definition> + <argsstring>(const unsigned char *data, size_t *bytesWritten) override</argsstring> + <name>writeChunk</name> + <reimplements refid="class_rew_1_1_audio_writer_1a4ac109653fd08b3d51dd54930593b859">writeChunk</reimplements> + <param> + <type>const unsigned char *</type> + <declname>data</declname> + </param> + <param> + <type>size_t *</type> + <declname>bytesWritten</declname> + </param> + <briefdescription> +<para>Writes a chunk of data to file. </para> </briefdescription> + <detaileddescription> +<para><simplesect kind="see"><para><ref refid="class_rew_1_1_audio_writer_1a16c70083411cc3921233092c0ad632c3" kindref="member">getChunkSize</ref> </para></simplesect> +</para> </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="19" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_wav_writer_1a0ca68ad62f42f0eb1334ffc49319f4a1" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual"> + <type>bool</type> + <definition>bool Rew::WavWriter::writeFooter</definition> + <argsstring>() override</argsstring> + <name>writeFooter</name> + <reimplements refid="class_rew_1_1_audio_writer_1aa8b315cb43e7598aa1b1ea2ff0e036af">writeFooter</reimplements> + <briefdescription> +<para>Writes a footer. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="20" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_wav_writer_1a2fee28dbc8c223c8b7e361eaf65ce22f" prot="public" static="no" const="yes" explicit="no" inline="no" virt="virtual"> + <type>bool</type> + <definition>bool Rew::WavWriter::eof</definition> + <argsstring>() const override</argsstring> + <name>eof</name> + <reimplements refid="class_rew_1_1_audio_writer_1a5288a2b883fab9d06d8292c6a657c077">eof</reimplements> + <briefdescription> +<para>Checks if end of file. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="21" column="1"/> + </memberdef> + <memberdef kind="function" id="class_rew_1_1_wav_writer_1a4314c21ee94386f745f951c57d82bc7f" prot="public" static="no" const="yes" explicit="no" inline="no" virt="virtual"> + <type>size_t</type> + <definition>size_t Rew::WavWriter::getPos</definition> + <argsstring>() const override</argsstring> + <name>getPos</name> + <reimplements refid="class_rew_1_1_audio_writer_1ae3d33d0968b52793b545d46c7e8cdb55">getPos</reimplements> + <briefdescription> +<para>Returns current write position in bytes. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="22" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> +<para>WAV file saver. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + <inheritancegraph> + <node id="20"> + <label>Rew::WavWriter</label> + <link refid="class_rew_1_1_wav_writer"/> + <childnode refid="21" relation="public-inheritance"> + </childnode> + </node> + <node id="21"> + <label>Rew::AudioWriter</label> + <link refid="class_rew_1_1_audio_writer"/> + </node> + </inheritancegraph> + <collaborationgraph> + <node id="22"> + <label>Rew::WavWriter</label> + <link refid="class_rew_1_1_wav_writer"/> + <childnode refid="23" relation="public-inheritance"> + </childnode> + </node> + <node id="23"> + <label>Rew::AudioWriter</label> + <link refid="class_rew_1_1_audio_writer"/> + </node> + </collaborationgraph> + <location file="include/encoder/wav_writer.h" line="12" column="1" bodyfile="include/encoder/wav_writer.h" bodystart="12" bodyend="28"/> + <listofallmembers> + <member refid="class_rew_1_1_audio_writer_1a7898acd23a7adbbc1c1fe96220608957" prot="public" virt="non-virtual"><scope>Rew::WavWriter</scope><name>AudioWriter</name></member> + <member refid="class_rew_1_1_audio_writer_1ac3d60ac33859cc0688ca3761b5dbf010" prot="protected" virt="non-virtual"><scope>Rew::WavWriter</scope><name>bitsPerSample</name></member> + <member refid="class_rew_1_1_audio_writer_1aabfb8aed29b83114ff67ae2a0a063bbb" prot="protected" virt="non-virtual"><scope>Rew::WavWriter</scope><name>channelCount</name></member> + <member refid="class_rew_1_1_audio_writer_1a0f0e4ea476c6e557af77ba1902cdde13" prot="protected" virt="non-virtual"><scope>Rew::WavWriter</scope><name>chunkSize</name></member> + <member refid="class_rew_1_1_wav_writer_1a017679508e2b7f7645ff6192e275af54" prot="public" virt="virtual"><scope>Rew::WavWriter</scope><name>close</name></member> + <member refid="class_rew_1_1_wav_writer_1a99940678fabcd731c90e2dec3802e935" prot="private" virt="non-virtual"><scope>Rew::WavWriter</scope><name>dataOffset</name></member> + <member refid="class_rew_1_1_wav_writer_1a18999b980002a2aaa91a330d9177ecca" prot="private" virt="non-virtual"><scope>Rew::WavWriter</scope><name>dataWritten</name></member> + <member refid="class_rew_1_1_wav_writer_1a2fee28dbc8c223c8b7e361eaf65ce22f" prot="public" virt="virtual"><scope>Rew::WavWriter</scope><name>eof</name></member> + <member refid="class_rew_1_1_wav_writer_1a7d15122ae661ec7be4065b1417401642" prot="private" virt="non-virtual"><scope>Rew::WavWriter</scope><name>eos</name></member> + <member refid="class_rew_1_1_audio_writer_1a8255a4d834e892a6594bcd1e449aa54f" prot="public" virt="non-virtual"><scope>Rew::WavWriter</scope><name>getBitsPerSample</name></member> + <member refid="class_rew_1_1_audio_writer_1a16c70083411cc3921233092c0ad632c3" prot="public" virt="non-virtual"><scope>Rew::WavWriter</scope><name>getChunkSize</name></member> + <member refid="class_rew_1_1_audio_writer_1ab3a2df9304221bd8e4b593efe277598a" prot="public" virt="non-virtual"><scope>Rew::WavWriter</scope><name>getNumOfChannels</name></member> + <member refid="class_rew_1_1_wav_writer_1a4314c21ee94386f745f951c57d82bc7f" prot="public" virt="virtual"><scope>Rew::WavWriter</scope><name>getPos</name></member> + <member refid="class_rew_1_1_audio_writer_1af5e4622f9b4faa35bb553522766c5cd8" prot="public" virt="non-virtual"><scope>Rew::WavWriter</scope><name>getSampleRate</name></member> + <member refid="class_rew_1_1_audio_writer_1a344835d861a600f89454e35bfe4958b9" prot="public" virt="non-virtual"><scope>Rew::WavWriter</scope><name>getSize</name></member> + <member refid="class_rew_1_1_audio_writer_1ab3f42f0f4b515dadd3de7c51f857d042" prot="public" virt="non-virtual"><scope>Rew::WavWriter</scope><name>isOpen</name></member> + <member refid="class_rew_1_1_audio_writer_1a4eca6a6861551d45c1d079d3971f01df" prot="protected" virt="non-virtual"><scope>Rew::WavWriter</scope><name>loaded</name></member> + <member refid="class_rew_1_1_wav_writer_1a4700f564e14ca54a319ed2a23337581b" prot="public" virt="virtual"><scope>Rew::WavWriter</scope><name>open</name></member> + <member refid="class_rew_1_1_audio_writer_1ae11b1fa568d431d6a976bee5f14d38d8" prot="public" virt="non-virtual"><scope>Rew::WavWriter</scope><name>operator bool</name></member> + <member refid="class_rew_1_1_wav_writer_1a4bdeea5d1815794649ca3cfd17725e65" prot="private" virt="non-virtual"><scope>Rew::WavWriter</scope><name>output</name></member> + <member refid="class_rew_1_1_audio_writer_1a71567e58f680b1f3346727ce20d09115" prot="protected" virt="non-virtual"><scope>Rew::WavWriter</scope><name>sampleRate</name></member> + <member refid="class_rew_1_1_audio_writer_1aa84a112f4f791cad425aa63f3b412efa" prot="protected" virt="non-virtual"><scope>Rew::WavWriter</scope><name>size</name></member> + <member refid="class_rew_1_1_wav_writer_1af9a57cca60c3e4332ed403d3c5a9aac5" prot="public" virt="non-virtual"><scope>Rew::WavWriter</scope><name>WavWriter</name></member> + <member refid="class_rew_1_1_wav_writer_1a21f12fc360fee57a7cfc85d9a4ff07be" prot="public" virt="virtual"><scope>Rew::WavWriter</scope><name>writeChunk</name></member> + <member refid="class_rew_1_1_wav_writer_1a0ca68ad62f42f0eb1334ffc49319f4a1" prot="public" virt="virtual"><scope>Rew::WavWriter</scope><name>writeFooter</name></member> + <member refid="class_rew_1_1_audio_writer_1a88b3be8be3b8bd644a16939e7faefcd5" prot="public" virt="virtual"><scope>Rew::WavWriter</scope><name>~AudioWriter</name></member> + <member refid="class_rew_1_1_wav_writer_1ab47e21b2b233b8a4ac56bcfcd4426b5f" prot="public" virt="virtual"><scope>Rew::WavWriter</scope><name>~WavWriter</name></member> + </listofallmembers> + </compounddef> +</doxygen> diff --git a/doxygen/xml/combine.xslt b/doxygen/xml/combine.xslt new file mode 100644 index 0000000000000000000000000000000000000000..c148ee4f2f0aa93015c19a2868bcc017c41334c1 --- /dev/null +++ b/doxygen/xml/combine.xslt @@ -0,0 +1,15 @@ +<!-- XSLT script to combine the generated output into a single file. + If you have xsltproc you could use: + xsltproc combine.xslt index.xml >all.xml +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + <xsl:output method="xml" version="1.0" indent="no" standalone="yes" /> + <xsl:template match="/"> + <doxygen version="{doxygenindex/@version}"> + <!-- Load all doxgen generated xml files --> + <xsl:for-each select="doxygenindex/compound"> + <xsl:copy-of select="document( concat( @refid, '.xml' ) )/doxygen/*" /> + </xsl:for-each> + </doxygen> + </xsl:template> +</xsl:stylesheet> diff --git a/doxygen/xml/compound.xsd b/doxygen/xml/compound.xsd new file mode 100644 index 0000000000000000000000000000000000000000..81b5e513b33292c0e742e1e051f4cdb1f8ae5991 --- /dev/null +++ b/doxygen/xml/compound.xsd @@ -0,0 +1,1131 @@ +<?xml version='1.0' encoding='utf-8' ?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <xsd:element name="doxygen" type="DoxygenType"/> + + <!-- Complex types --> + + <xsd:complexType name="DoxygenType"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="compounddef" type="compounddefType" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="version" type="DoxVersionNumber" use="required" /> + </xsd:complexType> + + <xsd:complexType name="compounddefType"> + <xsd:sequence> + <xsd:element name="compoundname" type="xsd:string"/> + <xsd:element name="title" type="xsd:string" minOccurs="0" /> + <xsd:element name="basecompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="derivedcompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="includes" type="incType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="incdepgraph" type="graphType" minOccurs="0" /> + <xsd:element name="invincdepgraph" type="graphType" minOccurs="0" /> + <xsd:element name="innerdir" type="refType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="innerfile" type="refType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="innerpage" type="refType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="innergroup" type="refType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" /> + <xsd:element name="sectiondef" type="sectiondefType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="tableofcontents" minOccurs="0" maxOccurs="1" /> + <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" /> + <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" /> + <xsd:element name="inheritancegraph" type="graphType" minOccurs="0" /> + <xsd:element name="collaborationgraph" type="graphType" minOccurs="0" /> + <xsd:element name="programlisting" type="listingType" minOccurs="0" /> + <xsd:element name="location" type="locationType" minOccurs="0" /> + <xsd:element name="listofallmembers" type="listofallmembersType" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" /> + <xsd:attribute name="kind" type="DoxCompoundKind" /> + <xsd:attribute name="language" type="DoxLanguage" use="optional"/> + <xsd:attribute name="prot" type="DoxProtectionKind" /> + <xsd:attribute name="final" type="DoxBool" use="optional"/> + <xsd:attribute name="sealed" type="DoxBool" use="optional"/> + <xsd:attribute name="abstract" type="DoxBool" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="listofallmembersType"> + <xsd:sequence> + <xsd:element name="member" type="memberRefType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="memberRefType"> + <xsd:sequence> + <xsd:element name="scope" /> + <xsd:element name="name" /> + </xsd:sequence> + <xsd:attribute name="refid" type="xsd:string" /> + <xsd:attribute name="prot" type="DoxProtectionKind" /> + <xsd:attribute name="virt" type="DoxVirtualKind" /> + <xsd:attribute name="ambiguityscope" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="compoundRefType"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="refid" type="xsd:string" use="optional" /> + <xsd:attribute name="prot" type="DoxProtectionKind" /> + <xsd:attribute name="virt" type="DoxVirtualKind" /> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:complexType name="reimplementType"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="refid" type="xsd:string" /> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:complexType name="incType"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="refid" type="xsd:string" /> + <xsd:attribute name="local" type="DoxBool" /> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:complexType name="refType"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="refid" type="xsd:string" /> + <xsd:attribute name="prot" type="DoxProtectionKind" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:complexType name="refTextType"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="refid" type="xsd:string" /> + <xsd:attribute name="kindref" type="DoxRefKind" /> + <xsd:attribute name="external" type="xsd:string" use="optional"/> + <xsd:attribute name="tooltip" type="xsd:string" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:complexType name="sectiondefType"> + <xsd:sequence> + <xsd:element name="header" type="xsd:string" minOccurs="0" /> + <xsd:element name="description" type="descriptionType" minOccurs="0" /> + <xsd:element name="memberdef" type="memberdefType" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="kind" type="DoxSectionKind" /> + </xsd:complexType> + + <xsd:complexType name="memberdefType"> + <xsd:sequence> + <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" /> + <xsd:element name="type" type="linkedTextType" minOccurs="0" /> + <xsd:element name="definition" minOccurs="0" /> + <xsd:element name="argsstring" minOccurs="0" /> + <xsd:element name="name" /> + <xsd:element name="read" minOccurs="0" /> + <xsd:element name="write" minOccurs="0" /> + <xsd:element name="bitfield" minOccurs="0" /> + <xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="enumvalue" type="enumvalueType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="initializer" type="linkedTextType" minOccurs="0" /> + <xsd:element name="exceptions" type="linkedTextType" minOccurs="0" /> + <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" /> + <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" /> + <xsd:element name="inbodydescription" type="descriptionType" minOccurs="0" /> + <xsd:element name="location" type="locationType" /> + <xsd:element name="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="kind" type="DoxMemberKind" /> + <xsd:attribute name="id" type="xsd:string" /> + <xsd:attribute name="prot" type="DoxProtectionKind" /> + <xsd:attribute name="static" type="DoxBool" /> + <xsd:attribute name="strong" type="DoxBool" use="optional"/> + <xsd:attribute name="const" type="DoxBool" use="optional"/> + <xsd:attribute name="explicit" type="DoxBool" use="optional"/> + <xsd:attribute name="inline" type="DoxBool" use="optional"/> + <xsd:attribute name="refqual" type="DoxRefQualifierKind" use="optional"/> + <xsd:attribute name="virt" type="DoxVirtualKind" use="optional"/> + <xsd:attribute name="volatile" type="DoxBool" use="optional"/> + <xsd:attribute name="mutable" type="DoxBool" use="optional"/> + <!-- Qt property --> + <xsd:attribute name="readable" type="DoxBool" use="optional"/> + <xsd:attribute name="writable" type="DoxBool" use="optional"/> + <!-- C++/CLI variable --> + <xsd:attribute name="initonly" type="DoxBool" use="optional"/> + <!-- C++/CLI and C# property --> + <xsd:attribute name="settable" type="DoxBool" use="optional"/> + <xsd:attribute name="gettable" type="DoxBool" use="optional"/> + <!-- C++/CLI function --> + <xsd:attribute name="final" type="DoxBool" use="optional"/> + <xsd:attribute name="sealed" type="DoxBool" use="optional"/> + <xsd:attribute name="new" type="DoxBool" use="optional"/> + <!-- C++/CLI event --> + <xsd:attribute name="add" type="DoxBool" use="optional"/> + <xsd:attribute name="remove" type="DoxBool" use="optional"/> + <xsd:attribute name="raise" type="DoxBool" use="optional"/> + <!-- Objective-C 2.0 protocol method --> + <xsd:attribute name="optional" type="DoxBool" use="optional"/> + <xsd:attribute name="required" type="DoxBool" use="optional"/> + <!-- Objective-C 2.0 property accessor --> + <xsd:attribute name="accessor" type="DoxAccessor" use="optional"/> + <!-- UNO IDL --> + <xsd:attribute name="attribute" type="DoxBool" use="optional"/> + <xsd:attribute name="property" type="DoxBool" use="optional"/> + <xsd:attribute name="readonly" type="DoxBool" use="optional"/> + <xsd:attribute name="bound" type="DoxBool" use="optional"/> + <xsd:attribute name="removable" type="DoxBool" use="optional"/> + <xsd:attribute name="contrained" type="DoxBool" use="optional"/> + <xsd:attribute name="transient" type="DoxBool" use="optional"/> + <xsd:attribute name="maybevoid" type="DoxBool" use="optional"/> + <xsd:attribute name="maybedefault" type="DoxBool" use="optional"/> + <xsd:attribute name="maybeambiguous" type="DoxBool" use="optional"/> + + </xsd:complexType> + + <xsd:complexType name="descriptionType" mixed="true"> + <xsd:sequence> + <xsd:element name="title" type="xsd:string" minOccurs="0"/> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="internal" type="docInternalType" minOccurs="0" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="enumvalueType" mixed="true"> + <xsd:sequence> + <xsd:element name="name" /> + <xsd:element name="initializer" type="linkedTextType" minOccurs="0" /> + <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" /> + <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" /> + <xsd:attribute name="prot" type="DoxProtectionKind" /> + </xsd:complexType> + + <xsd:complexType name="templateparamlistType"> + <xsd:sequence> + <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="paramType"> + <xsd:sequence> + <xsd:element name="type" type="linkedTextType" minOccurs="0" /> + <xsd:element name="declname" minOccurs="0" /> + <xsd:element name="defname" minOccurs="0" /> + <xsd:element name="array" minOccurs="0" /> + <xsd:element name="defval" type="linkedTextType" minOccurs="0" /> + <xsd:element name="typeconstraint" type="linkedTextType" minOccurs="0" /> + <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="linkedTextType" mixed="true"> + <xsd:sequence> + <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="graphType"> + <xsd:sequence> + <xsd:element name="node" type="nodeType" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="nodeType"> + <xsd:sequence> + <xsd:element name="label" /> + <xsd:element name="link" type="linkType" minOccurs="0" /> + <xsd:element name="childnode" type="childnodeType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="childnodeType"> + <xsd:sequence> + <xsd:element name="edgelabel" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="refid" type="xsd:string" /> + <xsd:attribute name="relation" type="DoxGraphRelation" /> + </xsd:complexType> + + <xsd:complexType name="linkType"> + <xsd:attribute name="refid" type="xsd:string" /> + <xsd:attribute name="external" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="listingType"> + <xsd:sequence> + <xsd:element name="codeline" type="codelineType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="filename" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="codelineType"> + <xsd:sequence> + <xsd:element name="highlight" type="highlightType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="lineno" type="xsd:integer" /> + <xsd:attribute name="refid" type="xsd:string" /> + <xsd:attribute name="refkind" type="DoxRefKind" /> + <xsd:attribute name="external" type="DoxBool" /> + </xsd:complexType> + + <xsd:complexType name="highlightType" mixed="true"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="sp" type="spType" /> + <xsd:element name="ref" type="refTextType" /> + </xsd:choice> + <xsd:attribute name="class" type="DoxHighlightClass" /> + </xsd:complexType> + + <xsd:complexType name="spType" mixed="true"> + <xsd:attribute name="value" type="xsd:integer" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="referenceType" mixed="true"> + <xsd:attribute name="refid" type="xsd:string" /> + <xsd:attribute name="compoundref" type="xsd:string" use="optional" /> + <xsd:attribute name="startline" type="xsd:integer" /> + <xsd:attribute name="endline" type="xsd:integer" /> + </xsd:complexType> + + <xsd:complexType name="locationType"> + <xsd:attribute name="file" type="xsd:string" /> + <xsd:attribute name="line" type="xsd:integer" /> + <xsd:attribute name="column" type="xsd:integer" use="optional"/> + <xsd:attribute name="bodyfile" type="xsd:string" /> + <xsd:attribute name="bodystart" type="xsd:integer" /> + <xsd:attribute name="bodyend" type="xsd:integer" /> + </xsd:complexType> + + <xsd:complexType name="docSect1Type" mixed="true"> + <xsd:sequence> + <xsd:element name="title" type="xsd:string" /> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="internal" type="docInternalS1Type" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docSect2Type" mixed="true"> + <xsd:sequence> + <xsd:element name="title" type="xsd:string" /> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="internal" type="docInternalS2Type" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docSect3Type" mixed="true"> + <xsd:sequence> + <xsd:element name="title" type="xsd:string" /> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sect4" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="internal" type="docInternalS3Type" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docSect4Type" mixed="true"> + <xsd:sequence> + <xsd:element name="title" type="xsd:string" /> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="internal" type="docInternalS4Type" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docInternalType" mixed="true"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docInternalS1Type" mixed="true"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docInternalS2Type" mixed="true"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docInternalS3Type" mixed="true"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sect3" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docInternalS4Type" mixed="true"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:group name="docTitleCmdGroup"> + <xsd:choice> + <xsd:element name="ulink" type="docURLLink" /> + <xsd:element name="bold" type="docMarkupType" /> + <xsd:element name="emphasis" type="docMarkupType" /> + <xsd:element name="computeroutput" type="docMarkupType" /> + <xsd:element name="subscript" type="docMarkupType" /> + <xsd:element name="superscript" type="docMarkupType" /> + <xsd:element name="center" type="docMarkupType" /> + <xsd:element name="small" type="docMarkupType" /> + <xsd:element name="htmlonly" type="xsd:string" /> + <xsd:element name="manonly" type="xsd:string" /> + <xsd:element name="xmlonly" type="xsd:string" /> + <xsd:element name="rtfonly" type="xsd:string" /> + <xsd:element name="latexonly" type="xsd:string" /> + <xsd:element name="dot" type="xsd:string" /> + <xsd:element name="plantuml" type="xsd:string" /> + <xsd:element name="anchor" type="docAnchorType" /> + <xsd:element name="formula" type="docFormulaType" /> + <xsd:element name="ref" type="docRefTextType" /> + <xsd:element name="nonbreakablespace" type="docEmptyType" /> + <xsd:element name="iexcl" type="docEmptyType" /> + <xsd:element name="cent" type="docEmptyType" /> + <xsd:element name="pound" type="docEmptyType" /> + <xsd:element name="curren" type="docEmptyType" /> + <xsd:element name="yen" type="docEmptyType" /> + <xsd:element name="brvbar" type="docEmptyType" /> + <xsd:element name="sect" type="docEmptyType" /> + <xsd:element name="umlaut" type="docEmptyType" /> + <xsd:element name="copy" type="docEmptyType" /> + <xsd:element name="ordf" type="docEmptyType" /> + <xsd:element name="laquo" type="docEmptyType" /> + <xsd:element name="not" type="docEmptyType" /> + <xsd:element name="shy" type="docEmptyType" /> + <xsd:element name="registered" type="docEmptyType" /> + <xsd:element name="macr" type="docEmptyType" /> + <xsd:element name="deg" type="docEmptyType" /> + <xsd:element name="plusmn" type="docEmptyType" /> + <xsd:element name="sup2" type="docEmptyType" /> + <xsd:element name="sup3" type="docEmptyType" /> + <xsd:element name="acute" type="docEmptyType" /> + <xsd:element name="micro" type="docEmptyType" /> + <xsd:element name="para" type="docEmptyType" /> + <xsd:element name="middot" type="docEmptyType" /> + <xsd:element name="cedil" type="docEmptyType" /> + <xsd:element name="sup1" type="docEmptyType" /> + <xsd:element name="ordm" type="docEmptyType" /> + <xsd:element name="raquo" type="docEmptyType" /> + <xsd:element name="frac14" type="docEmptyType" /> + <xsd:element name="frac12" type="docEmptyType" /> + <xsd:element name="frac34" type="docEmptyType" /> + <xsd:element name="iquest" type="docEmptyType" /> + <xsd:element name="Agrave" type="docEmptyType" /> + <xsd:element name="Aacute" type="docEmptyType" /> + <xsd:element name="Acirc" type="docEmptyType" /> + <xsd:element name="Atilde" type="docEmptyType" /> + <xsd:element name="Aumlaut" type="docEmptyType" /> + <xsd:element name="Aring" type="docEmptyType" /> + <xsd:element name="AElig" type="docEmptyType" /> + <xsd:element name="Ccedil" type="docEmptyType" /> + <xsd:element name="Egrave" type="docEmptyType" /> + <xsd:element name="Eacute" type="docEmptyType" /> + <xsd:element name="Ecirc" type="docEmptyType" /> + <xsd:element name="Eumlaut" type="docEmptyType" /> + <xsd:element name="Igrave" type="docEmptyType" /> + <xsd:element name="Iacute" type="docEmptyType" /> + <xsd:element name="Icirc" type="docEmptyType" /> + <xsd:element name="Iumlaut" type="docEmptyType" /> + <xsd:element name="ETH" type="docEmptyType" /> + <xsd:element name="Ntilde" type="docEmptyType" /> + <xsd:element name="Ograve" type="docEmptyType" /> + <xsd:element name="Oacute" type="docEmptyType" /> + <xsd:element name="Ocirc" type="docEmptyType" /> + <xsd:element name="Otilde" type="docEmptyType" /> + <xsd:element name="Oumlaut" type="docEmptyType" /> + <xsd:element name="times" type="docEmptyType" /> + <xsd:element name="Oslash" type="docEmptyType" /> + <xsd:element name="Ugrave" type="docEmptyType" /> + <xsd:element name="Uacute" type="docEmptyType" /> + <xsd:element name="Ucirc" type="docEmptyType" /> + <xsd:element name="Uumlaut" type="docEmptyType" /> + <xsd:element name="Yacute" type="docEmptyType" /> + <xsd:element name="THORN" type="docEmptyType" /> + <xsd:element name="szlig" type="docEmptyType" /> + <xsd:element name="agrave" type="docEmptyType" /> + <xsd:element name="aacute" type="docEmptyType" /> + <xsd:element name="acirc" type="docEmptyType" /> + <xsd:element name="atilde" type="docEmptyType" /> + <xsd:element name="aumlaut" type="docEmptyType" /> + <xsd:element name="aring" type="docEmptyType" /> + <xsd:element name="aelig" type="docEmptyType" /> + <xsd:element name="ccedil" type="docEmptyType" /> + <xsd:element name="egrave" type="docEmptyType" /> + <xsd:element name="eacute" type="docEmptyType" /> + <xsd:element name="ecirc" type="docEmptyType" /> + <xsd:element name="eumlaut" type="docEmptyType" /> + <xsd:element name="igrave" type="docEmptyType" /> + <xsd:element name="iacute" type="docEmptyType" /> + <xsd:element name="icirc" type="docEmptyType" /> + <xsd:element name="iumlaut" type="docEmptyType" /> + <xsd:element name="eth" type="docEmptyType" /> + <xsd:element name="ntilde" type="docEmptyType" /> + <xsd:element name="ograve" type="docEmptyType" /> + <xsd:element name="oacute" type="docEmptyType" /> + <xsd:element name="ocirc" type="docEmptyType" /> + <xsd:element name="otilde" type="docEmptyType" /> + <xsd:element name="oumlaut" type="docEmptyType" /> + <xsd:element name="divide" type="docEmptyType" /> + <xsd:element name="oslash" type="docEmptyType" /> + <xsd:element name="ugrave" type="docEmptyType" /> + <xsd:element name="uacute" type="docEmptyType" /> + <xsd:element name="ucirc" type="docEmptyType" /> + <xsd:element name="uumlaut" type="docEmptyType" /> + <xsd:element name="yacute" type="docEmptyType" /> + <xsd:element name="thorn" type="docEmptyType" /> + <xsd:element name="yumlaut" type="docEmptyType" /> + <xsd:element name="fnof" type="docEmptyType" /> + <xsd:element name="Alpha" type="docEmptyType" /> + <xsd:element name="Beta" type="docEmptyType" /> + <xsd:element name="Gamma" type="docEmptyType" /> + <xsd:element name="Delta" type="docEmptyType" /> + <xsd:element name="Epsilon" type="docEmptyType" /> + <xsd:element name="Zeta" type="docEmptyType" /> + <xsd:element name="Eta" type="docEmptyType" /> + <xsd:element name="Theta" type="docEmptyType" /> + <xsd:element name="Iota" type="docEmptyType" /> + <xsd:element name="Kappa" type="docEmptyType" /> + <xsd:element name="Lambda" type="docEmptyType" /> + <xsd:element name="Mu" type="docEmptyType" /> + <xsd:element name="Nu" type="docEmptyType" /> + <xsd:element name="Xi" type="docEmptyType" /> + <xsd:element name="Omicron" type="docEmptyType" /> + <xsd:element name="Pi" type="docEmptyType" /> + <xsd:element name="Rho" type="docEmptyType" /> + <xsd:element name="Sigma" type="docEmptyType" /> + <xsd:element name="Tau" type="docEmptyType" /> + <xsd:element name="Upsilon" type="docEmptyType" /> + <xsd:element name="Phi" type="docEmptyType" /> + <xsd:element name="Chi" type="docEmptyType" /> + <xsd:element name="Psi" type="docEmptyType" /> + <xsd:element name="Omega" type="docEmptyType" /> + <xsd:element name="alpha" type="docEmptyType" /> + <xsd:element name="beta" type="docEmptyType" /> + <xsd:element name="gamma" type="docEmptyType" /> + <xsd:element name="delta" type="docEmptyType" /> + <xsd:element name="epsilon" type="docEmptyType" /> + <xsd:element name="zeta" type="docEmptyType" /> + <xsd:element name="eta" type="docEmptyType" /> + <xsd:element name="theta" type="docEmptyType" /> + <xsd:element name="iota" type="docEmptyType" /> + <xsd:element name="kappa" type="docEmptyType" /> + <xsd:element name="lambda" type="docEmptyType" /> + <xsd:element name="mu" type="docEmptyType" /> + <xsd:element name="nu" type="docEmptyType" /> + <xsd:element name="xi" type="docEmptyType" /> + <xsd:element name="omicron" type="docEmptyType" /> + <xsd:element name="pi" type="docEmptyType" /> + <xsd:element name="rho" type="docEmptyType" /> + <xsd:element name="sigmaf" type="docEmptyType" /> + <xsd:element name="sigma" type="docEmptyType" /> + <xsd:element name="tau" type="docEmptyType" /> + <xsd:element name="upsilon" type="docEmptyType" /> + <xsd:element name="phi" type="docEmptyType" /> + <xsd:element name="chi" type="docEmptyType" /> + <xsd:element name="psi" type="docEmptyType" /> + <xsd:element name="omega" type="docEmptyType" /> + <xsd:element name="thetasym" type="docEmptyType" /> + <xsd:element name="upsih" type="docEmptyType" /> + <xsd:element name="piv" type="docEmptyType" /> + <xsd:element name="bull" type="docEmptyType" /> + <xsd:element name="hellip" type="docEmptyType" /> + <xsd:element name="prime" type="docEmptyType" /> + <xsd:element name="Prime" type="docEmptyType" /> + <xsd:element name="oline" type="docEmptyType" /> + <xsd:element name="frasl" type="docEmptyType" /> + <xsd:element name="weierp" type="docEmptyType" /> + <xsd:element name="imaginary" type="docEmptyType" /> + <xsd:element name="real" type="docEmptyType" /> + <xsd:element name="trademark" type="docEmptyType" /> + <xsd:element name="alefsym" type="docEmptyType" /> + <xsd:element name="larr" type="docEmptyType" /> + <xsd:element name="uarr" type="docEmptyType" /> + <xsd:element name="rarr" type="docEmptyType" /> + <xsd:element name="darr" type="docEmptyType" /> + <xsd:element name="harr" type="docEmptyType" /> + <xsd:element name="crarr" type="docEmptyType" /> + <xsd:element name="lArr" type="docEmptyType" /> + <xsd:element name="uArr" type="docEmptyType" /> + <xsd:element name="rArr" type="docEmptyType" /> + <xsd:element name="dArr" type="docEmptyType" /> + <xsd:element name="hArr" type="docEmptyType" /> + <xsd:element name="forall" type="docEmptyType" /> + <xsd:element name="part" type="docEmptyType" /> + <xsd:element name="exist" type="docEmptyType" /> + <xsd:element name="empty" type="docEmptyType" /> + <xsd:element name="nabla" type="docEmptyType" /> + <xsd:element name="isin" type="docEmptyType" /> + <xsd:element name="notin" type="docEmptyType" /> + <xsd:element name="ni" type="docEmptyType" /> + <xsd:element name="prod" type="docEmptyType" /> + <xsd:element name="sum" type="docEmptyType" /> + <xsd:element name="minus" type="docEmptyType" /> + <xsd:element name="lowast" type="docEmptyType" /> + <xsd:element name="radic" type="docEmptyType" /> + <xsd:element name="prop" type="docEmptyType" /> + <xsd:element name="infin" type="docEmptyType" /> + <xsd:element name="ang" type="docEmptyType" /> + <xsd:element name="and" type="docEmptyType" /> + <xsd:element name="or" type="docEmptyType" /> + <xsd:element name="cap" type="docEmptyType" /> + <xsd:element name="cup" type="docEmptyType" /> + <xsd:element name="int" type="docEmptyType" /> + <xsd:element name="there4" type="docEmptyType" /> + <xsd:element name="sim" type="docEmptyType" /> + <xsd:element name="cong" type="docEmptyType" /> + <xsd:element name="asymp" type="docEmptyType" /> + <xsd:element name="ne" type="docEmptyType" /> + <xsd:element name="equiv" type="docEmptyType" /> + <xsd:element name="le" type="docEmptyType" /> + <xsd:element name="ge" type="docEmptyType" /> + <xsd:element name="sub" type="docEmptyType" /> + <xsd:element name="sup" type="docEmptyType" /> + <xsd:element name="nsub" type="docEmptyType" /> + <xsd:element name="sube" type="docEmptyType" /> + <xsd:element name="supe" type="docEmptyType" /> + <xsd:element name="oplus" type="docEmptyType" /> + <xsd:element name="otimes" type="docEmptyType" /> + <xsd:element name="perp" type="docEmptyType" /> + <xsd:element name="sdot" type="docEmptyType" /> + <xsd:element name="lceil" type="docEmptyType" /> + <xsd:element name="rceil" type="docEmptyType" /> + <xsd:element name="lfloor" type="docEmptyType" /> + <xsd:element name="rfloor" type="docEmptyType" /> + <xsd:element name="lang" type="docEmptyType" /> + <xsd:element name="rang" type="docEmptyType" /> + <xsd:element name="loz" type="docEmptyType" /> + <xsd:element name="spades" type="docEmptyType" /> + <xsd:element name="clubs" type="docEmptyType" /> + <xsd:element name="hearts" type="docEmptyType" /> + <xsd:element name="diams" type="docEmptyType" /> + <xsd:element name="OElig" type="docEmptyType" /> + <xsd:element name="oelig" type="docEmptyType" /> + <xsd:element name="Scaron" type="docEmptyType" /> + <xsd:element name="scaron" type="docEmptyType" /> + <xsd:element name="Yumlaut" type="docEmptyType" /> + <xsd:element name="circ" type="docEmptyType" /> + <xsd:element name="tilde" type="docEmptyType" /> + <xsd:element name="ensp" type="docEmptyType" /> + <xsd:element name="emsp" type="docEmptyType" /> + <xsd:element name="thinsp" type="docEmptyType" /> + <xsd:element name="zwnj" type="docEmptyType" /> + <xsd:element name="zwj" type="docEmptyType" /> + <xsd:element name="lrm" type="docEmptyType" /> + <xsd:element name="rlm" type="docEmptyType" /> + <xsd:element name="ndash" type="docEmptyType" /> + <xsd:element name="mdash" type="docEmptyType" /> + <xsd:element name="lsquo" type="docEmptyType" /> + <xsd:element name="rsquo" type="docEmptyType" /> + <xsd:element name="sbquo" type="docEmptyType" /> + <xsd:element name="ldquo" type="docEmptyType" /> + <xsd:element name="rdquo" type="docEmptyType" /> + <xsd:element name="bdquo" type="docEmptyType" /> + <xsd:element name="dagger" type="docEmptyType" /> + <xsd:element name="Dagger" type="docEmptyType" /> + <xsd:element name="permil" type="docEmptyType" /> + <xsd:element name="lsaquo" type="docEmptyType" /> + <xsd:element name="rsaquo" type="docEmptyType" /> + <xsd:element name="euro" type="docEmptyType" /> + <xsd:element name="tm" type="docEmptyType" /> + </xsd:choice> + </xsd:group> + + <xsd:complexType name="docTitleType" mixed="true"> + <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + </xsd:complexType> + + <xsd:group name="docCmdGroup"> + <xsd:choice> + <xsd:group ref="docTitleCmdGroup"/> + <xsd:element name="linebreak" type="docEmptyType" /> + <xsd:element name="hruler" type="docEmptyType" /> + <xsd:element name="preformatted" type="docMarkupType" /> + <xsd:element name="programlisting" type="listingType" /> + <xsd:element name="verbatim" type="xsd:string" /> + <xsd:element name="indexentry" type="docIndexEntryType" /> + <xsd:element name="orderedlist" type="docListType" /> + <xsd:element name="itemizedlist" type="docListType" /> + <xsd:element name="simplesect" type="docSimpleSectType" /> + <xsd:element name="title" type="docTitleType" /> + <xsd:element name="variablelist" type="docVariableListType" /> + <xsd:element name="table" type="docTableType" /> + <xsd:element name="heading" type="docHeadingType" /> + <xsd:element name="image" type="docImageType" /> + <xsd:element name="dotfile" type="docFileType" /> + <xsd:element name="mscfile" type="docFileType" /> + <xsd:element name="diafile" type="docFileType" /> + <xsd:element name="toclist" type="docTocListType" /> + <xsd:element name="language" type="docLanguageType" /> + <xsd:element name="parameterlist" type="docParamListType" /> + <xsd:element name="xrefsect" type="docXRefSectType" /> + <xsd:element name="copydoc" type="docCopyType" /> + <xsd:element name="blockquote" type="docBlockQuoteType" /> + <xsd:element name="parblock" type="docParBlockType" /> + </xsd:choice> + </xsd:group> + + <xsd:complexType name="docParaType" mixed="true"> + <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + </xsd:complexType> + + <xsd:complexType name="docMarkupType" mixed="true"> + <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + </xsd:complexType> + + <xsd:complexType name="docURLLink" mixed="true"> + <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + <xsd:attribute name="url" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docAnchorType" mixed="true"> + <xsd:attribute name="id" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docFormulaType" mixed="true"> + <xsd:attribute name="id" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docIndexEntryType"> + <xsd:sequence> + <xsd:element name="primaryie" type="xsd:string" /> + <xsd:element name="secondaryie" type="xsd:string" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docListType"> + <xsd:sequence> + <xsd:element name="listitem" type="docListItemType" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docListItemType"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docSimpleSectType"> + <xsd:sequence> + <xsd:element name="title" type="docTitleType" minOccurs="0" /> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="para" type="docParaType" minOccurs="1" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:sequence> + <xsd:attribute name="kind" type="DoxSimpleSectKind" /> + </xsd:complexType> + + <xsd:complexType name="docVarListEntryType"> + <xsd:sequence> + <xsd:element name="term" type="docTitleType" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:group name="docVariableListGroup"> + <xsd:sequence> + <xsd:element name="varlistentry" type="docVarListEntryType" /> + <xsd:element name="listitem" type="docListItemType" /> + </xsd:sequence> + </xsd:group> + + <xsd:complexType name="docVariableListType"> + <xsd:sequence> + <xsd:group ref="docVariableListGroup" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docRefTextType" mixed="true"> + <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + <xsd:attribute name="refid" type="xsd:string" /> + <xsd:attribute name="kindref" type="DoxRefKind" /> + <xsd:attribute name="external" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docTableType"> + <xsd:sequence> + <xsd:element name="row" type="docRowType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="caption" type="docCaptionType" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="rows" type="xsd:integer" /> + <xsd:attribute name="cols" type="xsd:integer" /> + </xsd:complexType> + + <xsd:complexType name="docRowType"> + <xsd:sequence> + <xsd:element name="entry" type="docEntryType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docEntryType"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="thead" type="DoxBool" /> + </xsd:complexType> + + <xsd:complexType name="docCaptionType" mixed="true"> + <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + </xsd:complexType> + + <xsd:complexType name="docHeadingType" mixed="true"> + <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + <xsd:attribute name="level" type="xsd:integer" /> <!-- todo: range 1-6 --> + </xsd:complexType> + + <xsd:complexType name="docImageType" mixed="true"> + <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + <xsd:attribute name="type" type="DoxImageKind" /> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="width" type="xsd:string" /> + <xsd:attribute name="height" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docFileType" mixed="true"> + <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docTocItemType" mixed="true"> + <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" /> + <xsd:attribute name="id" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docTocListType"> + <xsd:sequence> + <xsd:element name="tocitem" type="docTocItemType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docLanguageType"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="langid" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docParamListType"> + <xsd:sequence> + <xsd:element name="parameteritem" type="docParamListItem" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="kind" type="DoxParamListKind" /> + </xsd:complexType> + + <xsd:complexType name="docParamListItem"> + <xsd:sequence> + <xsd:element name="parameternamelist" type="docParamNameList" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="parameterdescription" type="descriptionType" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docParamNameList"> + <xsd:sequence> + <xsd:element name="parametertype" type="docParamType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="parametername" type="docParamName" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docParamType" mixed="true"> + <xsd:sequence> + <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docParamName" mixed="true"> + <xsd:sequence> + <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + <xsd:attribute name="direction" type="DoxParamDir" use="optional" /> + </xsd:complexType> + + <xsd:complexType name="docXRefSectType"> + <xsd:sequence> + <xsd:element name="xreftitle" type="xsd:string" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="xrefdescription" type="descriptionType" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docCopyType"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="internal" type="docInternalType" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="link" type="xsd:string" /> + </xsd:complexType> + + <xsd:complexType name="docBlockQuoteType"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docParBlockType"> + <xsd:sequence> + <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="docEmptyType"/> + + <!-- Simple types --> + + <xsd:simpleType name="DoxBool"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="yes" /> + <xsd:enumeration value="no" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxGraphRelation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="include" /> + <xsd:enumeration value="usage" /> + <xsd:enumeration value="template-instance" /> + <xsd:enumeration value="public-inheritance" /> + <xsd:enumeration value="protected-inheritance" /> + <xsd:enumeration value="private-inheritance" /> + <xsd:enumeration value="type-constraint" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxRefKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="compound" /> + <xsd:enumeration value="member" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxMemberKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="define" /> + <xsd:enumeration value="property" /> + <xsd:enumeration value="event" /> + <xsd:enumeration value="variable" /> + <xsd:enumeration value="typedef" /> + <xsd:enumeration value="enum" /> + <xsd:enumeration value="function" /> + <xsd:enumeration value="signal" /> + <xsd:enumeration value="prototype" /> + <xsd:enumeration value="friend" /> + <xsd:enumeration value="dcop" /> + <xsd:enumeration value="slot" /> + <xsd:enumeration value="interface" /> + <xsd:enumeration value="service" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxProtectionKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="public" /> + <xsd:enumeration value="protected" /> + <xsd:enumeration value="private" /> + <xsd:enumeration value="package" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxRefQualifierKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="lvalue" /> + <xsd:enumeration value="rvalue" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxLanguage"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Unknown" /> + <xsd:enumeration value="IDL" /> + <xsd:enumeration value="Java" /> + <xsd:enumeration value="C#" /> + <xsd:enumeration value="D" /> + <xsd:enumeration value="PHP" /> + <xsd:enumeration value="Objective-C" /> + <xsd:enumeration value="C++" /> + <xsd:enumeration value="Javascript" /> + <xsd:enumeration value="Python" /> + <xsd:enumeration value="Fortran" /> + <xsd:enumeration value="VHDL" /> + <xsd:enumeration value="XML" /> + <xsd:enumeration value="SQL" /> + <xsd:enumeration value="Tcl" /> + <xsd:enumeration value="Markdown" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxVirtualKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="non-virtual" /> + <xsd:enumeration value="virtual" /> + <xsd:enumeration value="pure-virtual" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxCompoundKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="class" /> + <xsd:enumeration value="struct" /> + <xsd:enumeration value="union" /> + <xsd:enumeration value="interface" /> + <xsd:enumeration value="protocol" /> + <xsd:enumeration value="category" /> + <xsd:enumeration value="exception" /> + <xsd:enumeration value="service" /> + <xsd:enumeration value="singleton" /> + <xsd:enumeration value="module" /> + <xsd:enumeration value="type" /> + <xsd:enumeration value="file" /> + <xsd:enumeration value="namespace" /> + <xsd:enumeration value="group" /> + <xsd:enumeration value="page" /> + <xsd:enumeration value="example" /> + <xsd:enumeration value="dir" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxSectionKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="user-defined" /> + <xsd:enumeration value="public-type" /> + <xsd:enumeration value="public-func" /> + <xsd:enumeration value="public-attrib" /> + <xsd:enumeration value="public-slot" /> + <xsd:enumeration value="signal" /> + <xsd:enumeration value="dcop-func" /> + <xsd:enumeration value="property" /> + <xsd:enumeration value="event" /> + <xsd:enumeration value="public-static-func" /> + <xsd:enumeration value="public-static-attrib" /> + <xsd:enumeration value="protected-type" /> + <xsd:enumeration value="protected-func" /> + <xsd:enumeration value="protected-attrib" /> + <xsd:enumeration value="protected-slot" /> + <xsd:enumeration value="protected-static-func" /> + <xsd:enumeration value="protected-static-attrib" /> + <xsd:enumeration value="package-type" /> + <xsd:enumeration value="package-func" /> + <xsd:enumeration value="package-attrib" /> + <xsd:enumeration value="package-static-func" /> + <xsd:enumeration value="package-static-attrib" /> + <xsd:enumeration value="private-type" /> + <xsd:enumeration value="private-func" /> + <xsd:enumeration value="private-attrib" /> + <xsd:enumeration value="private-slot" /> + <xsd:enumeration value="private-static-func" /> + <xsd:enumeration value="private-static-attrib" /> + <xsd:enumeration value="friend" /> + <xsd:enumeration value="related" /> + <xsd:enumeration value="define" /> + <xsd:enumeration value="prototype" /> + <xsd:enumeration value="typedef" /> + <xsd:enumeration value="enum" /> + <xsd:enumeration value="func" /> + <xsd:enumeration value="var" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxHighlightClass"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="comment" /> + <xsd:enumeration value="normal" /> + <xsd:enumeration value="preprocessor" /> + <xsd:enumeration value="keyword" /> + <xsd:enumeration value="keywordtype" /> + <xsd:enumeration value="keywordflow" /> + <xsd:enumeration value="stringliteral" /> + <xsd:enumeration value="charliteral" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxSimpleSectKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="see" /> + <xsd:enumeration value="return" /> + <xsd:enumeration value="author" /> + <xsd:enumeration value="authors" /> + <xsd:enumeration value="version" /> + <xsd:enumeration value="since" /> + <xsd:enumeration value="date" /> + <xsd:enumeration value="note" /> + <xsd:enumeration value="warning" /> + <xsd:enumeration value="pre" /> + <xsd:enumeration value="post" /> + <xsd:enumeration value="copyright" /> + <xsd:enumeration value="invariant" /> + <xsd:enumeration value="remark" /> + <xsd:enumeration value="attention" /> + <xsd:enumeration value="par" /> + <xsd:enumeration value="rcs" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxVersionNumber"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="\d+\.\d+.*" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxImageKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="html" /> + <xsd:enumeration value="latex" /> + <xsd:enumeration value="rtf" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxParamListKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="param" /> + <xsd:enumeration value="retval" /> + <xsd:enumeration value="exception" /> + <xsd:enumeration value="templateparam" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxCharRange"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="[aeiouncAEIOUNC]" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxParamDir"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="in"/> + <xsd:enumeration value="out"/> + <xsd:enumeration value="inout"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DoxAccessor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="retain"/> + <xsd:enumeration value="copy"/> + <xsd:enumeration value="assign"/> + <xsd:enumeration value="weak"/> + <xsd:enumeration value="strong"/> + <xsd:enumeration value="unretained"/> + </xsd:restriction> + </xsd:simpleType> + +</xsd:schema> + diff --git a/doxygen/xml/config_8h.xml b/doxygen/xml/config_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..ba417065016c0837b7877e80e07689dc322a6c34 --- /dev/null +++ b/doxygen/xml/config_8h.xml @@ -0,0 +1,279 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="config_8h" kind="file" language="C++"> + <compoundname>config.h</compoundname> + <includes local="no">cstddef</includes> + <includedby refid="bucket_8h" local="yes">include/decoder/bucket.h</includedby> + <includedby refid="byte__assembler_8h" local="yes">include/decoder/byte_assembler.h</includedby> + <includedby refid="goertzel_8h" local="yes">include/decoder/goertzel.h</includedby> + <includedby refid="audio__writer_8h" local="yes">include/encoder/audio_writer.h</includedby> + <includedby refid="encoder_8h" local="yes">include/encoder/encoder.h</includedby> + <includedby refid="synth_8h" local="yes">include/encoder/synth.h</includedby> + <incdepgraph> + <node id="1"> + <label>cstddef</label> + </node> + <node id="0"> + <label>include/config.h</label> + <link refid="config_8h"/> + <childnode refid="1" relation="include"> + </childnode> + </node> + </incdepgraph> + <invincdepgraph> + <node id="11"> + <label>include/encoder/tone_synth.h</label> + <link refid="tone__synth_8h"/> + <childnode refid="9" relation="include"> + </childnode> + </node> + <node id="8"> + <label>include/encoder/wav_writer.h</label> + <link refid="wav__writer_8h"/> + <childnode refid="9" relation="include"> + </childnode> + </node> + <node id="7"> + <label>include/encoder/audio_writer.h</label> + <link refid="audio__writer_8h"/> + <childnode refid="8" relation="include"> + </childnode> + </node> + <node id="3"> + <label>include/decoder/bucket.h</label> + <link refid="bucket_8h"/> + <childnode refid="4" relation="include"> + </childnode> + </node> + <node id="5"> + <label>include/decoder/decoder.h</label> + <link refid="decoder_8h"/> + </node> + <node id="10"> + <label>include/encoder/synth.h</label> + <link refid="synth_8h"/> + <childnode refid="11" relation="include"> + </childnode> + </node> + <node id="6"> + <label>include/decoder/goertzel.h</label> + <link refid="goertzel_8h"/> + <childnode refid="5" relation="include"> + </childnode> + </node> + <node id="2"> + <label>include/config.h</label> + <link refid="config_8h"/> + <childnode refid="3" relation="include"> + </childnode> + <childnode refid="4" relation="include"> + </childnode> + <childnode refid="6" relation="include"> + </childnode> + <childnode refid="7" relation="include"> + </childnode> + <childnode refid="9" relation="include"> + </childnode> + <childnode refid="10" relation="include"> + </childnode> + </node> + <node id="9"> + <label>include/encoder/encoder.h</label> + <link refid="encoder_8h"/> + </node> + <node id="4"> + <label>include/decoder/byte_assembler.h</label> + <link refid="byte__assembler_8h"/> + <childnode refid="5" relation="include"> + </childnode> + </node> + </invincdepgraph> + <sectiondef kind="define"> + <memberdef kind="define" id="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" prot="public" static="no"> + <name>REW_API</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/config.h" line="45" column="10" bodyfile="include/config.h" bodystart="45" bodyend="-1"/> + </memberdef> + <memberdef kind="define" id="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" prot="public" static="no"> + <name>REW_NAMESPACE</name> + <initializer>namespace Rew</initializer> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/config.h" line="48" column="9" bodyfile="include/config.h" bodystart="48" bodyend="-1"/> + </memberdef> + <memberdef kind="define" id="config_8h_1a10a59554805ac7ce3905fd3540f98137" prot="public" static="no"> + <name>NOEXCEPT</name> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/config.h" line="68" column="10" bodyfile="include/config.h" bodystart="68" bodyend="-1"/> + </memberdef> + <memberdef kind="define" id="config_8h_1a89e47af0449640d4f15191aba5ca24c6" prot="public" static="no"> + <name>RAD_TO_DEG</name> + <initializer>57.2957795131</initializer> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/config.h" line="75" column="9" bodyfile="include/config.h" bodystart="75" bodyend="-1"/> + </memberdef> + <memberdef kind="define" id="config_8h_1a212460e743fecb084d717bb2180c5a56" prot="public" static="no"> + <name>DEG_TO_RAD</name> + <initializer>0.01745329251</initializer> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/config.h" line="78" column="9" bodyfile="include/config.h" bodystart="78" bodyend="-1"/> + </memberdef> + <memberdef kind="define" id="config_8h_1ae71449b1cc6e6250b91f539153a7a0d3" prot="public" static="no"> + <name>M_PI</name> + <initializer>3.14159265358979323846</initializer> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/config.h" line="81" column="9" bodyfile="include/config.h" bodystart="81" bodyend="-1"/> + </memberdef> + <memberdef kind="define" id="config_8h_1a04662083967db54721ae4d5c9fa75dea" prot="public" static="no"> + <name>DEFAULT_LOW_TONE_FREQ</name> + <initializer>2400</initializer> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/config.h" line="85" column="9" bodyfile="include/config.h" bodystart="85" bodyend="-1"/> + </memberdef> + <memberdef kind="define" id="config_8h_1a36ccf37a8ab12ce335c3249bb87ae789" prot="public" static="no"> + <name>DEFAULT_HIGH_TONE_FREQ</name> + <initializer>4800</initializer> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/config.h" line="89" column="9" bodyfile="include/config.h" bodystart="89" bodyend="-1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="comment">/***<sp/>This<sp/>file<sp/>is<sp/>part<sp/>of<sp/>FineFramework<sp/>project<sp/>***/</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#ifndef<sp/>REW_CONFIG</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_CONFIG</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Using<sp/>Visual<sp/>Studio</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>_MSC_VER</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="7"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_WINDOWS_MSVC<sp/>1</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="8"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_WINDOWS<sp/>1</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="9"><highlight class="normal"></highlight><highlight class="preprocessor">#pragma<sp/>warning(<sp/>disable:<sp/>4251<sp/>)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="10"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="11"><highlight class="normal"></highlight></codeline> +<codeline lineno="12"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Using<sp/>MinGW</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="13"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>__MINGW32__</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="14"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_WINDOWS_MINGW<sp/>1</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="15"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_WINDOWS<sp/>1</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="16"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="17"><highlight class="normal"></highlight></codeline> +<codeline lineno="18"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Using<sp/>Linux<sp/>GCC</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="19"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>__linux__</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="20"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_LINUX_GCC<sp/>1</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="21"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_LINUX<sp/>1</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="22"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="23"><highlight class="normal"></highlight></codeline> +<codeline lineno="24"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Using<sp/>MAX<sp/>OS<sp/>X</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="25"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>defined(__APPLE__)<sp/>&&<sp/>defined(__MACH__)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_OSX_CLANG<sp/>1</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="27"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_OSX<sp/>1</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="28"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="29"><highlight class="normal"></highlight></codeline> +<codeline lineno="30"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!defined(REW_WINDOWS_MSVC)<sp/>&&<sp/>!defined(REW_WINDOWS_MINGW)<sp/>&&<sp/>!defined(REW_LINUX_GCC)<sp/>&&<sp/>!defined(REW_OSX_CLANG)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="31"><highlight class="normal"></highlight><highlight class="preprocessor">#error<sp/>Please<sp/>use<sp/>Visual<sp/>Studio,<sp/>MinGW,<sp/>Linux<sp/>GCC,<sp/>or<sp/>OS<sp/>X<sp/>Clang<sp/>to<sp/>compile<sp/>COM3001!</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="32"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="33"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!defined(REW_WINDOWS)<sp/>&&<sp/>!defined(REW_LINUX)<sp/>&&<sp/>!defined(REW_OSX)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="34"><highlight class="normal"></highlight><highlight class="preprocessor">#error<sp/>Target<sp/>platform<sp/>not<sp/>selected!</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="35"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="36"><highlight class="normal"></highlight></codeline> +<codeline lineno="37"><highlight class="normal"></highlight><highlight class="comment">//<sp/>COM3001<sp/>export<sp/>for<sp/>Windows</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="38"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>defined(REW_WINDOWS)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="39"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>REW_EXPORTS</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="40"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_API<sp/>__declspec(dllexport)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="41"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="42"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_API<sp/>__declspec(dllimport)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="43"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="44"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="45" refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_API</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="46"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="47"><highlight class="normal"></highlight></codeline> +<codeline lineno="48" refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_NAMESPACE<sp/>namespace<sp/>Rew</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="49"><highlight class="normal"></highlight></codeline> +<codeline lineno="50"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!defined(REW_API)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="51"><highlight class="normal"></highlight><highlight class="preprocessor">#error<sp/>REW_API<sp/>dllexport<sp/>not<sp/>defined!</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="52"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="53"><highlight class="normal"></highlight></codeline> +<codeline lineno="54"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>!defined(HAS_NOEXCEPT)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="55"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>defined(__clang__)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="56"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>__has_feature(cxx_noexcept)</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="57"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>HAS_NOEXCEPT</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="58"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="59"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="60"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>defined(__GXX_EXPERIMENTAL_CXX0X__)<sp/>&&<sp/>__GNUC__<sp/>*<sp/>10<sp/>+<sp/>__GNUC_MINOR__<sp/>>=<sp/>46<sp/>||<sp/>defined(_MSC_FULL_VER)<sp/>&&<sp/>_MSC_FULL_VER<sp/>>=<sp/>190023026</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="61"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>HAS_NOEXCEPT</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="62"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="63"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="64"><highlight class="normal"></highlight></codeline> +<codeline lineno="65"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>HAS_NOEXCEPT</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="66"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>NOEXCEPT<sp/>noexcept</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="67"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="68" refid="config_8h_1a10a59554805ac7ce3905fd3540f98137" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>NOEXCEPT</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="69"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="70"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="71"><highlight class="normal"></highlight></codeline> +<codeline lineno="72"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><cstddef></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="73"><highlight class="normal"></highlight></codeline> +<codeline lineno="74"><highlight class="normal"></highlight><highlight class="preprocessor">#ifndef<sp/>RAD_TO_DEG</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="75" refid="config_8h_1a89e47af0449640d4f15191aba5ca24c6" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>RAD_TO_DEG<sp/><sp/>57.2957795131</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="76"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="77"><highlight class="normal"></highlight><highlight class="preprocessor">#ifndef<sp/>DEG_TO_RAD</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="78" refid="config_8h_1a212460e743fecb084d717bb2180c5a56" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>DEG_TO_RAD<sp/><sp/>0.01745329251</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="79"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="80"><highlight class="normal"></highlight><highlight class="preprocessor">#ifndef<sp/>M_PI</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="81" refid="config_8h_1ae71449b1cc6e6250b91f539153a7a0d3" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>M_PI<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>3.14159265358979323846</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="82"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="83"><highlight class="normal"></highlight></codeline> +<codeline lineno="84"><highlight class="normal"></highlight><highlight class="preprocessor">#ifndef<sp/>DEFAULT_LOW_TONE_FREQ</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="85" refid="config_8h_1a04662083967db54721ae4d5c9fa75dea" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>DEFAULT_LOW_TONE_FREQ<sp/>2400</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="86"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="87"><highlight class="normal"></highlight></codeline> +<codeline lineno="88"><highlight class="normal"></highlight><highlight class="preprocessor">#ifndef<sp/>DEFAULT_HIGH_TONE_FREQ</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="89" refid="config_8h_1a36ccf37a8ab12ce335c3249bb87ae789" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>DEFAULT_HIGH_TONE_FREQ<sp/>4800</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="90"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="91"><highlight class="normal"></highlight></codeline> +<codeline lineno="92"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline> + </programlisting> + <location file="include/config.h"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/decoder_8h.xml b/doxygen/xml/decoder_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..fcd9c3990acb991513ecf6fcdabad00ac24daf03 --- /dev/null +++ b/doxygen/xml/decoder_8h.xml @@ -0,0 +1,118 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="decoder_8h" kind="file" language="C++"> + <compoundname>decoder.h</compoundname> + <includes refid="goertzel_8h" local="yes">goertzel.h</includes> + <includes local="no">utility</includes> + <includes local="no">functional</includes> + <includes local="no">memory</includes> + <includes refid="byte__assembler_8h" local="yes">byte_assembler.h</includes> + <incdepgraph> + <node id="32"> + <label>functional</label> + </node> + <node id="35"> + <label>bucket.h</label> + <link refid="bucket_8h"/> + <childnode refid="29" relation="include"> + </childnode> + <childnode refid="36" relation="include"> + </childnode> + </node> + <node id="27"> + <label>include/decoder/decoder.h</label> + <link refid="decoder_8h"/> + <childnode refid="28" relation="include"> + </childnode> + <childnode refid="31" relation="include"> + </childnode> + <childnode refid="32" relation="include"> + </childnode> + <childnode refid="33" relation="include"> + </childnode> + <childnode refid="34" relation="include"> + </childnode> + </node> + <node id="36"> + <label>vector</label> + </node> + <node id="31"> + <label>utility</label> + </node> + <node id="28"> + <label>goertzel.h</label> + <link refid="goertzel_8h"/> + <childnode refid="29" relation="include"> + </childnode> + </node> + <node id="30"> + <label>cstddef</label> + </node> + <node id="29"> + <label>../config.h</label> + <link refid="config_8h"/> + <childnode refid="30" relation="include"> + </childnode> + </node> + <node id="34"> + <label>byte_assembler.h</label> + <link refid="byte__assembler_8h"/> + <childnode refid="29" relation="include"> + </childnode> + <childnode refid="35" relation="include"> + </childnode> + <childnode refid="32" relation="include"> + </childnode> + </node> + <node id="33"> + <label>memory</label> + </node> + </incdepgraph> + <innerclass refid="class_rew_1_1_decoder" prot="public">Rew::Decoder</innerclass> + <innernamespace refid="namespace_rew">Rew</innernamespace> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="preprocessor">#ifndef<sp/>REW_DECODER_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_DECODER_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="goertzel_8h" kindref="compound">goertzel.h</ref>"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><utility></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><functional></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="7"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><memory></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="8"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="byte__assembler_8h" kindref="compound">byte_assembler.h</ref>"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="9"><highlight class="normal"></highlight></codeline> +<codeline lineno="15"><highlight class="normal"><ref refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kindref="member">REW_NAMESPACE</ref><sp/>{</highlight></codeline> +<codeline lineno="19" refid="class_rew_1_1_decoder" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref><sp/>{</highlight></codeline> +<codeline lineno="20"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>(</highlight></codeline> +<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>lowToneFreq<sp/>=<sp/><ref refid="config_8h_1a04662083967db54721ae4d5c9fa75dea" kindref="member">DEFAULT_LOW_TONE_FREQ</ref>,</highlight></codeline> +<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>highToneFreq<sp/>=<sp/><ref refid="config_8h_1a36ccf37a8ab12ce335c3249bb87ae789" kindref="member">DEFAULT_HIGH_TONE_FREQ</ref>,</highlight></codeline> +<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/>sampleLengthMs<sp/>=<sp/>1.25);</highlight></codeline> +<codeline lineno="25"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>(<ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>&&<sp/>other)<sp/>noexcept;</highlight></codeline> +<codeline lineno="26"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>~<ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>()<sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="28"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>swap(<ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>&<sp/>other)<sp/>noexcept;</highlight></codeline> +<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>&<sp/>operator<sp/>=<sp/>(<ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>&&<sp/>other)<sp/>noexcept;</highlight></codeline> +<codeline lineno="30"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>&<sp/>operator<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_decoder" kindref="compound">Decoder</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="31"><highlight class="normal"></highlight></codeline> +<codeline lineno="32"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>operator()(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>samples,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>length,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::function<</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">(</highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">)>&<sp/>callback);</highlight></codeline> +<codeline lineno="33"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>operator()(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>samples,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>length,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::function<</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">(</highlight><highlight class="keywordtype">float</highlight><highlight class="normal">,<sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal">)>&<sp/>callback);</highlight></codeline> +<codeline lineno="34"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>getLowMagnitude(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>samples,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>length);</highlight></codeline> +<codeline lineno="35"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>getHighMagnitude(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>samples,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>length);</highlight></codeline> +<codeline lineno="36"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="37"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>blockSize;</highlight></codeline> +<codeline lineno="38"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_goertzel" kindref="compound">Goertzel</ref><sp/>lowGoertzel;</highlight></codeline> +<codeline lineno="39"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_goertzel" kindref="compound">Goertzel</ref><sp/>highGoertzel;</highlight></codeline> +<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::unique_ptr<float><sp/>buffer;</highlight></codeline> +<codeline lineno="41"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_byte_assembler" kindref="compound">ByteAssembler</ref><sp/>byteAssembler;</highlight></codeline> +<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline> +<codeline lineno="43"><highlight class="normal">}</highlight></codeline> +<codeline lineno="44"><highlight class="normal"></highlight></codeline> +<codeline lineno="45"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline> + </programlisting> + <location file="include/decoder/decoder.h"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/dir_acb9e55bfefdf4d43f13fff6aa240ad7.xml b/doxygen/xml/dir_acb9e55bfefdf4d43f13fff6aa240ad7.xml new file mode 100644 index 0000000000000000000000000000000000000000..712389793c6049a42700392e9a94a74a89098005 --- /dev/null +++ b/doxygen/xml/dir_acb9e55bfefdf4d43f13fff6aa240ad7.xml @@ -0,0 +1,16 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="dir_acb9e55bfefdf4d43f13fff6aa240ad7" kind="dir"> + <compoundname>include/encoder</compoundname> + <innerfile refid="audio__writer_8h">audio_writer.h</innerfile> + <innerfile refid="encoder_8h">encoder.h</innerfile> + <innerfile refid="synth_8h">synth.h</innerfile> + <innerfile refid="tone__synth_8h">tone_synth.h</innerfile> + <innerfile refid="wav__writer_8h">wav_writer.h</innerfile> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <location file="include/encoder/"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/dir_d44c64559bbebec7f509842c48db8b23.xml b/doxygen/xml/dir_d44c64559bbebec7f509842c48db8b23.xml new file mode 100644 index 0000000000000000000000000000000000000000..64147e51d72ce0bf6172b15cd7435014d8c173b0 --- /dev/null +++ b/doxygen/xml/dir_d44c64559bbebec7f509842c48db8b23.xml @@ -0,0 +1,14 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="dir_d44c64559bbebec7f509842c48db8b23" kind="dir"> + <compoundname>include</compoundname> + <innerdir refid="dir_ef4c7dabb16c9bee1e17c47c3bb25728">include/decoder</innerdir> + <innerdir refid="dir_acb9e55bfefdf4d43f13fff6aa240ad7">include/encoder</innerdir> + <innerfile refid="config_8h">config.h</innerfile> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <location file="include/"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/dir_ef4c7dabb16c9bee1e17c47c3bb25728.xml b/doxygen/xml/dir_ef4c7dabb16c9bee1e17c47c3bb25728.xml new file mode 100644 index 0000000000000000000000000000000000000000..3b508e2a512c2d922414c28c7a38c7e396634b50 --- /dev/null +++ b/doxygen/xml/dir_ef4c7dabb16c9bee1e17c47c3bb25728.xml @@ -0,0 +1,15 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="dir_ef4c7dabb16c9bee1e17c47c3bb25728" kind="dir"> + <compoundname>include/decoder</compoundname> + <innerfile refid="bucket_8h">bucket.h</innerfile> + <innerfile refid="byte__assembler_8h">byte_assembler.h</innerfile> + <innerfile refid="decoder_8h">decoder.h</innerfile> + <innerfile refid="goertzel_8h">goertzel.h</innerfile> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <location file="include/decoder/"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/encoder_8h.xml b/doxygen/xml/encoder_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..da8c982913285a7318eb72613dae264e6d1dc820 --- /dev/null +++ b/doxygen/xml/encoder_8h.xml @@ -0,0 +1,110 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="encoder_8h" kind="file" language="C++"> + <compoundname>encoder.h</compoundname> + <includes refid="config_8h" local="yes">../config.h</includes> + <includes refid="tone__synth_8h" local="yes">tone_synth.h</includes> + <includes refid="wav__writer_8h" local="yes">wav_writer.h</includes> + <incdepgraph> + <node id="54"> + <label>tone_synth.h</label> + <link refid="tone__synth_8h"/> + <childnode refid="55" relation="include"> + </childnode> + <childnode refid="56" relation="include"> + </childnode> + </node> + <node id="57"> + <label>wav_writer.h</label> + <link refid="wav__writer_8h"/> + <childnode refid="58" relation="include"> + </childnode> + <childnode refid="59" relation="include"> + </childnode> + </node> + <node id="59"> + <label>audio_writer.h</label> + <link refid="audio__writer_8h"/> + <childnode refid="58" relation="include"> + </childnode> + <childnode refid="60" relation="include"> + </childnode> + <childnode refid="52" relation="include"> + </childnode> + </node> + <node id="60"> + <label>string</label> + </node> + <node id="58"> + <label>fstream</label> + </node> + <node id="56"> + <label>synth.h</label> + <link refid="synth_8h"/> + <childnode refid="52" relation="include"> + </childnode> + </node> + <node id="53"> + <label>cstddef</label> + </node> + <node id="52"> + <label>../config.h</label> + <link refid="config_8h"/> + <childnode refid="53" relation="include"> + </childnode> + </node> + <node id="51"> + <label>include/encoder/encoder.h</label> + <link refid="encoder_8h"/> + <childnode refid="52" relation="include"> + </childnode> + <childnode refid="54" relation="include"> + </childnode> + <childnode refid="57" relation="include"> + </childnode> + </node> + <node id="55"> + <label>memory</label> + </node> + </incdepgraph> + <innerclass refid="class_rew_1_1_encoder" prot="public">Rew::Encoder</innerclass> + <innernamespace refid="namespace_rew">Rew</innernamespace> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="preprocessor">#ifndef<sp/>REW_ENCODER_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_ENCODER_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"../config.h"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="tone__synth_8h" kindref="compound">tone_synth.h</ref>"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="wav__writer_8h" kindref="compound">wav_writer.h</ref>"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="7"><highlight class="normal"></highlight></codeline> +<codeline lineno="13"><highlight class="normal"><ref refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kindref="member">REW_NAMESPACE</ref><sp/>{</highlight></codeline> +<codeline lineno="17" refid="class_rew_1_1_encoder" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref><sp/>{</highlight></codeline> +<codeline lineno="18"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="19"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>(</highlight></codeline> +<codeline lineno="20"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>lowToneFreq<sp/>=<sp/><ref refid="config_8h_1a04662083967db54721ae4d5c9fa75dea" kindref="member">DEFAULT_LOW_TONE_FREQ</ref>,</highlight></codeline> +<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>highToneFreq<sp/>=<sp/><ref refid="config_8h_1a36ccf37a8ab12ce335c3249bb87ae789" kindref="member">DEFAULT_HIGH_TONE_FREQ</ref>,<sp/></highlight></codeline> +<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/>sampleLengthMs<sp/>=<sp/>1.25);</highlight></codeline> +<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>(<ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>&&<sp/>other)<sp/>noexcept;</highlight></codeline> +<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="25"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>swap(<ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>&<sp/>other)<sp/>noexcept;</highlight></codeline> +<codeline lineno="26"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>&<sp/>operator<sp/>=<sp/>(<ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>&&<sp/>other)<sp/>noexcept;</highlight></codeline> +<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>&<sp/>operator<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_encoder" kindref="compound">Encoder</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="28"><highlight class="normal"></highlight></codeline> +<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>operator()(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>data,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>length)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="30"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>getNumOfSamples(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>length)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="31"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="32"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref><sp/>lowTone;</highlight></codeline> +<codeline lineno="33"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref><sp/>highTone;</highlight></codeline> +<codeline lineno="34"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::unique_ptr<float[]><sp/>nullTone;</highlight></codeline> +<codeline lineno="35"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline> +<codeline lineno="36"><highlight class="normal">}</highlight></codeline> +<codeline lineno="37"><highlight class="normal"></highlight></codeline> +<codeline lineno="38"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline> + </programlisting> + <location file="include/encoder/encoder.h"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/goertzel_8h.xml b/doxygen/xml/goertzel_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..d100ef72a37d3c3597f1cf3f1effdc10732f4751 --- /dev/null +++ b/doxygen/xml/goertzel_8h.xml @@ -0,0 +1,78 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="goertzel_8h" kind="file" language="C++"> + <compoundname>goertzel.h</compoundname> + <includes refid="config_8h" local="yes">../config.h</includes> + <includedby refid="decoder_8h" local="yes">include/decoder/decoder.h</includedby> + <incdepgraph> + <node id="38"> + <label>include/decoder/goertzel.h</label> + <link refid="goertzel_8h"/> + <childnode refid="39" relation="include"> + </childnode> + </node> + <node id="40"> + <label>cstddef</label> + </node> + <node id="39"> + <label>../config.h</label> + <link refid="config_8h"/> + <childnode refid="40" relation="include"> + </childnode> + </node> + </incdepgraph> + <invincdepgraph> + <node id="42"> + <label>include/decoder/decoder.h</label> + <link refid="decoder_8h"/> + </node> + <node id="41"> + <label>include/decoder/goertzel.h</label> + <link refid="goertzel_8h"/> + <childnode refid="42" relation="include"> + </childnode> + </node> + </invincdepgraph> + <innerclass refid="class_rew_1_1_goertzel" prot="public">Rew::Goertzel</innerclass> + <innernamespace refid="namespace_rew">Rew</innernamespace> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="preprocessor">#ifndef<sp/>REW_DECODER_GOERTZEL_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_DECODER_GOERTZEL_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"../config.h"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"><ref refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kindref="member">REW_NAMESPACE</ref>{</highlight></codeline> +<codeline lineno="10" refid="class_rew_1_1_goertzel" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="class_rew_1_1_goertzel" kindref="compound">Goertzel</ref><sp/>{</highlight></codeline> +<codeline lineno="11"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="12"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_goertzel" kindref="compound">Goertzel</ref>(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>blockSize,<sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>targetFrequency,<sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>sampleRate);</highlight></codeline> +<codeline lineno="13"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>~<ref refid="class_rew_1_1_goertzel" kindref="compound">Goertzel</ref>()<sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="14"><highlight class="normal"></highlight></codeline> +<codeline lineno="15"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>operator()(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>samples);</highlight></codeline> +<codeline lineno="16"><highlight class="normal"></highlight></codeline> +<codeline lineno="17" refid="class_rew_1_1_goertzel_1ae28f15fc29df22d452b61fc43fb66aa8" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_goertzel_1ae28f15fc29df22d452b61fc43fb66aa8" kindref="member">getBlockSize</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline> +<codeline lineno="18"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>blockSize;</highlight></codeline> +<codeline lineno="19"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="20"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>processSample(</highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>sample);</highlight></codeline> +<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>init(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>blockSize,<sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>targetFrequency,<sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>sampleRate);</highlight></codeline> +<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>reset();</highlight></codeline> +<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>getMagnitude()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="25"><highlight class="normal"></highlight></codeline> +<codeline lineno="26"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>coeff;</highlight></codeline> +<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>Q1;</highlight></codeline> +<codeline lineno="28"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>Q2;</highlight></codeline> +<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>sine;</highlight></codeline> +<codeline lineno="30"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>cosine;</highlight></codeline> +<codeline lineno="31"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>blockSize;</highlight></codeline> +<codeline lineno="32"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline> +<codeline lineno="33"><highlight class="normal">}</highlight></codeline> +<codeline lineno="34"><highlight class="normal"></highlight></codeline> +<codeline lineno="35"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline> + </programlisting> + <location file="include/decoder/goertzel.h"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/group__decoder.xml b/doxygen/xml/group__decoder.xml new file mode 100644 index 0000000000000000000000000000000000000000..56e032f73c7d141e82d2e0aeb03a10151a759618 --- /dev/null +++ b/doxygen/xml/group__decoder.xml @@ -0,0 +1,15 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="group__decoder" kind="group"> + <compoundname>decoder</compoundname> + <title>Decoder</title> + <innerclass refid="class_rew_1_1_bucket" prot="public">Rew::Bucket</innerclass> + <innerclass refid="class_rew_1_1_byte_assembler" prot="public">Rew::ByteAssembler</innerclass> + <innerclass refid="class_rew_1_1_decoder" prot="public">Rew::Decoder</innerclass> + <innerclass refid="class_rew_1_1_goertzel" prot="public">Rew::Goertzel</innerclass> + <briefdescription> +<para>The clientside part of the project for decoding the signal. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + </compounddef> +</doxygen> diff --git a/doxygen/xml/group__encoder.xml b/doxygen/xml/group__encoder.xml new file mode 100644 index 0000000000000000000000000000000000000000..77b8950792e7db748f82e85264c3e377c867cadf --- /dev/null +++ b/doxygen/xml/group__encoder.xml @@ -0,0 +1,16 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="group__encoder" kind="group"> + <compoundname>encoder</compoundname> + <title>Encoder</title> + <innerclass refid="class_rew_1_1_audio_writer" prot="public">Rew::AudioWriter</innerclass> + <innerclass refid="class_rew_1_1_encoder" prot="public">Rew::Encoder</innerclass> + <innerclass refid="class_rew_1_1_synth" prot="public">Rew::Synth</innerclass> + <innerclass refid="class_rew_1_1_tone_synth" prot="public">Rew::ToneSynth</innerclass> + <innerclass refid="class_rew_1_1_wav_writer" prot="public">Rew::WavWriter</innerclass> + <briefdescription> +<para>The server side part of the project for encoding the data into signal. </para> </briefdescription> + <detaileddescription> + </detaileddescription> + </compounddef> +</doxygen> diff --git a/doxygen/xml/index.xml b/doxygen/xml/index.xml new file mode 100644 index 0000000000000000000000000000000000000000..a7cdf99fdd29bb4b695af1c4f309c9178821a46f --- /dev/null +++ b/doxygen/xml/index.xml @@ -0,0 +1,175 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygenindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="index.xsd" version="1.8.14"> + <compound refid="class_rew_1_1_audio_writer" kind="class"><name>Rew::AudioWriter</name> + <member refid="class_rew_1_1_audio_writer_1a4eca6a6861551d45c1d079d3971f01df" kind="variable"><name>loaded</name></member> + <member refid="class_rew_1_1_audio_writer_1aa84a112f4f791cad425aa63f3b412efa" kind="variable"><name>size</name></member> + <member refid="class_rew_1_1_audio_writer_1a71567e58f680b1f3346727ce20d09115" kind="variable"><name>sampleRate</name></member> + <member refid="class_rew_1_1_audio_writer_1aabfb8aed29b83114ff67ae2a0a063bbb" kind="variable"><name>channelCount</name></member> + <member refid="class_rew_1_1_audio_writer_1ac3d60ac33859cc0688ca3761b5dbf010" kind="variable"><name>bitsPerSample</name></member> + <member refid="class_rew_1_1_audio_writer_1a0f0e4ea476c6e557af77ba1902cdde13" kind="variable"><name>chunkSize</name></member> + <member refid="class_rew_1_1_audio_writer_1a7898acd23a7adbbc1c1fe96220608957" kind="function"><name>AudioWriter</name></member> + <member refid="class_rew_1_1_audio_writer_1a88b3be8be3b8bd644a16939e7faefcd5" kind="function"><name>~AudioWriter</name></member> + <member refid="class_rew_1_1_audio_writer_1a619c520a49467c7dd6a6bee0d3ac399c" kind="function"><name>open</name></member> + <member refid="class_rew_1_1_audio_writer_1a4ac109653fd08b3d51dd54930593b859" kind="function"><name>writeChunk</name></member> + <member refid="class_rew_1_1_audio_writer_1aa8b315cb43e7598aa1b1ea2ff0e036af" kind="function"><name>writeFooter</name></member> + <member refid="class_rew_1_1_audio_writer_1a2d891dcd78323ef0ba32335041eb923c" kind="function"><name>close</name></member> + <member refid="class_rew_1_1_audio_writer_1a5288a2b883fab9d06d8292c6a657c077" kind="function"><name>eof</name></member> + <member refid="class_rew_1_1_audio_writer_1ae3d33d0968b52793b545d46c7e8cdb55" kind="function"><name>getPos</name></member> + <member refid="class_rew_1_1_audio_writer_1ab3f42f0f4b515dadd3de7c51f857d042" kind="function"><name>isOpen</name></member> + <member refid="class_rew_1_1_audio_writer_1a344835d861a600f89454e35bfe4958b9" kind="function"><name>getSize</name></member> + <member refid="class_rew_1_1_audio_writer_1af5e4622f9b4faa35bb553522766c5cd8" kind="function"><name>getSampleRate</name></member> + <member refid="class_rew_1_1_audio_writer_1ab3a2df9304221bd8e4b593efe277598a" kind="function"><name>getNumOfChannels</name></member> + <member refid="class_rew_1_1_audio_writer_1a8255a4d834e892a6594bcd1e449aa54f" kind="function"><name>getBitsPerSample</name></member> + <member refid="class_rew_1_1_audio_writer_1a16c70083411cc3921233092c0ad632c3" kind="function"><name>getChunkSize</name></member> + <member refid="class_rew_1_1_audio_writer_1ae11b1fa568d431d6a976bee5f14d38d8" kind="function"><name>operator bool</name></member> + </compound> + <compound refid="class_rew_1_1_bucket" kind="class"><name>Rew::Bucket</name> + <member refid="class_rew_1_1_bucket_1acbc95b93eb4ceff039ee2bf9050dfd3b" kind="variable"><name>vector</name></member> + <member refid="class_rew_1_1_bucket_1a26d4ad2b2302ad18be73b383d70f2c44" kind="function"><name>Bucket</name></member> + <member refid="class_rew_1_1_bucket_1aa80d0bdc739c2446e33312b6f7fa1fae" kind="function"><name>Bucket</name></member> + <member refid="class_rew_1_1_bucket_1a44338da96cb18d730ed767896fe148bf" kind="function"><name>Bucket</name></member> + <member refid="class_rew_1_1_bucket_1aff77d0f0031128e321d62c0f6e39f760" kind="function"><name>~Bucket</name></member> + <member refid="class_rew_1_1_bucket_1aa34958b0d7d35a288b45952460fe322e" kind="function"><name>swap</name></member> + <member refid="class_rew_1_1_bucket_1a24d6780a56671976c1dd50eec59f90f4" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_bucket_1acccd57a3a54af96e368ee2434a43e6f0" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_bucket_1ac5cbeedb6b0b579ec26c9669a6754571" kind="function"><name>pushBack</name></member> + <member refid="class_rew_1_1_bucket_1a220215d7c14acc8ebf3a93918f81468b" kind="function"><name>size</name></member> + <member refid="class_rew_1_1_bucket_1a412e4d2186c14d8296f17c63ff7465d8" kind="function"><name>begin</name></member> + <member refid="class_rew_1_1_bucket_1afc320156c6efd79f8e86667aa7f7cb05" kind="function"><name>begin</name></member> + <member refid="class_rew_1_1_bucket_1a51fb9092c7601809ce04367ae1cc8beb" kind="function"><name>end</name></member> + <member refid="class_rew_1_1_bucket_1a8b0f1a414910a05f2742dccdcb7e3fa9" kind="function"><name>end</name></member> + <member refid="class_rew_1_1_bucket_1ab0490d14ae89f27f16982294ae1f56e1" kind="function"><name>clear</name></member> + <member refid="class_rew_1_1_bucket_1acda8cc938f48bf23c01b3644ff0d114c" kind="function"><name>operator[]</name></member> + <member refid="class_rew_1_1_bucket_1a03c0248f1d3e025dda02331ca6e54bd2" kind="function"><name>operator[]</name></member> + </compound> + <compound refid="class_rew_1_1_byte_assembler" kind="class"><name>Rew::ByteAssembler</name> + <member refid="class_rew_1_1_byte_assembler_1a68242e586e317103789946300a7126d8" kind="variable"><name>buffer</name></member> + <member refid="class_rew_1_1_byte_assembler_1a5a7a1c9ce7a2e928afa23a0e3598cb92" kind="function"><name>ByteAssembler</name></member> + <member refid="class_rew_1_1_byte_assembler_1a6b63b45d083d74819ed12dc380b7e64b" kind="function"><name>ByteAssembler</name></member> + <member refid="class_rew_1_1_byte_assembler_1a2f3f8050d82ed23bef25cbcd91c51cc7" kind="function"><name>ByteAssembler</name></member> + <member refid="class_rew_1_1_byte_assembler_1a1b9676cb634c5e58292528b4dd66a632" kind="function"><name>swap</name></member> + <member refid="class_rew_1_1_byte_assembler_1ad0c945b42ab0799a909e90819e65282e" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_byte_assembler_1aea609342e2813315926997783da794e8" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_byte_assembler_1a269def0ed892b84e5284f80008dd0837" kind="function"><name>operator()</name></member> + <member refid="class_rew_1_1_byte_assembler_1a1c0c4cc1d99eaada68c33725aa7c90e4" kind="function"><name>countValue</name></member> + <member refid="class_rew_1_1_byte_assembler_1a15cf8c29c1c6fb7f9eb7f62c82093a80" kind="function"><name>toByte</name></member> + </compound> + <compound refid="class_rew_1_1_decoder" kind="class"><name>Rew::Decoder</name> + <member refid="class_rew_1_1_decoder_1af6cc7425e112b2db1f2641a501ec3cda" kind="variable"><name>blockSize</name></member> + <member refid="class_rew_1_1_decoder_1adf24b0af05fa183f082c2c1541389abf" kind="variable"><name>lowGoertzel</name></member> + <member refid="class_rew_1_1_decoder_1a97039031c00bdf00dc64bb2d373795bb" kind="variable"><name>highGoertzel</name></member> + <member refid="class_rew_1_1_decoder_1a58c85fb9b5be4a9c00e2e9e351991cb9" kind="variable"><name>buffer</name></member> + <member refid="class_rew_1_1_decoder_1a8aca3fb866d8d663a863b375b26a4490" kind="variable"><name>byteAssembler</name></member> + <member refid="class_rew_1_1_decoder_1ae253e716569f260f8c00bba62b715ac3" kind="function"><name>Decoder</name></member> + <member refid="class_rew_1_1_decoder_1ac3eff2261a903149a73dd6006bdbb51b" kind="function"><name>Decoder</name></member> + <member refid="class_rew_1_1_decoder_1a52a421be82572621f079bbfc6ddefef5" kind="function"><name>Decoder</name></member> + <member refid="class_rew_1_1_decoder_1a9f64b20ac742596b863ae501eae8d487" kind="function"><name>~Decoder</name></member> + <member refid="class_rew_1_1_decoder_1ad969594c2b324386833aa72ad797ed6c" kind="function"><name>swap</name></member> + <member refid="class_rew_1_1_decoder_1a632a4f0a49b4296fd1ad72e0d9c80704" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_decoder_1a189cb08a95c53b70c35164286c5a9061" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_decoder_1ac241d859a05f016a4f8b0c3959539426" kind="function"><name>operator()</name></member> + <member refid="class_rew_1_1_decoder_1a650bd842d77f10777a1af25a60cea7d2" kind="function"><name>operator()</name></member> + <member refid="class_rew_1_1_decoder_1aa3febdd0293f6d329f55964d64ed9559" kind="function"><name>getLowMagnitude</name></member> + <member refid="class_rew_1_1_decoder_1a954fcde976db8571a1550a23a38e376b" kind="function"><name>getHighMagnitude</name></member> + </compound> + <compound refid="class_rew_1_1_encoder" kind="class"><name>Rew::Encoder</name> + <member refid="class_rew_1_1_encoder_1abab25a20be3f4f7cc8fada65321fb855" kind="variable"><name>lowTone</name></member> + <member refid="class_rew_1_1_encoder_1a21b9fb238f3b7cc1b56a58b75e22018f" kind="variable"><name>highTone</name></member> + <member refid="class_rew_1_1_encoder_1ae9018203e48442fc11f71ca4dc91d11b" kind="variable"><name>nullTone</name></member> + <member refid="class_rew_1_1_encoder_1a1ef7cf58b6f6addfb22fdaa1c9ba7df7" kind="function"><name>Encoder</name></member> + <member refid="class_rew_1_1_encoder_1ab018bb9b035bd40da89d04109e4c2374" kind="function"><name>Encoder</name></member> + <member refid="class_rew_1_1_encoder_1a81fb438ec14c31d3e86f1c6f35b0f41c" kind="function"><name>Encoder</name></member> + <member refid="class_rew_1_1_encoder_1a2d121516fb43077f1d8dc318a02feac6" kind="function"><name>swap</name></member> + <member refid="class_rew_1_1_encoder_1a487d21e4e2135a174f08fbc71c182ae9" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_encoder_1a7cb96ed4848060c6479076eb8d79ab87" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_encoder_1a0fbf3ed6f39c0099771eef9e64d294ea" kind="function"><name>operator()</name></member> + <member refid="class_rew_1_1_encoder_1a5a0eff754a3373a361ae2c78d692bdc4" kind="function"><name>getNumOfSamples</name></member> + </compound> + <compound refid="class_rew_1_1_goertzel" kind="class"><name>Rew::Goertzel</name> + <member refid="class_rew_1_1_goertzel_1aa4d84715b925577ab63368b59044edc9" kind="variable"><name>coeff</name></member> + <member refid="class_rew_1_1_goertzel_1af231f9f7c1d7abcba220d8c648e121a1" kind="variable"><name>Q1</name></member> + <member refid="class_rew_1_1_goertzel_1a10a385a1ef24f90178fc8ac5ea89767c" kind="variable"><name>Q2</name></member> + <member refid="class_rew_1_1_goertzel_1a64e806f9edd8eeee230547b2f99bde19" kind="variable"><name>sine</name></member> + <member refid="class_rew_1_1_goertzel_1ac7be9bdbcd8c4ba2ac281c0ff4747f6b" kind="variable"><name>cosine</name></member> + <member refid="class_rew_1_1_goertzel_1a9d9347d8bfa02fc805875d3bb52ce6bd" kind="variable"><name>blockSize</name></member> + <member refid="class_rew_1_1_goertzel_1ae5f0a6149e1c9a8cbf2e3a89cbb3a0ef" kind="function"><name>Goertzel</name></member> + <member refid="class_rew_1_1_goertzel_1a07d48d1c8342c443f5573a661a240da3" kind="function"><name>~Goertzel</name></member> + <member refid="class_rew_1_1_goertzel_1a781fe776d1841c2591d16a4288c67757" kind="function"><name>operator()</name></member> + <member refid="class_rew_1_1_goertzel_1ae28f15fc29df22d452b61fc43fb66aa8" kind="function"><name>getBlockSize</name></member> + <member refid="class_rew_1_1_goertzel_1a308f30e32fef56737d077941730a9fe3" kind="function"><name>processSample</name></member> + <member refid="class_rew_1_1_goertzel_1a679a7cf5c39ed0d6960c3d72ce23c4c2" kind="function"><name>init</name></member> + <member refid="class_rew_1_1_goertzel_1ab2e4991eb6a7a1ef205d6f2dc26785f0" kind="function"><name>reset</name></member> + <member refid="class_rew_1_1_goertzel_1a5178077648810edec45d07462a59df86" kind="function"><name>getMagnitude</name></member> + </compound> + <compound refid="class_rew_1_1_synth" kind="class"><name>Rew::Synth</name> + <member refid="class_rew_1_1_synth_1ace1cefd258dc0d74251541a59f5b2ac6" kind="function"><name>operator()</name></member> + </compound> + <compound refid="class_rew_1_1_tone_synth" kind="class"><name>Rew::ToneSynth</name> + <member refid="class_rew_1_1_tone_synth_1a6aa45a42763100554f5062dd8f03bb37" kind="variable"><name>frequency</name></member> + <member refid="class_rew_1_1_tone_synth_1aa27efd3fcc9a3da57aab4c528654dff7" kind="variable"><name>total</name></member> + <member refid="class_rew_1_1_tone_synth_1a665a2d073189fd425d21c405da41ab8e" kind="variable"><name>src</name></member> + <member refid="class_rew_1_1_tone_synth_1aa07adb49b8173acbe587634375296b83" kind="function"><name>ToneSynth</name></member> + <member refid="class_rew_1_1_tone_synth_1a8198c80ea4d9f4fa5756b0da55c7cb3d" kind="function"><name>ToneSynth</name></member> + <member refid="class_rew_1_1_tone_synth_1a442ec4059583bebb796999a77d6e54a0" kind="function"><name>ToneSynth</name></member> + <member refid="class_rew_1_1_tone_synth_1af9f03f7e685e9ec65e7a2af37375d2f1" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_tone_synth_1a9ef2c6fe4b3a77a30310ae2db7767921" kind="function"><name>operator=</name></member> + <member refid="class_rew_1_1_tone_synth_1aac7488713a60314c28bf2ce69254bed3" kind="function"><name>operator()</name></member> + <member refid="class_rew_1_1_tone_synth_1afe306b4551ee6abf6383d0c9b75e1d17" kind="function"><name>getSamplesPerBlock</name></member> + <member refid="class_rew_1_1_tone_synth_1a27740d024ea2ee4115882c5ecb650341" kind="function"><name>allocate</name></member> + </compound> + <compound refid="class_rew_1_1_wav_writer" kind="class"><name>Rew::WavWriter</name> + <member refid="class_rew_1_1_wav_writer_1a4bdeea5d1815794649ca3cfd17725e65" kind="variable"><name>output</name></member> + <member refid="class_rew_1_1_wav_writer_1a7d15122ae661ec7be4065b1417401642" kind="variable"><name>eos</name></member> + <member refid="class_rew_1_1_wav_writer_1a99940678fabcd731c90e2dec3802e935" kind="variable"><name>dataOffset</name></member> + <member refid="class_rew_1_1_wav_writer_1a18999b980002a2aaa91a330d9177ecca" kind="variable"><name>dataWritten</name></member> + <member refid="class_rew_1_1_wav_writer_1af9a57cca60c3e4332ed403d3c5a9aac5" kind="function"><name>WavWriter</name></member> + <member refid="class_rew_1_1_wav_writer_1ab47e21b2b233b8a4ac56bcfcd4426b5f" kind="function"><name>~WavWriter</name></member> + <member refid="class_rew_1_1_wav_writer_1a4700f564e14ca54a319ed2a23337581b" kind="function"><name>open</name></member> + <member refid="class_rew_1_1_wav_writer_1a017679508e2b7f7645ff6192e275af54" kind="function"><name>close</name></member> + <member refid="class_rew_1_1_wav_writer_1a21f12fc360fee57a7cfc85d9a4ff07be" kind="function"><name>writeChunk</name></member> + <member refid="class_rew_1_1_wav_writer_1a0ca68ad62f42f0eb1334ffc49319f4a1" kind="function"><name>writeFooter</name></member> + <member refid="class_rew_1_1_wav_writer_1a2fee28dbc8c223c8b7e361eaf65ce22f" kind="function"><name>eof</name></member> + <member refid="class_rew_1_1_wav_writer_1a4314c21ee94386f745f951c57d82bc7f" kind="function"><name>getPos</name></member> + </compound> + <compound refid="namespace_rew" kind="namespace"><name>Rew</name> + <member refid="namespace_rew_1ac7d4b7e2a8dee078194367ced9f823bc" kind="function"><name>saveWav</name></member> + </compound> + <compound refid="config_8h" kind="file"><name>config.h</name> + <member refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kind="define"><name>REW_API</name></member> + <member refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kind="define"><name>REW_NAMESPACE</name></member> + <member refid="config_8h_1a10a59554805ac7ce3905fd3540f98137" kind="define"><name>NOEXCEPT</name></member> + <member refid="config_8h_1a89e47af0449640d4f15191aba5ca24c6" kind="define"><name>RAD_TO_DEG</name></member> + <member refid="config_8h_1a212460e743fecb084d717bb2180c5a56" kind="define"><name>DEG_TO_RAD</name></member> + <member refid="config_8h_1ae71449b1cc6e6250b91f539153a7a0d3" kind="define"><name>M_PI</name></member> + <member refid="config_8h_1a04662083967db54721ae4d5c9fa75dea" kind="define"><name>DEFAULT_LOW_TONE_FREQ</name></member> + <member refid="config_8h_1a36ccf37a8ab12ce335c3249bb87ae789" kind="define"><name>DEFAULT_HIGH_TONE_FREQ</name></member> + </compound> + <compound refid="bucket_8h" kind="file"><name>bucket.h</name> + </compound> + <compound refid="byte__assembler_8h" kind="file"><name>byte_assembler.h</name> + </compound> + <compound refid="decoder_8h" kind="file"><name>decoder.h</name> + </compound> + <compound refid="goertzel_8h" kind="file"><name>goertzel.h</name> + </compound> + <compound refid="audio__writer_8h" kind="file"><name>audio_writer.h</name> + </compound> + <compound refid="encoder_8h" kind="file"><name>encoder.h</name> + </compound> + <compound refid="synth_8h" kind="file"><name>synth.h</name> + </compound> + <compound refid="tone__synth_8h" kind="file"><name>tone_synth.h</name> + </compound> + <compound refid="wav__writer_8h" kind="file"><name>wav_writer.h</name> + </compound> + <compound refid="group__decoder" kind="group"><name>decoder</name> + </compound> + <compound refid="group__encoder" kind="group"><name>encoder</name> + </compound> + <compound refid="dir_ef4c7dabb16c9bee1e17c47c3bb25728" kind="dir"><name>include/decoder</name> + </compound> + <compound refid="dir_acb9e55bfefdf4d43f13fff6aa240ad7" kind="dir"><name>include/encoder</name> + </compound> + <compound refid="dir_d44c64559bbebec7f509842c48db8b23" kind="dir"><name>include</name> + </compound> +</doxygenindex> diff --git a/doxygen/xml/index.xsd b/doxygen/xml/index.xsd new file mode 100644 index 0000000000000000000000000000000000000000..d7ab2a906b19983c8b1d375e4167b2841ec07c78 --- /dev/null +++ b/doxygen/xml/index.xsd @@ -0,0 +1,66 @@ +<?xml version='1.0' encoding='utf-8' ?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <xsd:element name="doxygenindex" type="DoxygenType"/> + + <xsd:complexType name="DoxygenType"> + <xsd:sequence> + <xsd:element name="compound" type="CompoundType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="version" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="CompoundType"> + <xsd:sequence> + <xsd:element name="name" type="xsd:string"/> + <xsd:element name="member" type="MemberType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="refid" type="xsd:string" use="required"/> + <xsd:attribute name="kind" type="CompoundKind" use="required"/> + </xsd:complexType> + + <xsd:complexType name="MemberType"> + <xsd:sequence> + <xsd:element name="name" type="xsd:string"/> + </xsd:sequence> + <xsd:attribute name="refid" type="xsd:string" use="required"/> + <xsd:attribute name="kind" type="MemberKind" use="required"/> + </xsd:complexType> + + <xsd:simpleType name="CompoundKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="class"/> + <xsd:enumeration value="struct"/> + <xsd:enumeration value="union"/> + <xsd:enumeration value="interface"/> + <xsd:enumeration value="protocol"/> + <xsd:enumeration value="category"/> + <xsd:enumeration value="exception"/> + <xsd:enumeration value="file"/> + <xsd:enumeration value="namespace"/> + <xsd:enumeration value="group"/> + <xsd:enumeration value="page"/> + <xsd:enumeration value="example"/> + <xsd:enumeration value="dir"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="MemberKind"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="define"/> + <xsd:enumeration value="property"/> + <xsd:enumeration value="event"/> + <xsd:enumeration value="variable"/> + <xsd:enumeration value="typedef"/> + <xsd:enumeration value="enum"/> + <xsd:enumeration value="enumvalue"/> + <xsd:enumeration value="function"/> + <xsd:enumeration value="signal"/> + <xsd:enumeration value="prototype"/> + <xsd:enumeration value="friend"/> + <xsd:enumeration value="dcop"/> + <xsd:enumeration value="slot"/> + </xsd:restriction> + </xsd:simpleType> + +</xsd:schema> + diff --git a/doxygen/xml/namespace_rew.xml b/doxygen/xml/namespace_rew.xml new file mode 100644 index 0000000000000000000000000000000000000000..ac3e17d42be676960da587516da8e605cc7c4577 --- /dev/null +++ b/doxygen/xml/namespace_rew.xml @@ -0,0 +1,59 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="namespace_rew" kind="namespace" language="C++"> + <compoundname>Rew</compoundname> + <innerclass refid="class_rew_1_1_audio_writer" prot="public">Rew::AudioWriter</innerclass> + <innerclass refid="class_rew_1_1_bucket" prot="public">Rew::Bucket</innerclass> + <innerclass refid="class_rew_1_1_byte_assembler" prot="public">Rew::ByteAssembler</innerclass> + <innerclass refid="class_rew_1_1_decoder" prot="public">Rew::Decoder</innerclass> + <innerclass refid="class_rew_1_1_encoder" prot="public">Rew::Encoder</innerclass> + <innerclass refid="class_rew_1_1_goertzel" prot="public">Rew::Goertzel</innerclass> + <innerclass refid="class_rew_1_1_synth" prot="public">Rew::Synth</innerclass> + <innerclass refid="class_rew_1_1_tone_synth" prot="public">Rew::ToneSynth</innerclass> + <innerclass refid="class_rew_1_1_wav_writer" prot="public">Rew::WavWriter</innerclass> + <sectiondef kind="func"> + <memberdef kind="function" id="namespace_rew_1ac7d4b7e2a8dee078194367ced9f823bc" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>bool</type> + <definition>bool Rew::saveWav</definition> + <argsstring>(const std::string &path, const unsigned char *data, size_t size, int bitsPerSample, int sampleRate, int numChannels)</argsstring> + <name>saveWav</name> + <param> + <type>const std::string &</type> + <declname>path</declname> + </param> + <param> + <type>const unsigned char *</type> + <declname>data</declname> + </param> + <param> + <type>size_t</type> + <declname>size</declname> + </param> + <param> + <type>int</type> + <declname>bitsPerSample</declname> + </param> + <param> + <type>int</type> + <declname>sampleRate</declname> + </param> + <param> + <type>int</type> + <declname>numChannels</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="include/encoder/wav_writer.h" line="30" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <location file="include/decoder/bucket.h" line="7" column="1"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/synth_8h.xml b/doxygen/xml/synth_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..50767d2e8e10c9984fc9dc0df08469699ecb31db --- /dev/null +++ b/doxygen/xml/synth_8h.xml @@ -0,0 +1,65 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="synth_8h" kind="file" language="C++"> + <compoundname>synth.h</compoundname> + <includes refid="config_8h" local="yes">../config.h</includes> + <includedby refid="tone__synth_8h" local="yes">include/encoder/tone_synth.h</includedby> + <incdepgraph> + <node id="62"> + <label>include/encoder/synth.h</label> + <link refid="synth_8h"/> + <childnode refid="63" relation="include"> + </childnode> + </node> + <node id="64"> + <label>cstddef</label> + </node> + <node id="63"> + <label>../config.h</label> + <link refid="config_8h"/> + <childnode refid="64" relation="include"> + </childnode> + </node> + </incdepgraph> + <invincdepgraph> + <node id="66"> + <label>include/encoder/tone_synth.h</label> + <link refid="tone__synth_8h"/> + <childnode refid="67" relation="include"> + </childnode> + </node> + <node id="65"> + <label>include/encoder/synth.h</label> + <link refid="synth_8h"/> + <childnode refid="66" relation="include"> + </childnode> + </node> + <node id="67"> + <label>include/encoder/encoder.h</label> + <link refid="encoder_8h"/> + </node> + </invincdepgraph> + <innerclass refid="class_rew_1_1_synth" prot="public">Rew::Synth</innerclass> + <innernamespace refid="namespace_rew">Rew</innernamespace> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="preprocessor">#ifndef<sp/>REW_EMITTER_SYNTH_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_EMITTER_SYNTH_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"../config.h"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"><ref refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kindref="member">REW_NAMESPACE</ref><sp/>{</highlight></codeline> +<codeline lineno="10" refid="class_rew_1_1_synth" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="class_rew_1_1_synth" kindref="compound">Synth</ref><sp/>{</highlight></codeline> +<codeline lineno="11"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="12"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>operator()(</highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>dst)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>=<sp/>0;</highlight></codeline> +<codeline lineno="13"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline> +<codeline lineno="14"><highlight class="normal">}</highlight></codeline> +<codeline lineno="15"><highlight class="normal"></highlight></codeline> +<codeline lineno="16"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline> + </programlisting> + <location file="include/encoder/synth.h"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/tone__synth_8h.xml b/doxygen/xml/tone__synth_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..f8936d940d774d64319e86c1e26393cf4abf5a7e --- /dev/null +++ b/doxygen/xml/tone__synth_8h.xml @@ -0,0 +1,89 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="tone__synth_8h" kind="file" language="C++"> + <compoundname>tone_synth.h</compoundname> + <includes local="no">memory</includes> + <includes refid="synth_8h" local="yes">synth.h</includes> + <includedby refid="encoder_8h" local="yes">include/encoder/encoder.h</includedby> + <incdepgraph> + <node id="68"> + <label>include/encoder/tone_synth.h</label> + <link refid="tone__synth_8h"/> + <childnode refid="69" relation="include"> + </childnode> + <childnode refid="70" relation="include"> + </childnode> + </node> + <node id="70"> + <label>synth.h</label> + <link refid="synth_8h"/> + <childnode refid="71" relation="include"> + </childnode> + </node> + <node id="72"> + <label>cstddef</label> + </node> + <node id="71"> + <label>../config.h</label> + <link refid="config_8h"/> + <childnode refid="72" relation="include"> + </childnode> + </node> + <node id="69"> + <label>memory</label> + </node> + </incdepgraph> + <invincdepgraph> + <node id="73"> + <label>include/encoder/tone_synth.h</label> + <link refid="tone__synth_8h"/> + <childnode refid="74" relation="include"> + </childnode> + </node> + <node id="74"> + <label>include/encoder/encoder.h</label> + <link refid="encoder_8h"/> + </node> + </invincdepgraph> + <innerclass refid="class_rew_1_1_tone_synth" prot="public">Rew::ToneSynth</innerclass> + <innernamespace refid="namespace_rew">Rew</innernamespace> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="preprocessor">#ifndef<sp/>REW_EMITTER_TONE_SYNTH_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_EMITTER_TONE_SYNTH_H</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><memory></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="synth_8h" kindref="compound">synth.h</ref>"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"></highlight></codeline> +<codeline lineno="7"><highlight class="normal"><ref refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kindref="member">REW_NAMESPACE</ref><sp/>{</highlight></codeline> +<codeline lineno="11" refid="class_rew_1_1_tone_synth" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_synth" kindref="compound">Synth</ref><sp/>{</highlight></codeline> +<codeline lineno="12"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="13"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>frequency,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>sampleRate,<sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/>ms);</highlight></codeline> +<codeline lineno="14"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>(<ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>&&<sp/>other)<sp/>noexcept<sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="15"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="16"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>&<sp/>operator<sp/>=<sp/>(<ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>&&<sp/>other)<sp/>noexcept<sp/>=<sp/></highlight><highlight class="keywordflow">default</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="17"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>&<sp/>operator<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_tone_synth" kindref="compound">ToneSynth</ref>&<sp/>other)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="18"><highlight class="normal"></highlight></codeline> +<codeline lineno="19"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_synth_1ace1cefd258dc0d74251541a59f5b2ac6" kindref="member">operator()</ref>(</highlight><highlight class="keywordtype">float</highlight><highlight class="normal">*<sp/>dst)<sp/></highlight><highlight class="keyword">const<sp/>override</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="20" refid="class_rew_1_1_tone_synth_1afe306b4551ee6abf6383d0c9b75e1d17" refkind="member"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_tone_synth_1afe306b4551ee6abf6383d0c9b75e1d17" kindref="member">getSamplesPerBlock</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline> +<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>total;</highlight></codeline> +<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline> +<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>allocate(</highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>sampleRate,<sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal"><sp/>ms);</highlight></codeline> +<codeline lineno="25"><highlight class="normal"></highlight></codeline> +<codeline lineno="26"><highlight class="normal"></highlight></codeline> +<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>frequency;</highlight></codeline> +<codeline lineno="28"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>total;</highlight></codeline> +<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::unique_ptr<float[]><sp/>src;</highlight></codeline> +<codeline lineno="30"><highlight class="normal"></highlight></codeline> +<codeline lineno="31"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline> +<codeline lineno="32"><highlight class="normal">}</highlight></codeline> +<codeline lineno="33"><highlight class="normal"></highlight></codeline> +<codeline lineno="34"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline> + </programlisting> + <location file="include/encoder/tone_synth.h"/> + </compounddef> +</doxygen> diff --git a/doxygen/xml/wav__writer_8h.xml b/doxygen/xml/wav__writer_8h.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc20d980cd21e57570bd083341f9b2fa327f65b3 --- /dev/null +++ b/doxygen/xml/wav__writer_8h.xml @@ -0,0 +1,94 @@ +<?xml version='1.0' encoding='UTF-8' standalone='no'?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14"> + <compounddef id="wav__writer_8h" kind="file" language="C++"> + <compoundname>wav_writer.h</compoundname> + <includes local="no">fstream</includes> + <includes refid="audio__writer_8h" local="yes">audio_writer.h</includes> + <includedby refid="encoder_8h" local="yes">include/encoder/encoder.h</includedby> + <incdepgraph> + <node id="75"> + <label>include/encoder/wav_writer.h</label> + <link refid="wav__writer_8h"/> + <childnode refid="76" relation="include"> + </childnode> + <childnode refid="77" relation="include"> + </childnode> + </node> + <node id="77"> + <label>audio_writer.h</label> + <link refid="audio__writer_8h"/> + <childnode refid="76" relation="include"> + </childnode> + <childnode refid="78" relation="include"> + </childnode> + <childnode refid="79" relation="include"> + </childnode> + </node> + <node id="78"> + <label>string</label> + </node> + <node id="76"> + <label>fstream</label> + </node> + <node id="80"> + <label>cstddef</label> + </node> + <node id="79"> + <label>../config.h</label> + <link refid="config_8h"/> + <childnode refid="80" relation="include"> + </childnode> + </node> + </incdepgraph> + <invincdepgraph> + <node id="81"> + <label>include/encoder/wav_writer.h</label> + <link refid="wav__writer_8h"/> + <childnode refid="82" relation="include"> + </childnode> + </node> + <node id="82"> + <label>include/encoder/encoder.h</label> + <link refid="encoder_8h"/> + </node> + </invincdepgraph> + <innerclass refid="class_rew_1_1_wav_writer" prot="public">Rew::WavWriter</innerclass> + <innernamespace refid="namespace_rew">Rew</innernamespace> + <briefdescription> + </briefdescription> + <detaileddescription> + </detaileddescription> + <programlisting> +<codeline lineno="1"><highlight class="preprocessor">#ifndef<sp/>REW_WAV_SAVER</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>REW_WAV_SAVER</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="3"><highlight class="normal"></highlight></codeline> +<codeline lineno="4"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><fstream></highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="audio__writer_8h" kindref="compound">audio_writer.h</ref>"</highlight><highlight class="normal"></highlight></codeline> +<codeline lineno="6"><highlight class="normal"></highlight></codeline> +<codeline lineno="7"><highlight class="normal"><ref refid="config_8h_1a3f4d110f8706ad06ec910a8c7907163f" kindref="member">REW_NAMESPACE</ref><sp/>{</highlight></codeline> +<codeline lineno="12" refid="class_rew_1_1_wav_writer" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="class_rew_1_1_wav_writer" kindref="compound">WavWriter</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer" kindref="compound">AudioWriter</ref><sp/>{</highlight></codeline> +<codeline lineno="13"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="14"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="class_rew_1_1_wav_writer" kindref="compound">WavWriter</ref>();</highlight></codeline> +<codeline lineno="15"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>~<ref refid="class_rew_1_1_wav_writer" kindref="compound">WavWriter</ref>();</highlight></codeline> +<codeline lineno="16"><highlight class="normal"></highlight></codeline> +<codeline lineno="17"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1a619c520a49467c7dd6a6bee0d3ac399c" kindref="member">open</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string&<sp/>path,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>size,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>bitsPerSample,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>sampleRate,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>numChannels)<sp/></highlight><highlight class="keyword">override</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="18"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1a2d891dcd78323ef0ba32335041eb923c" kindref="member">close</ref>()<sp/></highlight><highlight class="keyword">override</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="19"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1a4ac109653fd08b3d51dd54930593b859" kindref="member">writeChunk</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>data,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal">*<sp/>bytesWritten)<sp/></highlight><highlight class="keyword">override</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="20"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1aa8b315cb43e7598aa1b1ea2ff0e036af" kindref="member">writeFooter</ref>()<sp/></highlight><highlight class="keyword">override</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1a5288a2b883fab9d06d8292c6a657c077" kindref="member">eof</ref>()<sp/></highlight><highlight class="keyword">const<sp/>override</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="class_rew_1_1_audio_writer_1ae3d33d0968b52793b545d46c7e8cdb55" kindref="member">getPos</ref>()<sp/></highlight><highlight class="keyword">const<sp/>override</highlight><highlight class="normal">;</highlight></codeline> +<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline> +<codeline lineno="24"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::fstream<sp/>output;</highlight></codeline> +<codeline lineno="25"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>eos;</highlight></codeline> +<codeline lineno="26"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>dataOffset;</highlight></codeline> +<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>dataWritten;</highlight></codeline> +<codeline lineno="28"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline> +<codeline lineno="29"><highlight class="normal"></highlight></codeline> +<codeline lineno="30"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="config_8h_1a8b2e2c4b30d14b145a2841f4bf083bf3" kindref="member">REW_API</ref><sp/><ref refid="namespace_rew_1ac7d4b7e2a8dee078194367ced9f823bc" kindref="member">saveWav</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::string&<sp/>path,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">unsigned</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>data,<sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>size,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>bitsPerSample,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>sampleRate,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>numChannels);</highlight></codeline> +<codeline lineno="31"><highlight class="normal">};</highlight></codeline> +<codeline lineno="32"><highlight class="normal"></highlight></codeline> +<codeline lineno="33"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline> + </programlisting> + <location file="include/encoder/wav_writer.h"/> + </compounddef> +</doxygen> diff --git a/include/decoder/bucket.h b/include/decoder/bucket.h new file mode 100644 index 0000000000000000000000000000000000000000..3d554c261e38ee905bdf4459c6310e42cec80aac --- /dev/null +++ b/include/decoder/bucket.h @@ -0,0 +1,75 @@ +#ifndef REW_BUCKET_H +#define REW_BUCKET_H + +#include "../config.h" +#include <vector> + +REW_NAMESPACE { + /*! + * @ingroup decoder + */ + template <typename T> + class REW_API Bucket { + public: + Bucket() = default; + Bucket(Bucket&& other) noexcept: vector(std::move(other.vector)) { + + } + Bucket(const Bucket& other) = delete; + virtual ~Bucket() = default; + void swap(Bucket& other) noexcept { + using std::swap; + swap(vector, other.vector); + } + Bucket& operator = (Bucket&& other) noexcept { + if (this != &other) { + swap(other); + } + return *this; + } + Bucket& operator = (const Bucket& other) = delete; + + void pushBack (const typename std::vector<T>::value_type& value) { + if (vector.capacity() <= vector.size()) { + vector.reserve(vector.capacity() + 64); + } + vector.push_back(value); + } + + size_t size() const { + return vector.size(); + } + + typename std::vector<T>::iterator begin() { + return vector.begin(); + } + + typename std::vector<T>::const_iterator begin() const { + return vector.begin(); + } + + typename std::vector<T>::iterator end() { + return vector.end(); + } + + typename std::vector<T>::const_iterator end() const { + return vector.end(); + } + + void clear() { + vector.clear(); + } + + typename std::vector<T>::value_type& operator[](size_t i) { + return vector[i]; + } + + const typename std::vector<T>::value_type& operator[](size_t i) const { + return vector[i]; + } + private: + std::vector<T> vector; + }; +} + +#endif diff --git a/include/decoder/byte_assembler.h b/include/decoder/byte_assembler.h new file mode 100644 index 0000000000000000000000000000000000000000..008f2603dcf4f5edf018273e3947261672318471 --- /dev/null +++ b/include/decoder/byte_assembler.h @@ -0,0 +1,29 @@ +#ifndef REW_BYTE_ASSEMBLER_H +#define REW_BYTE_ASSEMBLER_H + +#include "../config.h" +#include "bucket.h" +#include <functional> + +REW_NAMESPACE { + /*! + * @ingroup decoder + */ + class REW_API ByteAssembler { + public: + ByteAssembler(); + ByteAssembler(ByteAssembler&& other) noexcept; + ByteAssembler(const ByteAssembler& other) = delete; + void swap(ByteAssembler& other) noexcept; + ByteAssembler& operator = (ByteAssembler&& other) noexcept; + ByteAssembler& operator = (const ByteAssembler& other) = delete; + + void operator()(unsigned char magnitude, const std::function<void(unsigned char)>& callback); + private: + static size_t countValue(const unsigned char* begin, const unsigned char* end, unsigned char value); + static unsigned char toByte(const unsigned char* begin, const unsigned char* end); + Bucket<unsigned char> buffer; + }; +} + +#endif diff --git a/include/decoder/decoder.h b/include/decoder/decoder.h index bd429faa68394848af6737b438095994f8020783..9b0fb67e641ddf468acf51531f788c9888184e76 100644 --- a/include/decoder/decoder.h +++ b/include/decoder/decoder.h @@ -1,10 +1,22 @@ #ifndef REW_DECODER_H #define REW_DECODER_H -#include "goertzel.h" #include <utility> +#include <functional> +#include <memory> +#include "goertzel.h" +#include "byte_assembler.h" +#include "decompressor.h" + +/*! + * @defgroup decoder Decoder + * @brief The clientside part of the project for decoding the signal + */ REW_NAMESPACE { + /*! + * @ingroup decoder + */ class REW_API Decoder { public: Decoder( @@ -13,18 +25,21 @@ REW_NAMESPACE { double sampleLengthMs = 1.25); Decoder(Decoder&& other) noexcept; Decoder(const Decoder& other) = delete; + virtual ~Decoder() = default; void swap(Decoder& other) noexcept; Decoder& operator = (Decoder&& other) noexcept; Decoder& operator = (const Decoder& other) = delete; - void process(const float* samples, size_t length); + void operator()(const float* samples, size_t length, const std::function<void(unsigned char)>& callback); + void operator()(const float* samples, size_t length, const std::function<void(float, float)>& callback); float* getLowMagnitude(const float* samples, size_t length); float* getHighMagnitude(const float* samples, size_t length); private: size_t blockSize; Goertzel lowGoertzel; Goertzel highGoertzel; - double sampleLengthMs; + std::unique_ptr<float> buffer; + ByteAssembler byteAssembler; }; } diff --git a/include/decoder/decompressor.h b/include/decoder/decompressor.h new file mode 100644 index 0000000000000000000000000000000000000000..186fec24f44a9f39dc212897f548b6e58e64a916 --- /dev/null +++ b/include/decoder/decompressor.h @@ -0,0 +1,29 @@ +#ifndef REW_DECOMPRESSOR_H +#define REW_DECOMPRESSOR_H + +#include "../config.h" +#include <memory> +#include <vector> + +REW_NAMESPACE{ + /*! + * @ingroup decoder + */ + class REW_API Decompressor { + public: + Decompressor(); + virtual ~Decompressor(); + Decompressor(const Decompressor& other) = delete; + Decompressor(Decompressor&& other) noexcept; + void swap(Decompressor& other) noexcept; + Decompressor& operator = (const Decompressor& other) = delete; + Decompressor& operator = (Decompressor&& other) noexcept; + + std::vector<unsigned char> operator()(const unsigned char* data, size_t length) const; + private: + struct Impl; + std::unique_ptr<Impl> pimpl; + }; +} + +#endif diff --git a/include/decoder/goertzel.h b/include/decoder/goertzel.h index e200ab1f5711a5f8bfa025e32384bf29a2a04135..b27e5cc0d450b624b7497ec3395bce9910467220 100644 --- a/include/decoder/goertzel.h +++ b/include/decoder/goertzel.h @@ -4,6 +4,9 @@ #include "../config.h" REW_NAMESPACE{ + /*! + * @ingroup decoder + */ class REW_API Goertzel { public: Goertzel(size_t blockSize, float targetFrequency, float sampleRate); diff --git a/include/decoder/packet.h b/include/decoder/packet.h new file mode 100644 index 0000000000000000000000000000000000000000..7b363d972ec4aaa01d23b8dafbfbebed1387ed0b --- /dev/null +++ b/include/decoder/packet.h @@ -0,0 +1,22 @@ +#ifndef REW_PACKET_H +#define REW_PACKET_H + +#include "../config.h" + +REW_NAMESPACE{ + /*! + * @ingroup decoder + */ + class REW_API Packet { + public: + Packet(); + virtual ~Packet() = default; + Packet(const Packet& other) = delete; + Packet(Packet&& other) noexcept; + void swap(Packet& other) noexcept; + Packet& operator = (const Packet& other) = delete; + Packet& operator = (Packet&& other) noexcept; + }; +} + +#endif diff --git a/include/decoder/packet_assembler.h b/include/decoder/packet_assembler.h new file mode 100644 index 0000000000000000000000000000000000000000..b5262ee9afb7cc0992720aa9d4684080e2b3a4aa --- /dev/null +++ b/include/decoder/packet_assembler.h @@ -0,0 +1,27 @@ +#ifndef REW_PACKET_ASSEMBLER_H +#define REW_PACKET_ASSEMBLER_H + +#include "../config.h" +#include "bucket.h" +#include <functional> + +REW_NAMESPACE { + /*! + * @ingroup decoder + */ + class REW_API PacketAssembler { + public: + PacketAssembler(); + PacketAssembler(PacketAssembler&& other) noexcept; + PacketAssembler(const PacketAssembler& other) = delete; + void swap(PacketAssembler& other) noexcept; + PacketAssembler& operator = (PacketAssembler&& other) noexcept; + PacketAssembler& operator = (const PacketAssembler& other) = delete; + + void operator()(unsigned char magnitude, const std::function<void(unsigned char)>& callback); + private: + Bucket<unsigned char> buffer; + }; +} + +#endif diff --git a/include/emitter/emitter.h b/include/emitter/emitter.h deleted file mode 100644 index 906f2694aff849bb1edbc7823015a1687006f695..0000000000000000000000000000000000000000 --- a/include/emitter/emitter.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef REW_EMITTER_H -#define REW_EMITTER_H - -#include "../config.h" - -REW_NAMESPACE { - class REW_API Emitter { - public: - Emitter(); - Emitter(Emitter&& other) noexcept; - Emitter(const Emitter& other) = delete; - void swap(Emitter& other) noexcept; - Emitter& operator = (Emitter&& other) noexcept; - Emitter& operator = (const Emitter& other) = delete; - }; -} - -#endif diff --git a/include/encoder/audio_writer.h b/include/encoder/audio_writer.h index 6a20d0ec7abb140c02a2ff0fc460a2bffa2abf85..08379d87068a93dfa2d0050925d6211eaf417862 100644 --- a/include/encoder/audio_writer.h +++ b/include/encoder/audio_writer.h @@ -8,6 +8,7 @@ REW_NAMESPACE{ /*! * @brief Audio saver base class + * @ingroup encoder */ class REW_API AudioWriter { public: diff --git a/include/encoder/compressor.h b/include/encoder/compressor.h new file mode 100644 index 0000000000000000000000000000000000000000..34192343fd116940495fe484266ac8c00df7f831 --- /dev/null +++ b/include/encoder/compressor.h @@ -0,0 +1,29 @@ +#ifndef REW_COMPRESSOR_H +#define REW_COMPRESSOR_H + +#include "../config.h" +#include <vector> +#include <memory> + +REW_NAMESPACE{ + /*! + * @ingroup decoder + */ + class REW_API Compressor { + public: + Compressor(); + virtual ~Compressor(); + Compressor(const Compressor& other) = delete; + Compressor(Compressor&& other) noexcept; + void swap(Compressor& other) noexcept; + Compressor& operator = (const Compressor& other) = delete; + Compressor& operator = (Compressor&& other) noexcept; + + std::vector<unsigned char> operator()(const unsigned char* data, size_t length) const; + private: + struct Impl; + std::unique_ptr<Impl> pimpl; + }; +} + +#endif diff --git a/include/encoder/encoder.h b/include/encoder/encoder.h index fef78ac2e1cec32f91cae82cb30fee87ef14770e..5a0c0f8093f7f67489bab9e651d815052dc1813c 100644 --- a/include/encoder/encoder.h +++ b/include/encoder/encoder.h @@ -4,8 +4,17 @@ #include "../config.h" #include "tone_synth.h" #include "wav_writer.h" +#include "compressor.h" + +/*! + * @defgroup encoder Encoder + * @brief The server side part of the project for encoding the data into signal + */ REW_NAMESPACE { + /*! + * @ingroup encoder + */ class REW_API Encoder { public: Encoder( @@ -18,12 +27,13 @@ REW_NAMESPACE { Encoder& operator = (Encoder&& other) noexcept; Encoder& operator = (const Encoder& other) = delete; - float* operator()(const unsigned char* data, size_t length) const; + float* operator()(const unsigned char* data, size_t length, bool compress = false) const; size_t getNumOfSamples(size_t length) const; private: ToneSynth lowTone; ToneSynth highTone; std::unique_ptr<float[]> nullTone; + Compressor compressor; }; } diff --git a/include/encoder/synth.h b/include/encoder/synth.h index 9b0f491790bcff3c569a2116316dbb43fbe8c5e7..cf51db7d0e7b89c23d0da336e172f1af21755b32 100644 --- a/include/encoder/synth.h +++ b/include/encoder/synth.h @@ -4,6 +4,9 @@ #include "../config.h" REW_NAMESPACE { + /*! + * @ingroup encoder + */ class REW_API Synth { public: virtual size_t operator()(float* dst) const = 0; diff --git a/include/encoder/tone_synth.h b/include/encoder/tone_synth.h index 8556cbc00f6a152c69edf88500dbdebd068ebf4b..b5285604c948c3b6285cc8713751a2af57ea7f22 100644 --- a/include/encoder/tone_synth.h +++ b/include/encoder/tone_synth.h @@ -5,8 +5,12 @@ #include "synth.h" REW_NAMESPACE { + /*! + * @ingroup encoder + */ class REW_API ToneSynth: public Synth { public: + ToneSynth() = default; ToneSynth(size_t frequency, size_t sampleRate, double ms); ToneSynth(ToneSynth&& other) noexcept = default; ToneSynth(const ToneSynth& other) = delete; diff --git a/include/encoder/wav_writer.h b/include/encoder/wav_writer.h index 356693e30e8d030bcdac6b50429fc746fed4c6a9..77c2250d1a2145b56918c47eeaa1fec8a6064bdd 100644 --- a/include/encoder/wav_writer.h +++ b/include/encoder/wav_writer.h @@ -7,6 +7,7 @@ REW_NAMESPACE { /*! * @brief WAV file saver + * @ingroup encoder */ class REW_API WavWriter : public AudioWriter { public: diff --git a/include/server/server.h b/include/server/server.h deleted file mode 100644 index 6fbea734bc204a8b8e3216fed1e1ec0ad3ed6eab..0000000000000000000000000000000000000000 --- a/include/server/server.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef REW_SERVER_H -#define REW_SERVER_H - -#include "../config.h" -#include <thread> - -REW_NAMESPACE { - class REW_API Server { - public: - Server(); - Server(Server&& other) noexcept; - Server(const Server& other) = delete; - virtual ~Server(); - void swap(Server& other) noexcept; - Server& operator = (Server&& other) noexcept; - Server& operator = (const Server& other) = delete; - - private: - void threadFunc(); - std::thread threadRunner; - }; -} - -#endif diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt index 3a8f85cc4615d79581a5e84761a5e5102b36c4a3..86925eea25d6c1487b063fc98365be485dd162dc 100644 --- a/libs/CMakeLists.txt +++ b/libs/CMakeLists.txt @@ -12,13 +12,13 @@ ExternalProject_Add(ZLIB ) if(MSVC) - set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/zlib PARENT_SCOPE) + set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/zlib ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build PARENT_SCOPE) set(ZLIB_LIBRARY ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build/MinSizeRel/zlibstatic.lib PARENT_SCOPE) elseif(MINGW) - set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/zlib) + set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/zlib ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build PARENT_SCOPE) set(ZLIB_LIBRARY ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build/libzlibstatic.a PARENT_SCOPE) else() - set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/zlib PARENT_SCOPE) + set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/zlib ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build PARENT_SCOPE) set(ZLIB_LIBRARY ${CMAKE_BINARY_DIR}/libs/ZLIB-prefix/src/ZLIB-build/libz.a PARENT_SCOPE) endif() diff --git a/samples_to_graph.py b/samples_to_graph.py index 2c2e2ef80bf4ea6e69befbb95df6b3a7159c9db5..bbfaa88cb53b3524690fffb2890b4d08b09b5fdd 100644 --- a/samples_to_graph.py +++ b/samples_to_graph.py @@ -30,4 +30,5 @@ bin_to_plot('build/tests/convert_high_samples.png', ['build/tests/convert_high_s bin_to_plot('build/tests/convert_low_clamped_samples.png', ['build/tests/convert_low_clamped_samples.bin']) bin_to_plot('build/tests/convert_high_clamped_samples.png', ['build/tests/convert_high_clamped_samples.bin']) bin_to_plot('build/tests/convert_hl_samples.png', ['build/tests/convert_low_samples.bin', 'build/tests/convert_high_samples.bin']) +bin_to_plot('build/tests/decode_hl_samples.png', ['build/tests/decode_low_samples.bin', 'build/tests/decode_high_samples.bin']) bin_to_plot('build/tests/convert_hl_clamped_samples.png', ['build/tests/convert_low_clamped_samples.bin', 'build/tests/convert_high_clamped_samples.bin']) diff --git a/src/decoder/CMakeLists.txt b/src/decoder/CMakeLists.txt index fecb4191eb78e39b79c5af8891deeb4458324a8c..b1e2b57aabd75aa7f87c1785b9c9e40cfc317a53 100644 --- a/src/decoder/CMakeLists.txt +++ b/src/decoder/CMakeLists.txt @@ -18,9 +18,15 @@ set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER "com3001/libs") # Dependencies target_include_directories(${PROJECT_NAME} PRIVATE ${ZLIB_INCLUDE_DIR}) +target_include_directories(${PROJECT_NAME} PRIVATE ${ASIO_INCLUDE_DIR}) + target_link_libraries(${PROJECT_NAME} ${ZLIB_LIBRARY}) add_dependencies(${PROJECT_NAME} ZLIB) +if(WIN32) + target_link_libraries(${PROJECT_NAME} wsock32 ws2_32) +endif() + set(DECODER_PROJECT ${PROJECT_NAME} PARENT_SCOPE) set(DECODER_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include/decoder PARENT_SCOPE) diff --git a/src/decoder/byte_assembler.cpp b/src/decoder/byte_assembler.cpp new file mode 100644 index 0000000000000000000000000000000000000000..583179747ff8f367537e34a12f59c31acee029fa --- /dev/null +++ b/src/decoder/byte_assembler.cpp @@ -0,0 +1,78 @@ +#include "../../include/decoder/byte_assembler.h" +#include <iostream> + +///============================================================================= +Rew::ByteAssembler::ByteAssembler() { + +} + +///============================================================================= +Rew::ByteAssembler::ByteAssembler(ByteAssembler&& other) noexcept { + swap(other); +} + +///============================================================================= +void Rew::ByteAssembler::swap(ByteAssembler& other) noexcept { + using std::swap; + swap(buffer, other.buffer); +} + +///============================================================================= +Rew::ByteAssembler& Rew::ByteAssembler::operator = (ByteAssembler&& other) noexcept { + if (this != &other) { + swap(other); + } + return *this; +} + +///============================================================================= +void Rew::ByteAssembler::operator()(const unsigned char magnitude, const std::function<void(unsigned char)>& callback) { + if (magnitude == 0) { + //buffer.clear(); + + // Check last N samples if they all are equal to zero + constexpr size_t n = 10; + if (buffer.size() > n) { + //std::cout << "byte assembler has: " << buffer.size() << std::endl; + const auto count = countValue(&buffer[buffer.size() - n - 1], &buffer[buffer.size() - 1], 0); + //std::cout << "byte assembler last N count: " << count << std::endl; + if (count == 10) { + //std::cout << "assembling byte..." << std::endl; + callback(toByte(&buffer[0], &buffer[buffer.size() - 1])); + buffer.clear(); + return; + } else { + buffer.pushBack(magnitude); + } + } else { + return; + } + } else { + buffer.pushBack(magnitude); + } +} + +///============================================================================= +size_t Rew::ByteAssembler::countValue(const unsigned char* begin, + const unsigned char* end, const unsigned char value) { + + size_t ret = 0; + while(begin != end) { + if (*begin++ == value) ret++; + } + return ret; +} + +///============================================================================= +unsigned char Rew::ByteAssembler::toByte(const unsigned char* begin, const unsigned char* end) { + unsigned char ret = 0; + const auto eight = (end - begin) / 8.0; + for (size_t i = 0; i < 8; i++) { + const auto countLow = countValue(begin + size_t(eight * i), begin + size_t(eight * (i + 1)), 1); + const auto countHigh = countValue(begin + size_t(eight * i), begin + size_t(eight * (i + 1)), 2); + if (countHigh > countLow) { + ret |= 1 << i; + } + } + return ret; +} diff --git a/src/decoder/decoder.cpp b/src/decoder/decoder.cpp index d402cb7cd68a8d8b56ec8a6f456aa47a2ac1ed36..b59b98977c097a1ca29a576df0986fa9579c4ac6 100644 --- a/src/decoder/decoder.cpp +++ b/src/decoder/decoder.cpp @@ -5,17 +5,20 @@ ///============================================================================= Rew::Decoder::Decoder(const size_t lowToneFreq, const size_t highToneFreq, const double sampleLengthMs): -blockSize((48000.0 / 1000.0) * sampleLengthMs * 1.0f), -lowGoertzel(blockSize, lowToneFreq, 48000.0f), -highGoertzel(blockSize, highToneFreq, 48000.0f) { - +blockSize(static_cast<size_t>((48000.0 / 1000.0) * sampleLengthMs * 1.0)), +lowGoertzel(blockSize, static_cast<float>(lowToneFreq), 48000.0f), +highGoertzel(blockSize, static_cast<float>(highToneFreq), 48000.0f), +buffer(new float[blockSize]){ + std::fill(buffer.get(), buffer.get() + blockSize, 0.0f); } ///============================================================================= Rew::Decoder::Decoder(Decoder&& other) noexcept : blockSize(other.blockSize), lowGoertzel(std::move(other.lowGoertzel)), -highGoertzel(std::move(other.highGoertzel)){ +highGoertzel(std::move(other.highGoertzel)), +buffer(std::move(other.buffer)), +byteAssembler(std::move(other.byteAssembler)){ } ///============================================================================= @@ -24,6 +27,8 @@ void Rew::Decoder::swap(Decoder& other) noexcept { swap(blockSize, other.blockSize); swap(lowGoertzel, other.lowGoertzel); swap(highGoertzel, other.highGoertzel); + swap(buffer, other.buffer); + swap(byteAssembler, other.byteAssembler); } ///============================================================================= @@ -35,13 +40,36 @@ Rew::Decoder& Rew::Decoder::operator = (Decoder&& other) noexcept { } ///============================================================================= -void Rew::Decoder::process(const float* samples, const size_t length) { - //std::cout << std::fixed; - //std::cout << std::setprecision(2); +void Rew::Decoder::operator()(const float* samples, const size_t length, const std::function<void(unsigned char)>& callback) { + this->operator()(samples, length, [&](const float low, const float high) -> void { + unsigned char bit = 0; + if (low >= 1.0f) bit = 1; + if (high >= 1.0f) bit = 2; + byteAssembler.operator()(bit, callback); + }); +} - for (size_t i = 0; i < length - lowGoertzel.getBlockSize(); i+= 1) { - const auto magLow = lowGoertzel(samples + i); - const auto magHigh = highGoertzel(samples + i); +///============================================================================= +void Rew::Decoder::operator()(const float* samples, const size_t length, const std::function<void(float, float)>& callback) { + const auto dst = buffer.get(); + auto src = samples; + while(src != samples + length) { + // Move by one + for (size_t i = 0; i < blockSize - 1; i++) { + dst[i] = dst[i + 1]; + } + dst[blockSize - 1] = *src++; + + auto magLow = lowGoertzel(dst) / 5000000.0f; + auto magHigh = highGoertzel(dst) / 5000000.0f; + + if (magLow < 0.5f) magLow = 0.0f; + else magLow = 1.0f; + + if (magHigh < 0.5f) magHigh = 0.0f; + else magHigh = 1.0f; + + callback(magLow, magHigh); } } diff --git a/src/decoder/decompressor.cpp b/src/decoder/decompressor.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a3ed6d13dee5671ac23bd15b9387beee06854abd --- /dev/null +++ b/src/decoder/decompressor.cpp @@ -0,0 +1,68 @@ +#include "../../include/decoder/decompressor.h" +#include <iostream> +#include <zlib.h> + +///============================================================================= +struct Rew::Decompressor::Impl { + z_stream infstream; +}; + +///============================================================================= +Rew::Decompressor::Decompressor():pimpl(new Impl) { + pimpl->infstream.zalloc = Z_NULL; + pimpl->infstream.zfree = Z_NULL; + pimpl->infstream.opaque = Z_NULL; +} + +///============================================================================= +Rew::Decompressor::~Decompressor() { + +} + +///============================================================================= +Rew::Decompressor::Decompressor(Decompressor&& other) noexcept { + swap(other); +} + +///============================================================================= +void Rew::Decompressor::swap(Decompressor& other) noexcept { + using std::swap; + swap(pimpl, other.pimpl); +} + +///============================================================================= +Rew::Decompressor& Rew::Decompressor::operator = (Decompressor&& other) noexcept { + if (this != &other) { + swap(other); + } + return *this; +} + +///============================================================================= +std::vector<unsigned char> Rew::Decompressor::operator()(const unsigned char* data, const size_t length) const { + std::vector<unsigned char> ret; + ret.resize(32); + + pimpl->infstream.avail_in = length; // size of input + pimpl->infstream.next_in = reinterpret_cast<Bytef*>(const_cast<unsigned char*>(data)); // input char array + pimpl->infstream.avail_out = 32; // size of output + pimpl->infstream.next_out = reinterpret_cast<Bytef*>(&ret[0]); // output char array + + inflateInit(&pimpl->infstream); + + while(true) { + const auto status = inflate(&pimpl->infstream, Z_SYNC_FLUSH); + if (status == Z_STREAM_END) break; + + const auto oldSize = ret.size(); + ret.resize(ret.size() + 32); + pimpl->infstream.avail_out = 32; + pimpl->infstream.next_out = reinterpret_cast<Bytef*>(&ret[oldSize]); + } + + inflateEnd(&pimpl->infstream); + + const auto size = pimpl->infstream.next_out - &ret[0]; + ret.resize(size); + return ret; +} diff --git a/src/decoder/goertzel.cpp b/src/decoder/goertzel.cpp index 4f214254e80436865f5884529255d9810c6a783b..6c722a5d01ead384c706ba7d76ebc7ef661de54f 100644 --- a/src/decoder/goertzel.cpp +++ b/src/decoder/goertzel.cpp @@ -26,9 +26,9 @@ void Rew::Goertzel::init(const size_t blockSize, const float targetFrequency, co const auto floatN = static_cast<float>(blockSize); const auto k = static_cast<int>(0.5 + ((floatN * targetFrequency) / sampleRate)); const auto omega = (2.0 * M_PI * k) / floatN; - sine = std::sin(omega); - cosine = std::cos(omega); - coeff = 2.0 * cosine; + sine = static_cast<float>(std::sin(omega)); + cosine = static_cast<float>(std::cos(omega)); + coeff = static_cast<float>(2.0 * cosine); reset(); } diff --git a/src/decoder/packet.cpp b/src/decoder/packet.cpp new file mode 100644 index 0000000000000000000000000000000000000000..13ac0f287ed75113834e68499b130ae514bb95af --- /dev/null +++ b/src/decoder/packet.cpp @@ -0,0 +1,25 @@ +#include "../../include/decoder/packet.h" +#include <iostream> + +///============================================================================= +Rew::Packet::Packet() { + +} + +///============================================================================= +Rew::Packet::Packet(Packet&& other) noexcept { + swap(other); +} + +///============================================================================= +void Rew::Packet::swap(Packet& other) noexcept { + using std::swap; +} + +///============================================================================= +Rew::Packet& Rew::Packet::operator = (Packet&& other) noexcept { + if (this != &other) { + swap(other); + } + return *this; +} diff --git a/src/decoder/packet_assembler.cpp b/src/decoder/packet_assembler.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f5e371799c02e00d31403bca138c7a5e05938fb6 --- /dev/null +++ b/src/decoder/packet_assembler.cpp @@ -0,0 +1,31 @@ +#include "../../include/decoder/packet_assembler.h" +#include <iostream> + +///============================================================================= +Rew::PacketAssembler::PacketAssembler() { + +} + +///============================================================================= +Rew::PacketAssembler::PacketAssembler(PacketAssembler&& other) noexcept { + swap(other); +} + +///============================================================================= +void Rew::PacketAssembler::swap(PacketAssembler& other) noexcept { + using std::swap; + swap(buffer, other.buffer); +} + +///============================================================================= +Rew::PacketAssembler& Rew::PacketAssembler::operator = (PacketAssembler&& other) noexcept { + if (this != &other) { + swap(other); + } + return *this; +} + +///============================================================================= +void Rew::PacketAssembler::operator()(const unsigned char magnitude, const std::function<void(unsigned char)>& callback) { + +} diff --git a/src/emitter/CMakeLists.txt b/src/emitter/CMakeLists.txt deleted file mode 100644 index e56ec2a9c035ddc27703b8d3a48f7d169b8e54a1..0000000000000000000000000000000000000000 --- a/src/emitter/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -cmake_minimum_required(VERSION 3.1) -project (emitter) - -# Common properties -set_property(GLOBAL PROPERTY USE_FOLDERS ON) -set (CMAKE_CXX_STANDARD 11) -set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Select build type") -set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel") - -# Grab the files -file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/src/emitter/*.cpp) -file(GLOB HEADERS ${CMAKE_SOURCE_DIR}/include/emitter/*.h) - -# Create the library -add_definitions(-DREW_EXPORTS) -add_library(${PROJECT_NAME} SHARED ${SOURCES} ${HEADERS}) -set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER "com3001/libs") - -set(EMITTER_PROJECT ${PROJECT_NAME} PARENT_SCOPE) -set(EMITTER_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include/emitter PARENT_SCOPE) - -# Add install step -if(BUILD_INSTALL) - install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/emitter DESTINATION include/emitter) - - if(MSVC) - install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL) - endif() - install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin COMPONENT library) -endif() - diff --git a/src/emitter/emitter.cpp b/src/emitter/emitter.cpp deleted file mode 100644 index 5f0d7964fc218a30437c3a542d8b8b87ecb06cff..0000000000000000000000000000000000000000 --- a/src/emitter/emitter.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "../../include/emitter/emitter.h" -#include <algorithm> - -Rew::Emitter::Emitter() { - -} - -Rew::Emitter::Emitter(Emitter&& other) noexcept { - swap(other); -} - -void Rew::Emitter::swap(Emitter& other) noexcept { - using std::swap; -} - -Rew::Emitter& Rew::Emitter::operator = (Emitter&& other) noexcept { - if (this != &other) { - swap(other); - } - return *this; -} diff --git a/src/encoder/compressor.cpp b/src/encoder/compressor.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e2f33a4386e4b4f4db3f4d14096b5180bb3614da --- /dev/null +++ b/src/encoder/compressor.cpp @@ -0,0 +1,69 @@ +#include "../../include/encoder/compressor.h" +#include <zlib.h> +#include <memory> +#include <iostream> + +///============================================================================= +struct Rew::Compressor::Impl { + z_stream defstream; +}; + +///============================================================================= +Rew::Compressor::Compressor():pimpl(new Impl) { + pimpl->defstream.zalloc = Z_NULL; + pimpl->defstream.zfree = Z_NULL; + pimpl->defstream.opaque = Z_NULL; +} + +///============================================================================= +Rew::Compressor::~Compressor() { + +} + +///============================================================================= +Rew::Compressor::Compressor(Compressor&& other) noexcept { + swap(other); +} + +///============================================================================= +void Rew::Compressor::swap(Compressor& other) noexcept { + using std::swap; + swap(pimpl, other.pimpl); +} + +///============================================================================= +Rew::Compressor& Rew::Compressor::operator = (Compressor&& other) noexcept { + if (this != &other) { + swap(other); + } + return *this; +} + +///============================================================================= +std::vector<unsigned char> Rew::Compressor::operator()(const unsigned char* data, const size_t length) const { + std::vector<unsigned char> ret; + ret.resize(32); + + pimpl->defstream.avail_in = length; + pimpl->defstream.next_in = static_cast<Bytef*>(const_cast<unsigned char*>(data)); + pimpl->defstream.avail_out = 32; // size of output + pimpl->defstream.next_out = static_cast<Bytef*>(&ret[0]); // output char array + + deflateInit(&pimpl->defstream, Z_BEST_COMPRESSION); + + while (true) { + const auto status = deflate(&pimpl->defstream, Z_FINISH); + if (status == Z_STREAM_END) break; + + const auto oldSize = ret.size(); + ret.resize(ret.size() + 32); + pimpl->defstream.avail_out = 32; + pimpl->defstream.next_out = reinterpret_cast<Bytef*>(&ret[oldSize]); + } + + deflateEnd(&pimpl->defstream); + + const auto size = pimpl->defstream.next_out - &ret[0]; + ret.resize(size); + return ret; +} diff --git a/src/encoder/encoder.cpp b/src/encoder/encoder.cpp index 5a55e380da0d8360deb269e325a0d36865b1bb23..786f1320e4a42cf78e27c1e6d0375a44da6fa3d0 100644 --- a/src/encoder/encoder.cpp +++ b/src/encoder/encoder.cpp @@ -15,13 +15,17 @@ nullTone(new float[highTone.getSamplesPerBlock()]) { } ///============================================================================= -Rew::Encoder::Encoder(Encoder&& other) noexcept :lowTone(std::move(other.lowTone)), highTone(std::move(other.highTone)) { +Rew::Encoder::Encoder(Encoder&& other) noexcept { + swap(other); } ///============================================================================= void Rew::Encoder::swap(Encoder& other) noexcept { using std::swap; + swap(lowTone, other.lowTone); + swap(highTone, other.highTone); swap(nullTone, other.nullTone); + swap(compressor, other.compressor); } ///============================================================================= @@ -34,11 +38,19 @@ Rew::Encoder& Rew::Encoder::operator = (Encoder&& other) noexcept { ///============================================================================= size_t Rew::Encoder::getNumOfSamples(const size_t length) const { - return (length * 8 + 1) * highTone.getSamplesPerBlock() + (length - 1) * highTone.getSamplesPerBlock(); + return (length * 8 + 1) * highTone.getSamplesPerBlock() + (length) * highTone.getSamplesPerBlock(); } ///============================================================================= -float* Rew::Encoder::operator()(const unsigned char* data, const size_t length) const { +float* Rew::Encoder::operator()(const unsigned char* data, size_t length, const bool compress) const { + std::vector<unsigned char> deflated; + if (compress) { + deflated = compressor(data, length); + std::cout << "compressed from: " << length << " to: " << deflated.size() << std::endl; + data = &deflated[0]; + length = deflated.size(); + } + const auto total = getNumOfSamples(length); std::unique_ptr<float[]> samples(new float[total]); std::fill(samples.get(), samples.get() + total, 0.0f); @@ -61,6 +73,8 @@ float* Rew::Encoder::operator()(const unsigned char* data, const size_t length) dst += highTone.getSamplesPerBlock(); } + std::memcpy(dst, nullTone.get(), sizeof(float) * lowTone.getSamplesPerBlock()); + const auto ret = samples.get(); samples.release(); return ret; diff --git a/src/encoder/tone_synth.cpp b/src/encoder/tone_synth.cpp index 8fcb6d17380a9c290b56a03be7b7aeb35bfe771d..7e64c3a40e32193428c48c2da4cbf75b0d806c0d 100644 --- a/src/encoder/tone_synth.cpp +++ b/src/encoder/tone_synth.cpp @@ -17,7 +17,7 @@ void Rew::ToneSynth::allocate(const size_t sampleRate, const double ms) { const auto cycleMs = (1.0 / static_cast<double>(frequency)) * 1000.0; const auto cycleNum = ms / cycleMs; const auto cycleSamples = sampleRate / frequency; - total = static_cast<size_t>(cycleNum * cycleMs * samplesPerMs); + total = static_cast<size_t>(std::ceil(cycleNum * cycleMs * samplesPerMs)); src.reset(new float[total]); const auto samples = src.get(); @@ -28,10 +28,6 @@ void Rew::ToneSynth::allocate(const size_t sampleRate, const double ms) { samples[i] = static_cast<float>(std::sin(d * DEG_TO_RAD)); d += step; } - -#ifdef _DEBUG - std::cout << "(Rew::ToneSynth::allocate) samplesPerMs: " << samplesPerMs << " cycleMs: " << cycleMs << " cycleSamples: " << cycleSamples << " cycleNum: " << cycleNum << " total: " << total << std::endl; -#endif } ///============================================================================= diff --git a/src/encoder/wav_writer.cpp b/src/encoder/wav_writer.cpp index 4a4e89ab2c2e03013ea050cfdadb1042d1f03347..897467321f76faa5929de789ea8b5768504f9beb 100644 --- a/src/encoder/wav_writer.cpp +++ b/src/encoder/wav_writer.cpp @@ -69,7 +69,7 @@ bool Rew::WavWriter::open(const std::string& path, const size_t size, this->sampleRate = sampleRate; this->chunkSize = 4096 * numChannels * (bitsPerSample / 8); - dataOffset = output.tellg(); + dataOffset = static_cast<size_t>(output.tellg()); loaded = true; return true; diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt deleted file mode 100644 index a8a5672c5ef48cd78f3794f93fd8732dd4ab4715..0000000000000000000000000000000000000000 --- a/src/server/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -cmake_minimum_required(VERSION 3.1) -project (server) - -# Common properties -set_property(GLOBAL PROPERTY USE_FOLDERS ON) -set (CMAKE_CXX_STANDARD 11) -set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Select build type") -set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel") - -# Grab the files -file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/src/server/*.cpp) -file(GLOB HEADERS ${CMAKE_SOURCE_DIR}/include/server/*.h) - -# Create the library -add_definitions(-DREW_EXPORTS) -add_library(${PROJECT_NAME} SHARED ${SOURCES} ${HEADERS}) -set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER "com3001/libs") - -# Dependencies -target_include_directories(${PROJECT_NAME} PRIVATE ${ASIO_INCLUDE_DIR}) - -if(WIN32) - target_link_libraries(${PROJECT_NAME} wsock32 ws2_32) -endif() - -set(SERVER_PROJECT ${PROJECT_NAME} PARENT_SCOPE) -set(SERVER_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include/server PARENT_SCOPE) - -# Add install step -if(BUILD_INSTALL) - install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/server DESTINATION include/server) - - if(MSVC) - install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL) - endif() - install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin COMPONENT library) -endif() diff --git a/src/server/server.cpp b/src/server/server.cpp deleted file mode 100644 index 621139f62d1018ef8cd52a970bb4ebbc2bb0bd53..0000000000000000000000000000000000000000 --- a/src/server/server.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "../../include/server/server.h" -#include <algorithm> -#define ASIO_STANDALONE -#define _WIN32_WINNT 0x0601 -#include <asio.hpp> - -Rew::Server::Server() { - threadRunner = std::thread(&Server::threadFunc, this); -} - -Rew::Server::Server(Server&& other) noexcept { - swap(other); -} - -Rew::Server::~Server() { - threadRunner.join(); -} - -void Rew::Server::swap(Server& other) noexcept { - using std::swap; - swap(threadRunner, other.threadRunner); -} - -Rew::Server& Rew::Server::operator = (Server&& other) noexcept { - if (this != &other) { - swap(other); - } - return *this; -} - -void Rew::Server::threadFunc() { - -} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7195f7c60cdbb12a9106f8536ebf183062a91d34..199aa0ce93b5d1667eb76cb91c1af9a541984455 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -7,9 +7,9 @@ foreach(FILENAME ${TESTS}) get_filename_component(FILENAME_NO_EXT ${FILENAME} NAME_WE) set(TEST_PROJ test_${FILENAME_NO_EXT}) add_executable(${TEST_PROJ} ${FILENAME}) - add_dependencies(${TEST_PROJ} ${DECODER_PROJECT} ${EMITTER_PROJECT} ${ENCODER_PROJECT} ${SERVER_PROJECT}) - target_link_libraries(${TEST_PROJ} ${DECODER_PROJECT} ${EMITTER_PROJECT} ${ENCODER_PROJECT} ${SERVER_PROJECT}) - target_include_directories(${TEST_PROJ} PRIVATE ${DECODER_INCLUDE_DIR} ${EMITTER_INCLUDE_DIR} ${ENCODER_INCLUDE_DIR} ${SERVER_INCLUDE_DIR}) + add_dependencies(${TEST_PROJ} ${DECODER_PROJECT} ${ENCODER_PROJECT}) + target_link_libraries(${TEST_PROJ} ${DECODER_PROJECT} ${ENCODER_PROJECT}) + target_include_directories(${TEST_PROJ} PRIVATE ${DECODER_INCLUDE_DIR} ${ENCODER_INCLUDE_DIR}) target_include_directories(${TEST_PROJ} PRIVATE ${CATCH2_INCLUDE_DIR}) target_link_libraries(${TEST_PROJ} ${CMAKE_THREAD_LIBS_INIT}) @@ -19,13 +19,4 @@ foreach(FILENAME ${TESTS}) set_property(TARGET ${TEST_PROJ} PROPERTY FOLDER "com3001/tests") add_test(NAME ${TEST_PROJ} COMMAND ${TEST_PROJ}) - - # Copy DLL files - foreach(file_i $<TARGET_FILE:${DECODER_PROJECT}> $<TARGET_FILE:${EMITTER_PROJECT}> $<TARGET_FILE:${ENCODER_PROJECT}> $<TARGET_FILE:${SERVER_PROJECT}>) - add_custom_command( - TARGET ${TEST_PROJ} - POST_BUILD - COMMAND ${CMAKE_COMMAND} - -E copy ${file_i} $<TARGET_FILE_DIR:${TEST_PROJ}>) - endforeach(file_i) endforeach(FILENAME) diff --git a/tests/decode.cpp b/tests/decode.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1348097c890c478357973f68a00123af0953e657 --- /dev/null +++ b/tests/decode.cpp @@ -0,0 +1,156 @@ +#define CATCH_CONFIG_MAIN +#include "catch.hpp" +#include <decoder.h> +#include <encoder.h> +#include <map> +#include <array> + +#define DUMP_F32(path, data, length) \ + { \ + std::fstream out(path, std::ios::out | std::ios::binary | std::ios::trunc); \ + out.write(reinterpret_cast<const char*>(data.get()), length * sizeof(float)); \ + } + +static const std::map<size_t, std::function<bool(float)>> expectedMagnitude01 = { + {1400, [](float v) -> bool {return v < 0.1f; }}, + {1600, [](float v) -> bool {return v < 0.1f; }}, + {1800, [](float v) -> bool {return v < 0.1f; }}, + {2000, [](float v) -> bool {return v < 0.1f; }}, + {2000, [](float v) -> bool {return v < 0.1f; }}, + {2200, [](float v) -> bool {return v < 0.1f; }}, + {2400, [](float v) -> bool {return v > 1.0f; }}, + {2600, [](float v) -> bool {return v < 0.1f; }}, + {2800, [](float v) -> bool {return v < 0.1f; }}, + {3000, [](float v) -> bool {return v < 0.1f; }}, + {3200, [](float v) -> bool {return v < 0.1f; }}, + {3400, [](float v) -> bool {return v < 0.1f; }}, +}; + +static const std::array<int, 10> frequencies01 = { + 1000, 1200, 1800, 2400, 4800, 5000, 5200, 6200, 8000, 9600 +}; + +static bool compare(const unsigned char* a, const unsigned char* b, const size_t length) { + for (size_t i = 0; i < length; i++) { + if (a[i] != b[i]) return false; + } + return true; +} + +REW_NAMESPACE { + TEST_CASE("Decoder Test - API") { + auto decoder = std::move(Decoder()); + } + + TEST_CASE("Test Goertzel #1") { + auto synth = ToneSynth(2400, 48000, 100); + + std::unique_ptr<float[]> samples(new float[4800]); + (void)synth(samples.get()); + + for (const auto& pair : expectedMagnitude01) { + auto goertzel = Goertzel(480, static_cast<float>(pair.first), 48000); + const auto mag = goertzel(samples.get()); + std::cout << "target: " << pair.first << " source: " << 2400 << " magnitude: " << mag << std::endl; + REQUIRE(pair.second(mag)); + } + } + + TEST_CASE("Test Goertzel #2") { + for (const auto& i : frequencies01) { + auto synth = ToneSynth(i, 48000, 100); + + std::unique_ptr<float[]> samples(new float[4800]); + (void)synth(samples.get()); + + + auto goertzel = Goertzel(480, static_cast<float>(i), 48000); + const auto mag = goertzel(samples.get()); + CHECK(mag >= 1.0f); + } + } + + TEST_CASE("Test decoding with simple data") { + static const unsigned char data[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!'}; + const auto encoder = Encoder(); + const std::unique_ptr<float[]> samples(encoder(data, sizeof(data))); + const auto total = encoder.getNumOfSamples(sizeof(data)); + + auto decoder = Decoder(); + std::unique_ptr<float[]> lowSamplesArr(new float[total]); + std::unique_ptr<float[]> highSamplesArr(new float[total]); + auto lowSamples = lowSamplesArr.get(); + auto highSamples = highSamplesArr.get(); + + decoder(samples.get(), total, [&](const float low, const float high) { + *lowSamples++ = low; + *highSamples++ = high; + }); + + DUMP_F32("decode_low_samples.bin", lowSamplesArr, total); + DUMP_F32("decode_high_samples.bin", highSamplesArr, total); + } + + TEST_CASE("Test decoding and assemble bytes") { + static const unsigned char data[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!'}; + const auto encoder = Encoder(); + const std::unique_ptr<float[]> samples(encoder(data, sizeof(data))); + const auto total = encoder.getNumOfSamples(sizeof(data)); + + auto decoder = Decoder(); + + std::vector<unsigned char> assembled; + + decoder(samples.get(), total, [&](const unsigned char byte) { + assembled.push_back(byte); + }); + + REQUIRE(assembled.size() == sizeof(data)); + REQUIRE(compare(&data[0], &assembled[0], sizeof(data))); + } + + TEST_CASE("Test decoding and assemble bytes deflated") { + static const unsigned char data[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!'}; + + const auto compressor = Compressor(); + const auto deflated = compressor(&data[0], sizeof(data)); + + const auto encoder = Encoder(); + const std::unique_ptr<float[]> samples(encoder(&deflated[0], deflated.size())); + const auto total = encoder.getNumOfSamples(deflated.size()); + + auto decoder = Decoder(); + + std::vector<unsigned char> assembled; + decoder(samples.get(), total, [&](const unsigned char byte) { + assembled.push_back(byte); + }); + + REQUIRE(assembled.size() == deflated.size()); + REQUIRE(compare(&deflated[0], &assembled[0], deflated.size())); + + const auto decompressor = Decompressor(); + const auto inflated = decompressor(&assembled[0], assembled.size()); + + REQUIRE(inflated.size() == sizeof(data)); + REQUIRE(compare(&inflated[0], &data[0], sizeof(data))); + } + + TEST_CASE("Test decoding with different frequencies and sample lengths") { + static const unsigned char data[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!'}; + + for (auto lowToneFreq = 1000; lowToneFreq < 21000; lowToneFreq += 500) { + for (auto highToneFreq = 1000; highToneFreq < 21000; highToneFreq += 500) { + if (lowToneFreq == highToneFreq) continue; + + for (auto sampleLengthMs = 1; sampleLengthMs < 200; sampleLengthMs ++) { + /*auto encoder = Encoder(lowToneFreq, highToneFreq, sampleLengthMs); + const std::unique_ptr<float[]> samples(encoder(data, sizeof(data))); + + auto decoder = Decoder(lowToneFreq, highToneFreq, sampleLengthMs);*/ + + } + } + } + } +}; diff --git a/tests/decoder.cpp b/tests/decoder.cpp deleted file mode 100644 index 337fdb3f028262314563221e4776142edfb011b4..0000000000000000000000000000000000000000 --- a/tests/decoder.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#define CATCH_CONFIG_MAIN -#include "catch.hpp" -#include <decoder.h> -#include <emitter.h> -#include <encoder.h> -#include <server.h> -#include <map> -#include <array> - -static const std::map<size_t, std::function<bool(float)>> expectedMagnitude01 = { - {1400, [](float v) -> bool {return v < 0.1f; }}, - {1600, [](float v) -> bool {return v < 0.1f; }}, - {1800, [](float v) -> bool {return v < 0.1f; }}, - {2000, [](float v) -> bool {return v < 0.1f; }}, - {2000, [](float v) -> bool {return v < 0.1f; }}, - {2200, [](float v) -> bool {return v < 0.1f; }}, - {2400, [](float v) -> bool {return v > 1.0f; }}, - {2600, [](float v) -> bool {return v < 0.1f; }}, - {2800, [](float v) -> bool {return v < 0.1f; }}, - {3000, [](float v) -> bool {return v < 0.1f; }}, - {3200, [](float v) -> bool {return v < 0.1f; }}, - {3400, [](float v) -> bool {return v < 0.1f; }}, -}; - -static const std::array<int, 10> frequencies01 = { - 1000, 1200, 1800, 2400, 4800, 5000, 5200, 6200, 8000, 9600 -}; - -REW_NAMESPACE { - TEST_CASE("Decoder Test - API") { - auto decoder = std::move(Decoder()); - } - - TEST_CASE("Test Goertzel #1") { - auto synth = ToneSynth(2400, 48000, 100); - - std::unique_ptr<float[]> samples(new float[4800]); - (void)synth(samples.get()); - - for (const auto& pair : expectedMagnitude01) { - auto goertzel = Goertzel(480, pair.first, 48000); - const auto mag = goertzel(samples.get()); - std::cout << "target: " << pair.first << " source: " << 2400 << " magnitude: " << mag << std::endl; - REQUIRE(pair.second(mag)); - } - } - - TEST_CASE("Test Goertzel #2") { - for (const auto& i : frequencies01) { - auto synth = ToneSynth(i, 48000, 100); - - std::unique_ptr<float[]> samples(new float[4800]); - (void)synth(samples.get()); - - - auto goertzel = Goertzel(480, i, 48000); - const auto mag = goertzel(samples.get()); - std::cout << "target: " << i << " source: " << i << " magnitude: " << mag << std::endl; - CHECK(mag >= 1.0f); - } - } -}; diff --git a/tests/deflate.cpp b/tests/deflate.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2a0158f1e464167c6e77b55c2bbb049d5ad39abb --- /dev/null +++ b/tests/deflate.cpp @@ -0,0 +1,41 @@ +#define CATCH_CONFIG_MAIN +#include "catch.hpp" +#include <decoder.h> +#include <encoder.h> +#include "decompressor.h" + +static bool compare(const unsigned char* a, const unsigned char* b, const size_t length) { + for (size_t i = 0; i < length; i++) { + if (a[i] != b[i]) return false; + } + return true; +} + +REW_NAMESPACE{ + TEST_CASE("Deflate and inflate") { + unsigned char data[256]; + for (int i = 0; i < 256; i++) data[i] = i; + + const auto compressor = Compressor(); + const auto decompressor = Decompressor(); + + const auto deflated = compressor(data, sizeof(data)); + const auto inflated = decompressor(&deflated[0], deflated.size()); + + REQUIRE(inflated.size() == sizeof(data)); + REQUIRE(compare(&data[0], &inflated[0], sizeof(data))); + } + + TEST_CASE("Deflate and inflate 2") { + static const unsigned char data[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!'}; + + const auto compressor = Compressor(); + const auto decompressor = Decompressor(); + + const auto deflated = compressor(data, sizeof(data)); + const auto inflated = decompressor(&deflated[0], deflated.size()); + + REQUIRE(inflated.size() == sizeof(data)); + REQUIRE(compare(&data[0], &inflated[0], sizeof(data))); + } +} diff --git a/tests/emitter.cpp b/tests/emitter.cpp deleted file mode 100644 index 709b968603293965c522fc98520311c5c3e1af39..0000000000000000000000000000000000000000 --- a/tests/emitter.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#define CATCH_CONFIG_MAIN -#include "catch.hpp" -#include <decoder.h> -#include <emitter.h> -#include <encoder.h> -#include <server.h> - -REW_NAMESPACE { - TEST_CASE("Emitter Test - API") { - auto emitter = std::move(Emitter()); - } -}; - diff --git a/tests/server.cpp b/tests/server.cpp deleted file mode 100644 index fc81d571e4399d13d8b4b3e0310e1ef29e5cfd22..0000000000000000000000000000000000000000 --- a/tests/server.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#define CATCH_CONFIG_MAIN -#include "catch.hpp" -#include <decoder.h> -#include <emitter.h> -#include <encoder.h> -#include <server.h> - -REW_NAMESPACE { - TEST_CASE("Server Test - API") { - auto server = Server(); - } -}; diff --git a/tests/encoder.cpp b/tests/synth.cpp similarity index 93% rename from tests/encoder.cpp rename to tests/synth.cpp index 6efe2d26a7877267ed5daca1b5cfb39f1ac8ff50..7f3432087a6c973665639662298c38b94b96e356 100644 --- a/tests/encoder.cpp +++ b/tests/synth.cpp @@ -1,9 +1,7 @@ #define CATCH_CONFIG_MAIN #include "catch.hpp" #include <decoder.h> -#include <emitter.h> #include <encoder.h> -#include <server.h> #define DUMP_F32(path, data, length) \ { \ @@ -12,10 +10,6 @@ } REW_NAMESPACE { - TEST_CASE("Encoder Test - API") { - auto encoder = std::move(Encoder()); - } - TEST_CASE("Encoder Test - Tone Synth") { auto synth = std::move(ToneSynth(4400, 48000, 100));