%% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[a4paper,10pt,english]{sphinxmanual}
\ifdefined\pdfpxdimen
   \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen
\fi \sphinxpxdimen=.75bp\relax

\PassOptionsToPackage{warn}{textcomp}
\usepackage[utf8]{inputenc}
\ifdefined\DeclareUnicodeCharacter
 \ifdefined\DeclareUnicodeCharacterAsOptional
  \DeclareUnicodeCharacter{"00A0}{\nobreakspace}
  \DeclareUnicodeCharacter{"2500}{\sphinxunichar{2500}}
  \DeclareUnicodeCharacter{"2502}{\sphinxunichar{2502}}
  \DeclareUnicodeCharacter{"2514}{\sphinxunichar{2514}}
  \DeclareUnicodeCharacter{"251C}{\sphinxunichar{251C}}
  \DeclareUnicodeCharacter{"2572}{\textbackslash}
 \else
  \DeclareUnicodeCharacter{00A0}{\nobreakspace}
  \DeclareUnicodeCharacter{2500}{\sphinxunichar{2500}}
  \DeclareUnicodeCharacter{2502}{\sphinxunichar{2502}}
  \DeclareUnicodeCharacter{2514}{\sphinxunichar{2514}}
  \DeclareUnicodeCharacter{251C}{\sphinxunichar{251C}}
  \DeclareUnicodeCharacter{2572}{\textbackslash}
 \fi
\fi
\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amstext}
\usepackage{babel}
\usepackage{times}
\usepackage[Bjarne]{fncychap}
\usepackage{sphinx}

\usepackage{geometry}

% Include hyperref last.
\usepackage{hyperref}
% Fix anchor placement for figures with captions.
\usepackage{hypcap}% it must be loaded after hyperref.
% Set up styles of URL: it should be placed after hyperref.
\urlstyle{same}

\addto\captionsenglish{\renewcommand{\figurename}{Fig.}}
\addto\captionsenglish{\renewcommand{\tablename}{Table}}
\addto\captionsenglish{\renewcommand{\literalblockname}{Listing}}

\addto\captionsenglish{\renewcommand{\literalblockcontinuedname}{continued from previous page}}
\addto\captionsenglish{\renewcommand{\literalblockcontinuesname}{continues on next page}}

\addto\extrasenglish{\def\pageautorefname{page}}

\setcounter{tocdepth}{0}



\title{VISR Code documentation}
\date{Nov 16, 2018}
\release{}
\author{The S3A project team}
\newcommand{\sphinxlogo}{\vbox{}}
\renewcommand{\releasename}{}
\makeindex

\begin{document}

\maketitle
\sphinxtableofcontents
\phantomsection\label{\detokenize{index::doc}}



\chapter{About}
\label{\detokenize{about:front-matter}}\label{\detokenize{about:about}}\label{\detokenize{about::doc}}

\section{About VISR}
\label{\detokenize{about:about-visr}}

\section{About this document}
\label{\detokenize{about:about-this-document}}
This is the code reference document for the VISR (Versatile Interactive Scene Renderer) software framework.
It describes the software architecture and modules, and provides the API documentation for the C++ and Python interfaces.
In addition, it details the software development process, including obtaining and compiling the source code.


\chapter{Development and Contribution}
\label{\detokenize{index:development-and-contribution}}

\section{Source Code}
\label{\detokenize{source-code:source-code}}\label{\detokenize{source-code::doc}}
Depending on the operating system you have, the following startup guides will be useful for creating a successful build and/or using VISR for your own development. In a new terminal window, run the following:

\sphinxcode{\sphinxupquote{git clone gitlab@gitlab.eps.surrey.ac.uk:s3a/VISR.git}}


\subsection{osx}
\label{\detokenize{source-code:osx}}
The choice of IDE for MacOS X is Xcode. You can see the full guide on developing with visr here at the
.. .. \DUrole{xref,std,std-ref}{MacOS Setup Guide}.


\subsection{linux}
\label{\detokenize{source-code:linux}}
To develop and contribute using VISR with a Linux-based IDE, have a look at the
.. .. \DUrole{xref,std,std-ref}{Linux Setup Guide}.


\subsection{windows}
\label{\detokenize{source-code:windows}}
To develop and contribute using VISR with Windows and Visual Studio, have a look at the
.. .. \DUrole{xref,std,std-ref}{Windows Setup Guide}.


\subsection{Raspberry Pi}
\label{\detokenize{source-code:raspberry-pi}}

\section{VISR Git Workflow}
\label{\detokenize{git-workflow:visr-git-workflow}}\label{\detokenize{git-workflow::doc}}
This page documents the version control workflow followed by the VISR community when dealing with the development of VISR. If you want to contribute, and/or already have code or bug fixes you would like to see in the official repo, please follow these guidelines to make the life of the devs easier, minimize time needed for review, and ensure speedy and efficient incorporation of your improvements into VISR.


\subsection{VISR Git Workflow}
\label{\detokenize{git-workflow:id1}}
The git workflow for openFrameworks is based on this article detailing a very good branching model. Read the article first, it’s quite complete and nicely presented, no need to replicate everything here.

\sphinxurl{https://nvie.com/posts/a-successful-git-branching-model/}


\subsection{Continuous Integration}
\label{\detokenize{git-workflow:continuous-integration}}
All contributions that are merged together in the remote are tested before they are pushed. This is to ensure what you contribute works and is tested on all operating systems. Sometimes, before you push, you might forget to compile or test you code (we all make these mistakes sometimes), so the cvssp-servers at Surrey University will run certain jobs to ensure that your code compiles and is built correcntly.

Every time a merge request from your feature/name-of-your-feature to the remote/origin/develop occurs, a pipeline is triggered testing what you have done before it is merged. You should receive an email if it does not.

On a successful pipeline, other work is done to automatically update VISR’ WebAPI. Make sure you comment what you have written!


\section{Setting up a build environment}
\label{\detokenize{create-build-environment:setting-up-a-build-environment}}\label{\detokenize{create-build-environment::doc}}

\subsection{Standard build setup}
\label{\detokenize{create-build-environment:standard-build-setup}}

\subsection{Git}
\label{\detokenize{create-build-environment:git}}\begin{quote}
\begin{itemize}
\item {} 
On Linux git can be installed through the distribution’s package manager. On Ubuntu, Raspbian, and Debian-based distribtution, the command is \sphinxcode{\sphinxupquote{sudo apt install git}}.

\item {} 
On Mac OS X 10.9 and above, the git command line tool is installed on its first invocation (source: {\color{red}\bfseries{}{}`}GIT SCM book \textless{})

\item {} 
On Windows, we suggest the \sphinxhref{htps://git-scm.com/download/win}{Git for Windows} binaries.

\end{itemize}

Alternatively you can choose from a number of GUIs, for example \textless{}SourceTree \textless{}\sphinxurl{https://www.sourcetreeapp.com/}\textgreater{}{}`\_ or \sphinxhref{https://www.gitkraken.com/}{GitKraken}, or the support in modern IDEs as Microsoft Visual Studio or Apple XCode.
\end{quote}


\subsection{CMake}
\label{\detokenize{create-build-environment:cmake}}
VISR uses \sphinxhref{http://www.cmake.org/}{CMake} as a portable build tool
The minimum required version is CMake 3.1.

CMake can be used as a command line tool but also provides a GUI (cmake-gui) for configuring builds.
\begin{itemize}
\item {} 
On Linux, install throught he distribution’s package manager. On Debian-based systems, the packages are named \sphinxcode{\sphinxupquote{cmake}} for the command line tools and \sphinxcode{\sphinxupquote{cmake-qt-gui}} for the graphical user interface.

\item {} 
On Windows and Mac OS X, download

\item {} 
If you plan to use the machine for CI (continuous integration tasks), make sure you add it to the system path (Windows: Select “Add CMake to the system PATH for all users”)

\end{itemize}


\subsection{Documentation}
\label{\detokenize{create-build-environment:documentation}}
The VISR documentation is mainly written as ReStructured text documents (using {\color{red}\bfseries{}{}`Sphinx \textless{}\textgreater{}{}`\_} to create web pages and PDF documents), whereas the code documentation pulled into these documents is generated through \sphinxhref{https://www.doxygen.nl}{Doxygen}.

In order to create the user and API documentation, the following software tools must be installed:
\begin{itemize}
\item {} 
Doxygen: On Windows and Mac OS X, we recommend downloading binary packages from the \sphinxhref{https://www.doxygen.nl/download.html}{Doxygen download page} and installing them. On Linux, installing via the distribution-specific package manager (e.g., {\color{red}\bfseries{}{}`{}`}sudo apt install doxygen’‘. Note that the XML output generation needed for subsequent build stages is quite buggy in older Doxygen releases, it might therefore be advisable to upgrade to a recent Doxygen release or to build from source (especially on Linux, where the version provided by the package manager could be rather dated).

\item {} 
LaTeX: Both the Doxygen documentation and the PDF generation of Sphinx require a LaTeX system to be installed. We recommend the following LaTeX distributions:
\begin{itemize}
\item {} \begin{description}
\item[{Linux: The system-provided LaTeX (installed, e.g., through {\color{red}\bfseries{}{}`{}`}sudo apt install texlive-full’’ {\color{red}\bfseries{}{}`{}`}sudo apt install texlive’’ on Ubuntu)}] \leavevmode\begin{itemize}
\item {} 
Mac OS X: {\color{red}\bfseries{}{}`MacTeX \textless{}http://www.tug.org/mactex/{}`\_}

\item {} 
Windows:  {\color{red}\bfseries{}{}`MikTeX \textless{}http://www.miktex.org{}`\_}

\end{itemize}

\end{description}

\end{itemize}

Note that - unless you install a “full” distribution - LaTeX packages might be missing and would need to be installed as needed. So look out for error messages when running the documentation generation for the first time, and use the distribution’s package manager to install the missing packages as needed.
\begin{description}
\item[{After installing LaTeX and running the CMake configuration stage with the option BUILD\_DOCUMENTATION enabled, check for errors and for missing binary paths. In particular, if \sphinxcode{\sphinxupquote{PDFLATEX\_COMPILER}} is not found, fix it as follows:}] \leavevmode\begin{itemize}
\item {} 
Windows: Set the CMake variable {\color{red}\bfseries{}{}`{}`}MIKTEX\_BINARY\_PATH’’ to the directory containing the MikTeX binaries, e.g., {\color{red}\bfseries{}{}`{}`}C:/Program Files/MiKTeX 2.9/miktex/bin/x64’‘

\item {} 
Mac OS X: Set \sphinxcode{\sphinxupquote{PDFLATEX\_COMPILER}} to the result of the shell command \sphinxcode{\sphinxupquote{which pdflatex'{'}. On a recent MacTeX installation, this yields {}`{}`/Library/TeX/texbin\textbackslash{}pdflatex/}}

\end{itemize}

\end{description}

\item {} 
Sphinx: Sphinx is typically bundled with the Python distribution you are using and should therefore be installed through the package management system of this distribution.
\begin{itemize}
\item {} \begin{description}
\item[{Linux: use the package manager of the Linux distribution, e.g., \sphinxcode{\sphinxupquote{sudo apt install python3-sphinx}}.}] \leavevmode\begin{itemize}
\item {} 
Anaconda (recommended distribution on Windows and Mac OS X): use \sphinxcode{\sphinxupquote{conda install sphinx}}.

\end{itemize}

\end{description}

\end{itemize}

Alternatively, the generic Python package manager \sphinxcode{\sphinxupquote{pip}} can be used.

\item {} \begin{description}
\item[{Breathe: Breathe is needed by sphinx to render source code generation for languages other than Python. As Breathe is a Python package, the package management system of the Python distribution should be used.}] \leavevmode\begin{itemize}
\item {} 
Linux: use the package manager of the Linux distribution, e.g., \sphinxcode{\sphinxupquote{sudo apt install python3-breathe}}.

\item {} 
Anaconda (recommended distribution on Windows and Mac OS X): use \sphinxcode{\sphinxupquote{conda install -c conda-forge breathe}}. Note that breathe is not contained in the standard package repository but the additional repository \sphinxhref{https://conda-forge.org}{conda-forge}.

\end{itemize}

\end{description}

\item {} 
sphinxcontrib-bibtex: Extension to create bibliographies using BibTeX files. Installed in the same way as breathe, that, is using \sphinxcode{\sphinxupquote{conda}} where available, or the \sphinxcode{\sphinxupquote{pip}} package manager. Again, it is not included in the standard conda package repository, therefore it has to be installed through

\fvset{hllines={, ,}}%
\begin{sphinxVerbatim}[commandchars=\\\{\}]
conda install \PYGZhy{}c conda\PYGZhy{}forge sphinxcontrib\PYGZhy{}bibtex
\end{sphinxVerbatim}

\item {} 
sphinx.ext.autodoc: Extract documentation from the docstrings contained in Python code and Python bindings.

\item {} 
sphinx.ext.napoleon: Enables a simpler syntax for Python docstrings to be extracted via \sphinxcode{\sphinxupquote{autodoc}}.

\end{itemize}


\subsection{Installer package generation}
\label{\detokenize{create-build-environment:installer-package-generation}}
Installation packages are created using \sphinxhref{https://cmake.org/cmake/help/latest/module/CPack.html}{CPack}, which is integrated into the CMake build software. On Linux and Mac OS X, no external build software is needed.


\subsubsection{Windows}
\label{\detokenize{create-build-environment:windows}}
Download and install the NSIS installer system ({\color{red}\bfseries{}{}`https://sourceforge.net/projects/nsis/{}`\_}). It will be automatically recognized if you create the installer packages.


\subsection{Setup as Gitlab runner}
\label{\detokenize{create-build-environment:setup-as-gitlab-runner}}
To provide a


\chapter{Libraries}
\label{\detokenize{index:libraries}}

\section{VISR API}
\label{\detokenize{visr-apidoc::doc}}\label{\detokenize{visr-apidoc:visr-api}}

\subsection{Architecture}
\label{\detokenize{visr-apidoc:architecture}}

\subsection{API reference}
\label{\detokenize{visr-apidoc:api-reference}}

\subsubsection{Class Component}
\label{\detokenize{visr-apidoc:class-component}}\index{visr::Component (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr\sphinxbfcode{\sphinxupquote{Component}}}%
\pysigstopmultiline
Base class for processing components. Components may contain ports to exchange data (either audio signal or parameter) with other components or with the exterior. A component may have a parent, that is, a composite component it is contained in. If the parent is null it is a top-level component. Components also have a name, which must be unique within a containing composite component. 

Subclassed by {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_atomic_component}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::AtomicComponent}}}}, {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_composite_component}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::CompositeComponent}}}}
\paragraph{Public Functions}
\index{visr::Component::Component (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component9ComponentER17SignalFlowContextPcP18CompositeComponent}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1abf3409e322f3569070005d73778ca3e7}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{Component}}}{SignalFlowContext \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{context}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{componentName}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}} *\sphinxstyleemphasis{parent}}{}%
\pysigstopmultiline
Constructor, constructs a component. \begin{description}
\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{context}}: Configuration object containing basic execution parameters (such as sampling frequency and period (block length)) 

\item {} 
\sphinxcode{\sphinxupquote{componentName}}: The name of the component. If this component is contained in a higher-level parent component, the name must be unique within that parent component 

\item {} 
\sphinxcode{\sphinxupquote{parent}}: Pointer to the containing composite component, if there is one. Otherwise, that is, if the present component is at the top level, pass \sphinxcode{\sphinxupquote{nullptr}}. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::Component::Component (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component9ComponentER17SignalFlowContextRNSt6stringEP18CompositeComponent}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1ac00b054b5915875209e1c53c9f7b76a1}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{Component}}}{SignalFlowContext \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{context}, std::string \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{componentName}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}} *\sphinxstyleemphasis{parent}}{}%
\pysigstopmultiline
Constructor. Convenvience function, accepts a standard string instead of a C chararacter pointer. \begin{description}
\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{context}}: Configuration object containing basic execution parameters (such as sampling frequency and period (block length)) 

\item {} 
\sphinxcode{\sphinxupquote{componentName}}: The name of the component. If this component is contained in a higher-level parent component, the name must be unique within that parent component. 

\item {} 
\sphinxcode{\sphinxupquote{parent}}: Pointer to the containing composite component, if there is one. Otherwise, that is, if the present component is at the top level, pass \sphinxcode{\sphinxupquote{nullptr}}. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::Component::Component (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component9ComponentER9Component}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a28b41d85c98903d8f980021f85c3ad98}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{Component}}}{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9Component9ComponentER17SignalFlowContextPcP18CompositeComponent}]{\sphinxcrossref{Component}}} \sphinxbfcode{\sphinxupquote{const}}\&}{}%
\pysigstopmultiline
Deleted copy constructor to avoid copy construction of this and derived classes. 

\end{fulllineitems}

\index{visr::Component::Component (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component9ComponentERR9Component}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1aa2fb21ff8a68e27cbbd2faec9e820c16}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{Component}}}{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9Component9ComponentER17SignalFlowContextPcP18CompositeComponent}]{\sphinxcrossref{Component}}}\&\&}{}%
\pysigstopmultiline
Deleted move constructor to avoid moving of this and derived classes. 

\end{fulllineitems}

\index{visr::Component::operator= (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9ComponentaSER9Component}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a040fc5dc8b2a7724ae12fdc6c38a5f15}}\pysiglinewithargsret{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{operator=}}}{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}} \sphinxbfcode{\sphinxupquote{const}}\&}{}%
\pysigstopmultiline
Deleted assignment operator to prohibit (copy) assignment of this and derived classes. 

\end{fulllineitems}

\index{visr::Component::operator= (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9ComponentaSERR9Component}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a466a03f45b04cd054c9626b9c4dfbb40}}\pysiglinewithargsret{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{operator=}}}{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\&\&}{}%
\pysigstopmultiline
Deleted assignment operator to prohibit move assignment of this and derived classes. 

\end{fulllineitems}

\index{visr::Component::\textasciitilde{}Component (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9ComponentD0Ev}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a38474a7d42cb449ab4c8de219fb20023}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{\textasciitilde{}Component}}}{}{}%
\pysigstopmultiline
Destructor (virtual) 

\end{fulllineitems}

\index{visr::Component::name (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component4nameEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1aa23c3741caaf011213e211c7e88e3660}}\pysiglinewithargsret{std::string \sphinxbfcode{\sphinxupquote{const}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{name}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
Return the ‘local’, non-hierarchical name. 

\end{fulllineitems}

\index{visr::Component::fullName (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component8fullNameEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a3c322ac051c811923e06b9506a435665}}\pysiglinewithargsret{std::string visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{fullName}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
Return the full, hierarchical name of the component. 

\end{fulllineitems}

\index{visr::Component::status (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component6statusEN13StatusMessage4KindEPc}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a106e0f6191f8a0409c146935613a0165}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{status}}}{StatusMessage::Kind \sphinxstyleemphasis{status}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{message}}{}%
\pysigstopmultiline
Signal informational messages or the error conditions. Depending on the value of the \sphinxcode{\sphinxupquote{status}} parameter, this might result in a message conveyed to the user or abortion of the audio processing. \begin{description}
\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{status}}: The class of the status message 

\item {} 
\sphinxcode{\sphinxupquote{message}}: An informational message string. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::Component::status (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component6statusEN13StatusMessage4KindEDp11MessageArgs}}%
\pysigstartmultiline
\pysigline{\sphinxbfcode{\sphinxupquote{template }}\textless{}\sphinxbfcode{\sphinxupquote{typename}} ... \sphinxstyleemphasis{MessageArgs}\textgreater{}}\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a9b25154068756a54f8b7160c5ec9cd06}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{status}}}{StatusMessage::Kind \sphinxstyleemphasis{status}, MessageArgs... \sphinxstyleemphasis{args}}{}%
\pysigstopmultiline
Signal informational messages or the error conditions where the message string is constructed from an arbitrary sequence of arguments. Depending on the value of the \sphinxcode{\sphinxupquote{status}} parameter, this might result in a message conveyed to the user or abortion of the audio processing. \begin{description}
\item[{\sphinxstylestrong{Template Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{MessageArgs}}: List of argument types to be printed. Normally they are automatically determined by the compiler, so there is no need to specify them. 

\end{itemize}

\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{status}}: The class of the status message 

\item {} 
\sphinxcode{\sphinxupquote{args}}: Comma-seprated list of parameters with unspecified types. The main requirement is that all types support an “\textless{}\textless{}” operator. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::Component::isComposite (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component11isCompositeEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1adf812bb54a98ec840a883cdc966e5421}}\pysiglinewithargsret{bool visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{isComposite}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
Query whether this component is atomic (i.e., a piece of code implementing a rendering functionality) or a composite consisting of an interconnection of atomic (or further composite) components. 

\end{fulllineitems}

\index{visr::Component::audioPort (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component9audioPortEPc}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a3df8d26471438c032295e65e21a07a46}}\pysiglinewithargsret{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{audioPort}}}{char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{portName}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::Component::audioPort (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component9audioPortEPc}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a4446eb183cf9e53ba3a3fd36f0fb6cfa}}\pysiglinewithargsret{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}} \sphinxbfcode{\sphinxupquote{const}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{audioPort}}}{char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{portName}}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::Component::audioPort (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component9audioPortERNSt6stringE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a1a7d91074f71e6e496ddbc568d0f9e91}}\pysiglinewithargsret{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{audioPort}}}{std::string \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{portName}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::Component::audioPort (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component9audioPortERNSt6stringE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a56cddfdebf00d40b1ca26c1a57dd91c1}}\pysiglinewithargsret{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}} \sphinxbfcode{\sphinxupquote{const}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{audioPort}}}{std::string \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{portName}}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::Component::parameterPort (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component13parameterPortEPc}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a4f8f4f018a2e7a0fba958d369e0fdbb2}}\pysiglinewithargsret{ParameterPortBase \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{parameterPort}}}{char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{portName}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::Component::parameterPort (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component13parameterPortEPc}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a73fb458bd2b325ef856f2d78a7a86750}}\pysiglinewithargsret{ParameterPortBase \sphinxbfcode{\sphinxupquote{const}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{parameterPort}}}{char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{portName}}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::Component::parameterPort (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component13parameterPortERNSt6stringE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a469ddfbeac0b62eb5ca14de151e8efb0}}\pysiglinewithargsret{ParameterPortBase \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{parameterPort}}}{std::string \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{portName}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::Component::parameterPort (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component13parameterPortERNSt6stringE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1aa073c5ef17b759f31e40d0914046bc4f}}\pysiglinewithargsret{ParameterPortBase \sphinxbfcode{\sphinxupquote{const}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{parameterPort}}}{std::string \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{portName}}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::Component::samplingFrequency (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component17samplingFrequencyEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1ada796e384dbd856faa5bae0084f26cbe}}\pysiglinewithargsret{SamplingFrequencyType visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{samplingFrequency}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
Return the sampling frequency of the containing signal flow. 

\end{fulllineitems}

\index{visr::Component::period (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component6periodEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a320a5b32aa6178741726b02df001dc2d}}\pysiglinewithargsret{std::size\_t visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{period}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
Return the period of the containing signal processing graph, i.e., the number of samples processed in each invocation of the process function of the derived audio components. This methods can be called at any point of the lifetime of the derived component, i.e., for instance in the constructor. 

\end{fulllineitems}

\index{visr::Component::isTopLevel (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component10isTopLevelEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a3465ee7d61f1f35494e4d6d0165203e7}}\pysiglinewithargsret{bool visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{isTopLevel}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
Query whether the component is at the top level of a signal flow. \begin{description}
\item[{\sphinxstylestrong{Note}}] \leavevmode
Not needed for user API 

\end{description}


\end{fulllineitems}

\index{visr::Component::implementation (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component14implementationEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1a8c5ff679bfe63d5e671dc7c4bcc1b153}}\pysiglinewithargsret{impl::ComponentImplementation \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{implementation}}}{}{}%
\pysigstopmultiline
Provide a pointer to an external implementation object. The type of this implementation object is opaque, i.e., not visible from the public VISR API. \begin{description}
\item[{\sphinxstylestrong{Note}}] \leavevmode
This method is not supposed to be called in user code. It is public because it is is used by the VISR runtime system. 

\end{description}


\end{fulllineitems}

\index{visr::Component::implementation (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr9Component14implementationEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1ae4ed6a1f0150cfcabee8753273348f0e}}\pysiglinewithargsret{impl::ComponentImplementation \sphinxbfcode{\sphinxupquote{const}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{implementation}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
Provide a pointer to an external implementation object, constant version. The type of this implementation object is opaque, i.e., not visible from the public VISR API. \begin{description}
\item[{\sphinxstylestrong{Note}}] \leavevmode
This method is not supposed to be called in user code. It is public because it is is used by the VISR runtime system. 

\end{description}


\end{fulllineitems}

\paragraph{Public Static Functions}
\index{visr::Component::nameSeparator (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component13nameSeparatorEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1ad3eb5ffd9cd47daf9f98862b492ad468}}\pysiglinewithargsret{std::string \sphinxbfcode{\sphinxupquote{const}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{nameSeparator}}}{}{}%
\pysigstopmultiline
Separator used to form hierarchical names. 

\end{fulllineitems}

\paragraph{Protected Functions}
\index{visr::Component::Component (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr9Component9ComponentEPN4impl23ComponentImplementationE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_component_1af3cf394a42ea1a9720dacfbc600fd822}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}\sphinxbfcode{\sphinxupquote{Component}}}{impl::ComponentImplementation *\sphinxstyleemphasis{impl}}{}%
\pysigstopmultiline
Constructor that receives the internal implementation object. This overload has to be called by the other constructors (including those of subclasses) to make sure that the implementation object is instantiated. The motivation for this constructor is to provide different implementation objects for different subclasses. 

\end{fulllineitems}


\end{fulllineitems}



\subsubsection{Class AtomicComponent}
\label{\detokenize{visr-apidoc:class-atomiccomponent}}\index{visr::AtomicComponent (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponentE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_atomic_component}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr\sphinxbfcode{\sphinxupquote{AtomicComponent}} : \sphinxbfcode{\sphinxupquote{public}} visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}}%
\pysigstopmultiline
Base class for atomic components. These components are at the lowest level in the hierarchy and implement runtime functionality as C++ code. Abstract base class, derived classes must override the virtual method {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_atomic_component_1a8e2ed5a4221eb3b59baa72987df4f024}]{\sphinxcrossref{\DUrole{std,std-ref}{process()}}}}. 

Subclassed by visr::apps::audio\_network\_streamer::AudioNetworkEncoder, visr::impl::test::TestAtom, visr::python::visr::AtomicComponentWrapper, visr::rcl::Add, visr::rcl::BiquadIirFilter, visr::rcl::CAPGainCalculator, visr::rcl::ChannelObjectRoutingCalculator, visr::rcl::CrossfadingFirFilterMatrix, visr::rcl::DelayMatrix, visr::rcl::DelayVector, visr::rcl::DiffusionGainCalculator, visr::rcl::FirFilterMatrix, visr::rcl::GainMatrix, visr::rcl::GainVector, visr::rcl::HoaAllRadGainCalculator, visr::rcl::InterpolatingFirFilterMatrix, visr::rcl::ListenerCompensation, visr::rcl::NullSource, visr::rcl::ObjectGainEqCalculator, visr::rcl::PanningCalculator, visr::rcl::PositionDecoder, visr::rcl::ScalarOscDecoder, visr::rcl::SceneDecoder, visr::rcl::SceneEncoder, visr::rcl::SignalRouting, visr::rcl::SparseGainMatrix, visr::rcl::TimeFrequencyInverseTransform, visr::rcl::TimeFrequencyTransform, visr::rcl::UdpReceiver, visr::rcl::UdpSender, visr::reverbobject::LateReverbFilterCalculator, visr::reverbobject::ReverbParameterCalculator, visr::rrl::SignalRoutingInternal\textless{} SampleType \textgreater{}
\paragraph{Public Functions}
\index{visr::AtomicComponent::AtomicComponent (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponent15AtomicComponentER17SignalFlowContextPcP18CompositeComponent}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_atomic_component_1abc1075aee0f5f78d7ffafee75179a159}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponentE}]{\sphinxcrossref{AtomicComponent}}}\sphinxbfcode{\sphinxupquote{AtomicComponent}}}{SignalFlowContext \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{context}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{name}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}} *\sphinxstyleemphasis{parent} = nullptr}{}%
\pysigstopmultiline
Constructor. \begin{description}
\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{context}}: a signal flow context structure containing general parameters, e.g., sampling rate and block size of computation. 

\item {} 
\sphinxcode{\sphinxupquote{name}}: Null-terminated character string containing the name. Name must be unique within the containing composite component (if there is one). 

\item {} 
\sphinxcode{\sphinxupquote{parent}}: A composite component to contain this atom, If it is a null pointer (the default), then this component is at the top level. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::AtomicComponent::AtomicComponent (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponent15AtomicComponentER15AtomicComponent}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_atomic_component_1a8c05edb3fe679fe1e8f81b61187c7960}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponentE}]{\sphinxcrossref{AtomicComponent}}}\sphinxbfcode{\sphinxupquote{AtomicComponent}}}{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponent15AtomicComponentER17SignalFlowContextPcP18CompositeComponent}]{\sphinxcrossref{AtomicComponent}}} \sphinxbfcode{\sphinxupquote{const}}\&}{}%
\pysigstopmultiline
Deleted copy constructor to avoid copying. 

\end{fulllineitems}

\index{visr::AtomicComponent::AtomicComponent (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponent15AtomicComponentERR15AtomicComponent}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_atomic_component_1aee7c13a81194e7b269724698b72a778c}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponentE}]{\sphinxcrossref{AtomicComponent}}}\sphinxbfcode{\sphinxupquote{AtomicComponent}}}{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponent15AtomicComponentER17SignalFlowContextPcP18CompositeComponent}]{\sphinxcrossref{AtomicComponent}}}\&\&}{}%
\pysigstopmultiline
Deleted move constructor to avoid move construction. 

\end{fulllineitems}

\index{visr::AtomicComponent::\textasciitilde{}AtomicComponent (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponentD0Ev}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_atomic_component_1a3eb7a653f84f2351488df687cb79c04b}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponentE}]{\sphinxcrossref{AtomicComponent}}}\sphinxbfcode{\sphinxupquote{\textasciitilde{}AtomicComponent}}}{}{}%
\pysigstopmultiline
Destructor (virtual). Atomic components are destined to be instantiated and managed polymorphically, thus requiring virtual destructors. 

\end{fulllineitems}

\index{visr::AtomicComponent::process (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponent7processEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_atomic_component_1a8e2ed5a4221eb3b59baa72987df4f024}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{virtual}} void visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr15AtomicComponentE}]{\sphinxcrossref{AtomicComponent}}}\sphinxbfcode{\sphinxupquote{process}}}{}{ = 0}%
\pysigstopmultiline
Pure virtual {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_atomic_component_1a8e2ed5a4221eb3b59baa72987df4f024}]{\sphinxcrossref{\DUrole{std,std-ref}{process()}}}} function. The overriding methods of base classes are called in regular intervals, each processing a fixed number (\sphinxcode{\sphinxupquote{context.period()}}) number of samples. 

\end{fulllineitems}


\end{fulllineitems}



\subsubsection{Class CompositeComponent}
\label{\detokenize{visr-apidoc:class-compositecomponent}}\index{visr::CompositeComponent (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr\sphinxbfcode{\sphinxupquote{CompositeComponent}} : \sphinxbfcode{\sphinxupquote{public}} visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr9ComponentE}]{\sphinxcrossref{Component}}}}%
\pysigstopmultiline
Base class for processing components that are composed of other components (atomic and composite). In this way, processing components can be structured hierarchically. Composite components store the contained sub-components, external audio and parameter ports, and conenctions between the ports. 

Subclassed by visr::apps::audio\_network\_streamer::SignalFlow, visr::apps::feedthrough::Feedthrough, visr::apps::scene\_decoder::SignalFlow, visr::audiointerfaces::test::Feedthrough, visr::mex::feedthrough::SignalFlow, visr::python::visr::CompositeComponentWrapper, visr::pythoncomponents::Wrapper, visr::reverbobject::ReverbObjectRenderer, visr::signalflows::BaselineRenderer, visr::signalflows::BunchRenderer, visr::signalflows::CoreRenderer, visr::signalflows::DelayVector, visr::signalflows::GainMatrix, visr::signalflows::TimeFrequencyFeedthrough, visr::signalflowspython::VisrRenderer
\paragraph{Unnamed Group}
\index{visr::CompositeComponent::ChannelRange (C++ type)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent12ChannelRangeE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1af61df0ad77d194bb4751c892152db313}}\sphinxbfcode{\sphinxupquote{using }}visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{ChannelRange}} = visr::ChannelRange}%
\pysigstopmultiline
Making the types for defining audio connections known inside CompositeConponent and derived classes These are convenience aliases to make the syntax in derived signal flows more concise. \begin{description}
\item[{\sphinxstylestrong{Note}}] \leavevmode
: This also means that we include the ChannelList/ChannelRange definition in this header, as these classes become part the {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_composite_component}]{\sphinxcrossref{\DUrole{std,std-ref}{CompositeComponent}}}} interface. 

\end{description}


\end{fulllineitems}

\index{visr::CompositeComponent::ChannelList (C++ type)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent11ChannelListE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1a404324352f8a94d8c1f6503227455495}}\sphinxbfcode{\sphinxupquote{using }}visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{ChannelList}} = visr::ChannelList}%
\pysigstopmultiline
\end{fulllineitems}

\paragraph{Public Functions}
\index{visr::CompositeComponent::CompositeComponent (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent18CompositeComponentER17SignalFlowContextPcP18CompositeComponent}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1a6097a8195fa095a4d4beefb157aeb4ed}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{CompositeComponent}}}{SignalFlowContext \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{context}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{name}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent18CompositeComponentER17SignalFlowContextPcP18CompositeComponent}]{\sphinxcrossref{CompositeComponent}}} *\sphinxstyleemphasis{parent} = nullptr}{}%
\pysigstopmultiline
Constructor. \begin{description}
\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{context}}: Reference to a signal flow context object providing basic runtime parameters as period length or sampling frequency. 

\item {} 
\sphinxcode{\sphinxupquote{name}}: “the name of the component. Used to address the component inside other components and for status reporting. 

\item {} 
\sphinxcode{\sphinxupquote{parent}}: Reference (pointer) to a parent component if the present object is part of a containing signal flow. If \sphinxcode{\sphinxupquote{nullptr}} is passed, this component is the top level. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::CompositeComponent::\textasciitilde{}CompositeComponent (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentD0Ev}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1a1f4efa0fad4177b84bc65b81e3ee64c0}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{\textasciitilde{}CompositeComponent}}}{}{}%
\pysigstopmultiline
Destructor. 

\end{fulllineitems}

\index{visr::CompositeComponent::numberOfComponents (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr18CompositeComponent18numberOfComponentsEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1acb0504d8bd0790b1e73d8403f345308c}}\pysiglinewithargsret{std::size\_t visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{numberOfComponents}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
The number of contained components (not including the composite itself). This method considers only atomic and composite components at the next level, i.e., not recursively. 

\end{fulllineitems}

\index{visr::CompositeComponent::implementation (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent14implementationEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1aad82f022361d2461944f8cda9aea3f05}}\pysiglinewithargsret{impl::CompositeComponentImplementation \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{implementation}}}{}{}%
\pysigstopmultiline
Return a reference to the internal data structures holding ports and contained components. From the user point of view, these data structure is opaque and unknown. 

\end{fulllineitems}

\index{visr::CompositeComponent::implementation (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr18CompositeComponent14implementationEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1af21794223d04f41bc6690fc4c8e3fb54}}\pysiglinewithargsret{impl::CompositeComponentImplementation \sphinxbfcode{\sphinxupquote{const}} \&visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{implementation}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
Return a reference to the internal data structures holding ports and contained components, const version. From the user point of view, these data structure is opaque and unknown. 

\end{fulllineitems}

\index{visr::CompositeComponent::parameterConnection (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent19parameterConnectionEPcPcPcPc}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1a81998af058603e42054c4edbffc82359}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{parameterConnection}}}{char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{sendComponent}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{sendPort}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{receiveComponent}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{receivePort}}{}%
\pysigstopmultiline
Register a connection between parameter ports (both real ports of contained components or external placeholder ports). \begin{description}
\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{sendComponent}}: The name of the component holding the send port (local name, not the fully qualified name). When specifiying an external port of a composite component, use an empty string or \sphinxcode{\sphinxupquote{"this"}}. 

\item {} 
\sphinxcode{\sphinxupquote{sendPort}}: The local (not fully qualified) name of the send port. 

\item {} 
\sphinxcode{\sphinxupquote{receiveComponent}}: The name of the component holding the receive port (local name, not the fully qualified name). When specifiying an external port of a composite component, use an empty string or \sphinxcode{\sphinxupquote{"this"}}. 

\item {} 
\sphinxcode{\sphinxupquote{receivePort}}: The local (not fully qualified) name of the receive port. 

\end{itemize}

\item[{\sphinxstylestrong{Exceptions}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{std::invalid\_argument}}: if a specified component or port does not exist. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::CompositeComponent::parameterConnection (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent19parameterConnectionER17ParameterPortBaseR17ParameterPortBase}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1a1a12f80df689f72baf22c36646ee8779}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{parameterConnection}}}{ParameterPortBase \&\sphinxstyleemphasis{sender}, ParameterPortBase \&\sphinxstyleemphasis{receiver}}{}%
\pysigstopmultiline
Register a connection between parameter ports (both real ports of contained components or external placeholder ports). \begin{description}
\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{sender}}: Reference to the sendig port (retrieved, for example using \sphinxcode{\sphinxupquote{{\hyperref[\detokenize{visr-apidoc:classvisr_1_1_component_1a4f8f4f018a2e7a0fba958d369e0fdbb2}]{\sphinxcrossref{\DUrole{std,std-ref}{Component::parameterPort()}}}}}} ) 

\item {} 
\sphinxcode{\sphinxupquote{receiver}}: Reference to the sendig port (retrieved, for example using \sphinxcode{\sphinxupquote{{\hyperref[\detokenize{visr-apidoc:classvisr_1_1_component_1a4f8f4f018a2e7a0fba958d369e0fdbb2}]{\sphinxcrossref{\DUrole{std,std-ref}{Component::parameterPort()}}}}}} ) 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::CompositeComponent::audioConnection (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent15audioConnectionEPcPcR11ChannelListPcPcR11ChannelList}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1a3ec29b5944f9190a5ccba1930a66d5b0}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{audioConnection}}}{char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{sendComponent}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{sendPort}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent11ChannelListE}]{\sphinxcrossref{ChannelList}}} \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{sendIndices}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{receiveComponent}, char \sphinxbfcode{\sphinxupquote{const}} *\sphinxstyleemphasis{receivePort}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent11ChannelListE}]{\sphinxcrossref{ChannelList}}} \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{receiveIndices}}{}%
\pysigstopmultiline
Register an audio connection between a sending and a receiving audio port. This overload uses C strings to denote both the names of the components holding the ports and the output ports itself. Lists of channel indices are to be specified for the sending and the receiving port. The sizes of these lists must be identical, and the contained indices must not exceed the width of the send and receive port, respectively. Empty lists for both the send and receive indices are permitted and result in no connection. \begin{description}
\item[{\sphinxstylestrong{See}}] \leavevmode
ChannelList for the syntax to specify the channel index lists. 

\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{sendComponent}}: Name of the component holding the sending audio port. If the send port is an external input of this component, use “” or “this” 

\item {} 
\sphinxcode{\sphinxupquote{sendPort}}: The name of the sending port. 

\item {} 
\sphinxcode{\sphinxupquote{sendIndices}}: A list of channel indices denoting the send channels of the sending side. 

\item {} 
\sphinxcode{\sphinxupquote{receiveComponent}}: Name of the component holding the receiving audio port. If the receive port is an external output of the present component, use “” or “this” 

\item {} 
\sphinxcode{\sphinxupquote{receivePort}}: The name of the receiving port. 

\item {} 
\sphinxcode{\sphinxupquote{receiveIndices}}: A list of channel indices denoting the receive channels within the receiver port. 

\end{itemize}

\item[{\sphinxstylestrong{Exceptions}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{std::invalid\_argument}}: if a specified component or port does not exist. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::CompositeComponent::audioConnection (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent15audioConnectionER13AudioPortBaseR11ChannelListR13AudioPortBaseR11ChannelList}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1a194fa278d719dde58292772ca9327bff}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{audioConnection}}}{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}} \&\sphinxstyleemphasis{sendPort}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent11ChannelListE}]{\sphinxcrossref{ChannelList}}} \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{sendIndices}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}} \&\sphinxstyleemphasis{receivePort}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent11ChannelListE}]{\sphinxcrossref{ChannelList}}} \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{receiveIndices}}{}%
\pysigstopmultiline
Register an audio connection between a sending and a receiving audio port. This overload uses audio ports (either directly referencing external in- and output of this components or retrieving ports of contained components using the {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_component_1a3df8d26471438c032295e65e21a07a46}]{\sphinxcrossref{\DUrole{std,std-ref}{Component::audioPort()}}}} method). Lists of channel indices are to be specified for the sending and the receiving port. The sizes of these lists must be identical, and the contained indices must not exceed the width of the send and receive port, respectively. Empty lists for both the send and receive indices are permitted and result in no connection. \begin{description}
\item[{\sphinxstylestrong{See}}] \leavevmode
ChannelList for the syntax to specify the channel index lists. 

\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{sendPort}}: The send port object. 

\item {} 
\sphinxcode{\sphinxupquote{sendIndices}}: A list of channel indices denoting the send channels of the sending side. 

\item {} 
\sphinxcode{\sphinxupquote{receivePort}}: The receive port object. 

\item {} 
\sphinxcode{\sphinxupquote{receiveIndices}}: A list of channel indices denoting the receive channels within the receiver port. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::CompositeComponent::audioConnection (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponent15audioConnectionER13AudioPortBaseR13AudioPortBase}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_composite_component_1a3a15dc936aee34b2dad0326ae9949563}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr18CompositeComponentE}]{\sphinxcrossref{CompositeComponent}}}\sphinxbfcode{\sphinxupquote{audioConnection}}}{{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}} \&\sphinxstyleemphasis{sendPort}, {\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}} \&\sphinxstyleemphasis{receivePort}}{}%
\pysigstopmultiline
Register an audio connection between all channels of a sending and a receiving audio port. This overload uses audio ports (either directly referencing external in- and output of this components or retrieving ports of contained components using the {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_component_1a3df8d26471438c032295e65e21a07a46}]{\sphinxcrossref{\DUrole{std,std-ref}{Component::audioPort()}}}} method). It establishes one-to-one connections between the channels of the sender and the receiver. \begin{description}
\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{sendPort}}: The send port object. 

\item {} 
\sphinxcode{\sphinxupquote{receivePort}}: The receive port object. 

\end{itemize}

\item[{\sphinxstylestrong{Exceptions}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{std::invalid\_argument}}: if the port widths do not match. 

\end{itemize}

\end{description}


\end{fulllineitems}


\end{fulllineitems}



\subsubsection{Class AudioPortBase}
\label{\detokenize{visr-apidoc:class-audioportbase}}\index{visr::AudioPortBase (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_audio_port_base}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr\sphinxbfcode{\sphinxupquote{AudioPortBase}}}%
\pysigstopmultiline
Base class for audio ports. Audio ports can form part of the external interface of components and denote start and end points od audio signal connections. An audio port is characterised by a sample type (fundamental integral and floating-point data type as well as complex floating-point types), the width, that is, the number of elementary audio signals represented by this port. 

Subclassed by {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_audio_input_base}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::AudioInputBase}}}}, visr::AudioOutputBase
\paragraph{Protected Functions}
\index{visr::AudioPortBase::basePointer (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBase11basePointerEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_audio_port_base_1a2b12d01b4d4dab6996235b1facfe808a}}\pysiglinewithargsret{void *visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}}\sphinxbfcode{\sphinxupquote{basePointer}}}{}{}%
\pysigstopmultiline
Return the data pointer to fir first (technically zeroth) channel. The type of this pointer is char and needs to be casted in derived, typed port classes. 

\end{fulllineitems}

\index{visr::AudioPortBase::basePointer (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3NK4visr13AudioPortBase11basePointerEv}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_audio_port_base_1aa731b6786514eb6ba7b8574af3bc6654}}\pysiglinewithargsret{void \sphinxbfcode{\sphinxupquote{const}} *visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}}\sphinxbfcode{\sphinxupquote{basePointer}}}{}{ \sphinxbfcode{\sphinxupquote{const}}}%
\pysigstopmultiline
Return the data pointer to fir first (technically zeroth) channel, costant versiob The type of this pointer is char and needs to be casted in derived, typed port classes. 

\end{fulllineitems}

\paragraph{Private Members}
\index{visr::AudioPortBase::mImpl (C++ member)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBase5mImplE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_audio_port_base_1a9830a52ef44a48d96462767d257e1cb2}}impl::AudioPortBaseImplementation *visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}}\sphinxbfcode{\sphinxupquote{mImpl}}}%
\pysigstopmultiline
Pointer to the private, opaque implementation object. 

\end{fulllineitems}


\end{fulllineitems}



\subsubsection{Class AudioInputBase}
\label{\detokenize{visr-apidoc:class-audioinputbase}}\index{visr::AudioInputBase (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr14AudioInputBaseE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_audio_input_base}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr\sphinxbfcode{\sphinxupquote{AudioInputBase}} : \sphinxbfcode{\sphinxupquote{public}} visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr13AudioPortBaseE}]{\sphinxcrossref{AudioPortBase}}}}%
\pysigstopmultiline
Base class for audio input ports. This base class is not intended to be used by API users. This class itself cannot be instantiated, because it is not associated with a specific sample type. Only derived classes may actually be instantiated. 

Subclassed by {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_audio_input_t}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::AudioInputT\textless{} SampleType \textgreater{}}}}}, {\hyperref[\detokenize{visr-apidoc:classvisr_1_1_audio_input_t}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::AudioInputT\textless{} DataType \textgreater{}}}}}

\end{fulllineitems}



\subsubsection{Template class AudioInputT}
\label{\detokenize{visr-apidoc:template-class-audioinputt}}\index{visr::AudioInputT (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{visr-apidoc:_CPPv3N4visr11AudioInputTE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{visr-apidoc:classvisr_1_1_audio_input_t}}\pysigline{\sphinxbfcode{\sphinxupquote{template }}\textless{}typename \sphinxstyleemphasis{DataType}\textgreater{}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr\sphinxbfcode{\sphinxupquote{AudioInputT}} : \sphinxbfcode{\sphinxupquote{public}} visr::{\hyperref[\detokenize{visr-apidoc:_CPPv3N4visr14AudioInputBaseE}]{\sphinxcrossref{AudioInputBase}}}}%
\pysigstopmultiline
Class template for concrete audio inputs holding samples of a specific type. \begin{description}
\item[{\sphinxstylestrong{Template Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{DataType}}: The sample type used by this audio port type. 

\end{itemize}

\end{description}


\end{fulllineitems}



\subsubsection{Alias class AudioInput}
\label{\detokenize{visr-apidoc:alias-class-audioinput}}
Non-template of the visr::AudioInputT port template specialised for the default sample type.


\begin{fulllineitems}
\pysigline{\phantomsection\label{\detokenize{visr-apidoc:namespacevisr_1a4ac4ca76b0271c829fb4bdf7481898e7}}\sphinxbfcode{\sphinxupquote{using }}\sphinxbfcode{\sphinxupquote{visr::AudioInput~=~typedef~AudioInputT\textless{}SampleType\textgreater{}}}}
Alias for audio input ports using the default datatype (typically float) 

\end{fulllineitems}



\section{Builtin component library (rcl)}
\label{\detokenize{builtin_component_library::doc}}\label{\detokenize{builtin_component_library:builtin-component-library-rcl}}

\section{Runtime library}
\label{\detokenize{runtime_library:runtime-library}}\label{\detokenize{runtime_library::doc}}

\subsection{Purpose}
\label{\detokenize{runtime_library:purpose}}

\subsection{Main classes}
\label{\detokenize{runtime_library:main-classes}}\index{visr::rrl::AudioSignalFlow (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{runtime_library:_CPPv3N4visr3rrl15AudioSignalFlowE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{runtime_library:classvisr_1_1rrl_1_1_audio_signal_flow}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr::rrl\sphinxbfcode{\sphinxupquote{AudioSignalFlow}}}%
\pysigstopmultiline
Base class for signal flows, i.e., graphs of connected audio components which perform an audio signal processing operation. This base class provides the infrastructure for setting up the graphs and for transferring the input and output samples. For the audio processing, this class provides a callback interface that must be called in regular intervals (i.e., for a fixed number of samples consumed and generated, respectively). 

Subclassed by visr::mex::gain\_matrix::SignalFlow, visr::mex::gain\_matrix::SignalFlow, visr::mex::late\_reverb\_filter\_calculator::SignalFlow

\end{fulllineitems}



\subsection{Checking functions}
\label{\detokenize{runtime_library:checking-functions}}

\subsection{Internal classes and functions}
\label{\detokenize{runtime_library:internal-classes-and-functions}}

\section{Object model library}
\label{\detokenize{objectmodel_library::doc}}\label{\detokenize{objectmodel_library:object-model-library}}

\subsection{Purpose}
\label{\detokenize{objectmodel_library:purpose}}

\subsection{API reference}
\label{\detokenize{objectmodel_library:api-reference}}\index{visr::objectmodel (C++ type)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel}}\pysigline{\sphinxbfcode{\sphinxupquote{namespace }}visr\sphinxbfcode{\sphinxupquote{objectmodel}}}%
\pysigstopmultiline
The documentation for the namespace objectmodel. Detailed description follows here. 
\paragraph{Typedefs}


\begin{fulllineitems}
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1aff007694b1191f60c060355cd201bdd6}}\sphinxbfcode{\sphinxupquote{using }}\sphinxbfcode{\sphinxupquote{visr::objectmodel::ObjectId~=~typedef~unsigned~int}}}
\end{fulllineitems}



\begin{fulllineitems}
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1af9a9fac56770f9e10c346f41b5c96d6c}}\sphinxbfcode{\sphinxupquote{using }}\sphinxbfcode{\sphinxupquote{visr::objectmodel::GroupId~=~typedef~unsigned~int}}}
\end{fulllineitems}



\begin{fulllineitems}
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1af84b5763e52c61b7519db293c7e66d75}}\sphinxbfcode{\sphinxupquote{using }}\sphinxbfcode{\sphinxupquote{visr::objectmodel::LevelType~=~typedef~float}}}
Type use for level (gain, volume) settings, linear scale 

\end{fulllineitems}



\begin{fulllineitems}
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a7fb7cd378a694696e91b532322066dd9}}\sphinxbfcode{\sphinxupquote{using }}\sphinxbfcode{\sphinxupquote{visr::objectmodel::ObjectTypeIntegerRepresentation~=~typedef~std::uint8\_t}}}
\end{fulllineitems}

\paragraph{Enums}
\index{visr::objectmodel::ObjectTypeId (C++ type)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel12ObjectTypeIdE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8e}}\sphinxbfcode{\sphinxupquote{enum }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{ObjectTypeId}}}%
\pysigstopmultiline
A numeric id to uniquely describe object types. 

\sphinxstyleemphasis{Values:}
\index{visr::objectmodel::PointSource (C++ enumerator)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel11PointSourceE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8ea58f8bd94af810ee92f77cc5f11000fb8}}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PointSource}} = 0}%
\pysigstopmultiline
Simple point-like source (monopole) 

\end{fulllineitems}

\index{visr::objectmodel::PlaneWave (C++ enumerator)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel9PlaneWaveE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8ea42cca3c5435fd6160174bb47497e68b9}}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PlaneWave}} = 1}%
\pysigstopmultiline
Straight plane-wave source type 

\end{fulllineitems}

\index{visr::objectmodel::DiffuseSource (C++ enumerator)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel13DiffuseSourceE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8eacc5bd6c37c7f22cee85ab25a7dcdef2d}}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{DiffuseSource}} = 2}%
\pysigstopmultiline
Totally diffuse source type 

\end{fulllineitems}

\index{visr::objectmodel::PointSourceWithDiffuseness (C++ enumerator)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel26PointSourceWithDiffusenessE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8ead04a5a1116ee617d2eefcfe60ac725f2}}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PointSourceWithDiffuseness}} = 3}%
\pysigstopmultiline
Point-source-like audio object with an addditional “diffuseness” attribute controlling the fraction of the source that is reproduced diffusely. 

\end{fulllineitems}

\index{visr::objectmodel::ExtendedSource (C++ enumerator)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel14ExtendedSourceE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8eaab58ed35624010d06275e91994372d57}}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{ExtendedSource}} = 4}%
\pysigstopmultiline
Source type with controllable extent, i.e. width and height. 

\end{fulllineitems}

\index{visr::objectmodel::PointSourceWithReverb (C++ enumerator)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel21PointSourceWithReverbE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8eaadb37343f18409ba6cb55b8ea0468361}}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PointSourceWithReverb}} = 5}%
\pysigstopmultiline
Point source with reverberation 

\end{fulllineitems}

\index{visr::objectmodel::PointSourceExtent (C++ enumerator)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel17PointSourceExtentE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8ea8c040b13a46041ebf045bc6e3c1dac1d}}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PointSourceExtent}} = 6}%
\pysigstopmultiline
Point source with explicit spatial extent. 

\end{fulllineitems}

\index{visr::objectmodel::HoaSource (C++ enumerator)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel9HoaSourceE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8ea9f34d86245bdf0600b7ab4ffa915d3e2}}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{HoaSource}} = 7}%
\pysigstopmultiline
Higher Order Ambbisonics object, sound field representation based on spherical harmonics 

\end{fulllineitems}

\index{visr::objectmodel::ChannelObject (C++ enumerator)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel13ChannelObjectE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a0b4ad5d68f09e63c20a14aa9a3a98b8eafc586c10ae5c721872ccb5ca4e5b2617}}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{ChannelObject}} = 8}%
\pysigstopmultiline
Source type representing a single or multiple channels routed to a set of loudspeaker channels. 

\end{fulllineitems}


\end{fulllineitems}

\paragraph{Functions}
\index{visr::objectmodel::objectTypeToString (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel18objectTypeToStringE12ObjectTypeId}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1aca60a27427975fb4fe8340abbfdb347e}}\pysiglinewithargsret{std::string \sphinxbfcode{\sphinxupquote{const}} \&visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{objectTypeToString}}}{{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel12ObjectTypeIdE}]{\sphinxcrossref{ObjectTypeId}}} \sphinxstyleemphasis{type}}{}%
\pysigstopmultiline
Convert an object type id into its string representation \begin{description}
\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{type}}: 

\end{itemize}

\item[{\sphinxstylestrong{Exceptions}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{std::logic\_error}}: Happens only in case of an internal inconsistency, i.e., if the type is not found in the lookup table. 

\end{itemize}

\end{description}


\end{fulllineitems}

\index{visr::objectmodel::stringToObjectType (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel18stringToObjectTypeERNSt6stringE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1abdde6aab83b884b493da95ba37d903db}}\pysiglinewithargsret{{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel12ObjectTypeIdE}]{\sphinxcrossref{ObjectTypeId}}} visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{stringToObjectType}}}{std::string \sphinxbfcode{\sphinxupquote{const}} \&\sphinxstyleemphasis{typeString}}{}%
\pysigstopmultiline
\begin{description}
\item[{\sphinxstylestrong{Return}}] \leavevmode
The object id of the type correspoonding to the string representation 

\item[{\sphinxstylestrong{Parameters}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{typeString}}: 

\end{itemize}

\item[{\sphinxstylestrong{Exceptions}}] \leavevmode\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{std::invalid\_argument}}: If typeStr does not correspond to an existing object type. 

\end{itemize}

\end{description}


\end{fulllineitems}

\paragraph{Variables}
\index{visr::objectmodel::cInstantiationHelper (C++ member)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel20cInstantiationHelperE}}%
\pysigstartmultiline
\pysigline{\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1a014ba73753e84943ebda5b6127aa530f}}{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel24InstantiateObjectFactoryE}]{\sphinxcrossref{InstantiateObjectFactory}}} \sphinxbfcode{\sphinxupquote{const}} visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{cInstantiationHelper}}}%
\pysigstopmultiline
{\hyperref[\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_object}]{\sphinxcrossref{\DUrole{std,std-ref}{Object}}}} which is used to initialise the object factory. 

\end{fulllineitems}

\index{visr::objectmodel::InstantiateObjectFactory (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel24InstantiateObjectFactoryE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:structvisr_1_1objectmodel_1_1_instantiate_object_factory}}\pysigline{\sphinxbfcode{\sphinxupquote{struct }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{InstantiateObjectFactory}}}%
\pysigstopmultiline
A helper class with whole purpose is to register the different object types in the factory. 

\end{fulllineitems}

\index{visr::objectmodel::Object (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6ObjectE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_object}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{Object}}}%
\pysigstopmultiline~\sphinxstyleemphasis{\#include \textless{}object.hpp\textgreater{}}
Subclassed by visr::objectmodel::ChannelObject, visr::objectmodel::DiffuseSource, visr::objectmodel::HoaSource, visr::objectmodel::PlaneWave, {\hyperref[\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::objectmodel::PointSource}}}}

\end{fulllineitems}

\index{visr::objectmodel::ObjectParser (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel12ObjectParserE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_object_parser}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{ObjectParser}}}%
\pysigstopmultiline~\sphinxstyleemphasis{\#include \textless{}object\_parser.hpp\textgreater{}}


Subclassed by visr::objectmodel::ChannelObjectParser, visr::objectmodel::DiffuseSourceParser, visr::objectmodel::HoaSourceParser, visr::objectmodel::PlaneWaveParser, {\hyperref[\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source_parser}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::objectmodel::PointSourceParser}}}}

\end{fulllineitems}

\index{visr::objectmodel::ObjectVector (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel12ObjectVectorE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_object_vector}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{ObjectVector}}}%
\pysigstopmultiline~\sphinxstyleemphasis{\#include \textless{}object\_vector.hpp\textgreater{}}
A class representing a set of audio objects of potentially different types. 

Subclassed by visr::pml::ObjectVector

\end{fulllineitems}

\index{visr::objectmodel::PointSource (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel11PointSourceE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PointSource}} : \sphinxbfcode{\sphinxupquote{public}} visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6ObjectE}]{\sphinxcrossref{Object}}}}%
\pysigstopmultiline~\sphinxstyleemphasis{\#include \textless{}point\_source.hpp\textgreater{}}
Subclassed by {\hyperref[\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source_with_diffuseness}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::objectmodel::PointSourceWithDiffuseness}}}}, {\hyperref[\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source_with_reverb}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::objectmodel::PointSourceWithReverb}}}}

\end{fulllineitems}

\index{visr::objectmodel::PointSourceParser (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel17PointSourceParserE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source_parser}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PointSourceParser}} : \sphinxbfcode{\sphinxupquote{public}} visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel12ObjectParserE}]{\sphinxcrossref{ObjectParser}}}}%
\pysigstopmultiline~\sphinxstyleemphasis{\#include \textless{}point\_source\_parser.hpp\textgreater{}}
Subclassed by {\hyperref[\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source_with_diffuseness_parser}]{\sphinxcrossref{\DUrole{std,std-ref}{visr::objectmodel::PointSourceWithDiffusenessParser}}}}, visr::objectmodel::PointSourceWithReverbParser

\end{fulllineitems}

\index{visr::objectmodel::PointSourceWithDiffuseness (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel26PointSourceWithDiffusenessE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source_with_diffuseness}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PointSourceWithDiffuseness}} : \sphinxbfcode{\sphinxupquote{public}} visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel11PointSourceE}]{\sphinxcrossref{PointSource}}}}%
\pysigstopmultiline~\sphinxstyleemphasis{\#include \textless{}point\_source\_with\_diffuseness.hpp\textgreater{}}
Subclassed by visr::objectmodel::PointSourceExtent

\end{fulllineitems}

\index{visr::objectmodel::PointSourceWithDiffusenessParser (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel32PointSourceWithDiffusenessParserE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source_with_diffuseness_parser}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PointSourceWithDiffusenessParser}} : \sphinxbfcode{\sphinxupquote{public}} visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel17PointSourceParserE}]{\sphinxcrossref{PointSourceParser}}}}%
\pysigstopmultiline~\sphinxstyleemphasis{\#include \textless{}point\_source\_with\_diffuseness\_parser.hpp\textgreater{}}
Subclassed by visr::objectmodel::PointSourceExtentParser

\end{fulllineitems}

\index{visr::objectmodel::PointSourceWithReverb (C++ class)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel21PointSourceWithReverbE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source_with_reverb}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{PointSourceWithReverb}} : \sphinxbfcode{\sphinxupquote{public}} visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel11PointSourceE}]{\sphinxcrossref{PointSource}}}}%
\pysigstopmultiline~\sphinxstyleemphasis{\#include \textless{}point\_source\_with\_reverb.hpp\textgreater{}}
Audio object representing a monopole point source with corresponding object-based reverberation. Derived from {\hyperref[\detokenize{objectmodel_library:classvisr_1_1objectmodel_1_1_point_source}]{\sphinxcrossref{\DUrole{std,std-ref}{PointSource}}}}. 

\end{fulllineitems}

\index{visr::objectmodel::python (C++ type)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python}}\pysigline{\sphinxbfcode{\sphinxupquote{namespace }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{python}}}%
\pysigstopmultiline~\paragraph{Functions}
\index{visr::objectmodel::python::exportChannelObject (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python19exportChannelObjectERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1a70c9ebf39652b25383a78f62e465e58b}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportChannelObject}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportDiffuseSource (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python19exportDiffuseSourceERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1a8d36d947fd09fc245520884c08884c74}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportDiffuseSource}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportHoaSource (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python15exportHoaSourceERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1a6da7725ed42ab983e8a783f79bd47716}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportHoaSource}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportObject (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python12exportObjectERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1a234ea98546ed436be5a7159c127bef3f}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportObject}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportObjectType (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python16exportObjectTypeERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1af70936bdc58d1a059eccf00f0363d73a}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportObjectType}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportObjectVector (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python18exportObjectVectorERN2py6moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1a817a09ec0afc4c371c9a7ef839a50c3b}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportObjectVector}}}{py::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportObjectVector (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python18exportObjectVectorERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1aba85370934642aa2e38ee12e68521a25}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportObjectVector}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportPointSource (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python17exportPointSourceERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1ae51964ea5bffb528d5d8a6d57b94b435}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportPointSource}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportPointSourceExtent (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python23exportPointSourceExtentERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1a1c707ee6b85b3e556881d58bdc446daa}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportPointSourceExtent}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportPointSourceWithDiffuseness (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python32exportPointSourceWithDiffusenessERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1a30c78e75e3b45a3b817deb4f59092a6a}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportPointSourceWithDiffuseness}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportPointSourceWithReverb (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python27exportPointSourceWithReverbERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1a212e7b727fde671cd8d212fd37b28617}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportPointSourceWithReverb}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::python::exportPlaneWave (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6python15exportPlaneWaveERN8pybind116moduleE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1python_1a4f0f45953f65c4f96c03b6147d35f928}}\pysiglinewithargsret{void visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel6pythonE}]{\sphinxcrossref{python}}}\sphinxbfcode{\sphinxupquote{exportPlaneWave}}}{pybind11::module \&\sphinxstyleemphasis{m}}{}%
\pysigstopmultiline
\end{fulllineitems}


\end{fulllineitems}

\index{visr::objectmodel::test (C++ type)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test}}\pysigline{\sphinxbfcode{\sphinxupquote{namespace }}visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}\sphinxbfcode{\sphinxupquote{test}}}%
\pysigstopmultiline~\paragraph{Functions}
\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE16ParsePointSource}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1acb3dbd0002f5f0ba65046c33d25a7cb1}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{ParsePointSource}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE14ParsePlaneWave}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1aea196cba3db6a055e8dd44bc4fd241e7}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{ParsePlaneWave}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE25UpdateSceneSameIdSameType}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a6d094176be58dd9e289db190a83e9e0b}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{UpdateSceneSameIdSameType}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE30UpdateSceneSameIdDifferentType}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a1a24efd254b5f9ea3639cd07d3da7575}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{UpdateSceneSameIdDifferentType}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE23ParseMultiChannelObject}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a92eb0a0d36b4641e5d674ca0aecb19ef}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{ParseMultiChannelObject}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE13ParseObjectEq}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a981cbebdac9030f968571f624f01c966}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{ParseObjectEq}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE16ReencodeObjectEq}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a854b1e76bda2d33173ef8651ab0d1bab}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{ReencodeObjectEq}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE18ParseChannelObject}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a8a27e86995dbc6eebb858784eff1d852}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{ParseChannelObject}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE18WriteChannelObject}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a7f54309fd39dacdeab37b3891ab94e75}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{WriteChannelObject}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE23InstantiatePointSources}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a63892e8af5f68997a531313c5a7919ce}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{InstantiatePointSources}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE18ObjectVectorAssign}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a0bfce97d74706473e1bde4692c8268b0}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{ObjectVectorAssign}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE26ParsePointSourceWithReverb}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a5e4df077fb498713eccf29a6a9aafea7}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{ParsePointSourceWithReverb}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE30SerialisePointSourceWithReverb}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a83646c547b552283430a2d8dc2861c11}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{SerialisePointSourceWithReverb}{}%
\pysigstopmultiline
\end{fulllineitems}

\index{visr::objectmodel::test::BOOST\_AUTO\_TEST\_CASE (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4test20BOOST_AUTO_TEST_CASEE19InstantiateRenderer}}%
\pysigstartmultiline
\phantomsection\label{\detokenize{objectmodel_library:namespacevisr_1_1objectmodel_1_1test_1a5853c16b3ec14625b41113b8c13eed0b}}\pysiglinewithargsret{visr::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodelE}]{\sphinxcrossref{objectmodel}}}::{\hyperref[\detokenize{objectmodel_library:_CPPv3N4visr11objectmodel4testE}]{\sphinxcrossref{test}}}\sphinxbfcode{\sphinxupquote{BOOST\_AUTO\_TEST\_CASE}}}{InstantiateRenderer}{}%
\pysigstopmultiline
\end{fulllineitems}


\end{fulllineitems}


\end{fulllineitems}



\section{Elementary functions Library}
\label{\detokenize{elementary_functions_library::doc}}\label{\detokenize{elementary_functions_library:elementary-functions-library}}

\subsection{Purpose}
\label{\detokenize{elementary_functions_library:purpose}}
The \sphinxstylestrong{efl} library provides a common interface for arithmetic functions commonly used in DSP.
These are mainly vector and matrix arithmethic functions.
These


\subsection{Numeric container classes}
\label{\detokenize{elementary_functions_library:numeric-container-classes}}

\subsection{Arithmetic functions}
\label{\detokenize{elementary_functions_library:arithmetic-functions}}\index{visr::efl::vectorCopy (C++ function)}

\begin{fulllineitems}
\phantomsection\label{\detokenize{elementary_functions_library:_CPPv3N4visr3efl10vectorCopyEPC1TPC1TNSt6size_tENSt6size_tE}}%
\pysigstartmultiline
\pysigline{\sphinxbfcode{\sphinxupquote{template }}\textless{}\sphinxbfcode{\sphinxupquote{typename}} T\textgreater{}}\phantomsection\label{\detokenize{elementary_functions_library:namespacevisr_1_1efl_1aa8ae253373a05142dc089f08b77c63c6}}\pysiglinewithargsret{ErrorCode visr::efl\sphinxcode{\sphinxupquote{::}}\sphinxbfcode{\sphinxupquote{vectorCopy}}}{T \sphinxbfcode{\sphinxupquote{const}} *\sphinxbfcode{\sphinxupquote{const}} \sphinxstyleemphasis{source}, T *\sphinxbfcode{\sphinxupquote{const}} \sphinxstyleemphasis{dest}, std::size\_t \sphinxstyleemphasis{numElements}, std::size\_t \sphinxstyleemphasis{alignment}}{}%
\pysigstopmultiline
\end{fulllineitems}




\renewcommand{\indexname}{Index}
\printindex
\end{document}