/usr/include/drumstick/drumstickcommon.h is in libdrumstick-dev 0.5.0-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | /*
MIDI Sequencer C++ library
Copyright (C) 2006-2010, Pedro Lopez-Cabanillas <plcl@users.sf.net>
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef DRUMSTICK_DRUMSTICKCOMMON_H
#define DRUMSTICK_DRUMSTICKCOMMON_H
#include "macros.h"
#include <qglobal.h>
#include <QString>
#include <QApplication>
#include <QtDebug>
extern "C" {
#include <alsa/asoundlib.h>
}
/**
* @file drumstickcommon.h
* Common functionality
* @defgroup Common Common Functionality
* @{
* drumstick::SequencerError is a common exception object, encapsulating ALSA error codes.
*/
namespace drumstick {
/**
* 8-bit unsigned number to be used as a MIDI message parameter
*/
typedef quint8 MidiByte;
/**
* Class used to report errors from the ALSA sequencer.
*
* The class SequencerError represents an exception object reported when the
* ALSA library returns an error code. It is only used for severe errors.
*/
class DRUMSTICK_EXPORT SequencerError
{
public:
/**
* Constructor
* @param s Error location
* @param rc Numeric error code
*/
SequencerError(QString const& s, int rc) :
m_location(s), m_errCode(rc) {}
/**
* Destructor
*/
virtual ~SequencerError() {}
/**
* Gets the human readable error message from the error code
* @return Error message
*/
const QString qstrError() const
{
return QString(snd_strerror(m_errCode));
}
/**
* Gets the numeric error code
* @return Error code
*/
int code() const
{
return m_errCode;
}
/**
* Gets the location of the error code as provided in the constructor
* @return Error location
*/
const QString& location() const
{
return m_location;
}
private:
QString m_location;
int m_errCode;
};
/**
* Checks the error code for severe errors.
* If the provided error code is less than zero an exception is thrown,
* containing both the error code and the location.
* @param rc Error code
* @param where Location
* @return Error code
*/
inline int checkErrorAndThrow(int rc, const char *where)
{
if (rc < 0) {
qDebug() << "Error code:" << rc << "(" << snd_strerror(rc) << ")";
qDebug() << "Location:" << where;
throw SequencerError(QString(where), rc);
}
return rc;
}
/**
* Check the error code for warning errors.
* This method doesn't throw an exception.
* @param rc Error code
* @param where Location
* @return Error code
*/
inline int checkWarning(int rc, const char *where)
{
if (rc < 0) {
qWarning() << "Exception code:" << rc << "(" << snd_strerror(rc) << ")";
qWarning() << "Location:" << where;
}
return rc;
}
/**
* This macro calls the check error function.
* @param x Error code
*/
#define CHECK_ERROR(x) (checkErrorAndThrow((x),__PRETTY_FUNCTION__))
/**
* This macro calls the check warning function.
* @param x Error code
*/
#define CHECK_WARNING(x) (checkWarning((x),__PRETTY_FUNCTION__))
/**
* ALSA library version as a constant string.
*
* This string corresponds to the compilation library, which may be
* different to the runtime library.
* @see getRuntimeALSALibraryVersion
*/
const QString LIBRARY_VERSION(SND_LIB_VERSION_STR);
} /* namespace drumstick */
/** @} */
#endif /*DRUMSTICK_DRUMSTICKCOMMON_H*/
|