summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/portaudio/bindings/cpp/include/portaudiocpp/HostApi.hxx
blob: 5020793b9a2f51a6a35bce40e8fcfedee5f133dd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#ifndef INCLUDED_PORTAUDIO_HOSTAPI_HXX
#define INCLUDED_PORTAUDIO_HOSTAPI_HXX

// ---------------------------------------------------------------------------------------

#include "portaudio.h"

#include "portaudiocpp/System.hxx"

// ---------------------------------------------------------------------------------------

// Forward declaration(s):
namespace portaudio
{
    class Device;
}

// ---------------------------------------------------------------------------------------

// Declaration(s):
namespace portaudio
{


    //////
    /// @brief HostApi represents a host API (usually type of driver) in the System.
    ///
    /// A single System can support multiple HostApi's each one typically having
    /// a set of Devices using that HostApi (usually driver type). All Devices in
    /// the HostApi can be enumerated and the default input/output Device for this
    /// HostApi can be retrieved.
    //////
    class HostApi
    {
    public:
        typedef System::DeviceIterator DeviceIterator;

        // query info: id, name, numDevices
        PaHostApiTypeId typeId() const;
        PaHostApiIndex index() const;
        const char *name() const;
        int deviceCount() const;

        // iterate devices
        DeviceIterator devicesBegin();
        DeviceIterator devicesEnd();

        // default devices
        Device &defaultInputDevice() const;
        Device &defaultOutputDevice() const;

        // comparison operators
        bool operator==(const HostApi &rhs) const;
        bool operator!=(const HostApi &rhs) const;

    private:
        const PaHostApiInfo *info_;
        Device **devices_;

    private:
        friend class System;

        explicit HostApi(PaHostApiIndex index);
        ~HostApi();

        HostApi(const HostApi &); // non-copyable
        HostApi &operator=(const HostApi &); // non-copyable
    };


}

// ---------------------------------------------------------------------------------------

#endif // INCLUDED_PORTAUDIO_HOSTAPI_HXX