# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.2
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

"""
This documentation was automatically generated using original comments in
Doxygen format. As some C types and data structures cannot be directly mapped
into Python types, some non-trivial type conversion could have place.
Basically a type is replaced with another one that has the closest match, and
sometimes one argument of generated function comprises several arguments of the
original function (usually two).

Functions having error code as the return value and returning effective
value in one of its arguments are transformed so that the effective value is
returned in a regular fashion and run-time exception is being thrown in case of
negative error code.
"""

from sys import version_info as _swig_python_version_info
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")

# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _ad_pulse
else:
    import _ad_pulse

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


class Ad(object):
    r"""Proxy of C Ad struct."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, audio_device=None, sampling_rate=16000):
        r"""__init__(Ad self, char const * audio_device=None, int sampling_rate=16000) -> Ad"""
        _ad_pulse.Ad_swiginit(self, _ad_pulse.new_Ad(audio_device, sampling_rate))
    __swig_destroy__ = _ad_pulse.delete_Ad

    def __enter__(self):
        r"""__enter__(Ad self) -> Ad"""
        return _ad_pulse.Ad___enter__(self)

    def __exit__(self, exception_type, exception_value, exception_traceback):
        r"""__exit__(Ad self, PyObject * exception_type, PyObject * exception_value, PyObject * exception_traceback)"""
        return _ad_pulse.Ad___exit__(self, exception_type, exception_value, exception_traceback)

    def start_recording(self):
        r"""start_recording(Ad self) -> int"""
        return _ad_pulse.Ad_start_recording(self)

    def stop_recording(self):
        r"""stop_recording(Ad self) -> int"""
        return _ad_pulse.Ad_stop_recording(self)

    def readinto(self, DATA):
        r"""readinto(Ad self, char * DATA) -> int"""
        return _ad_pulse.Ad_readinto(self, DATA)

# Register Ad in _ad_pulse:
_ad_pulse.Ad_swigregister(Ad)



