You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arts/flow/gsl/gsldefs.h

135 lines
3.8 KiB

/* GSL - Generic Sound Layer
* Copyright (C) 2001 Stefan Westerfeld and Tim Janik
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef __GSL_DEFS_H__
#define __GSL_DEFS_H__
/* configure checks */
#include <gsl/gslconfig.h>
#include <glib.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* --- forward decls --- */
typedef struct _GslMagic GslMagic;
typedef struct _GslClass GslClass;
typedef struct _GslComplex GslComplex;
typedef struct _GslDataCache GslDataCache;
typedef struct _GslDataHandle GslDataHandle;
typedef struct _GslDataHandleFuncs GslDataHandleFuncs;
typedef struct _GslGlueContext GslGlueContext;
typedef struct _GslJob GslJob;
typedef struct _GslModule GslModule;
typedef struct _GslIStream GslIStream;
typedef struct _GslJStream GslJStream;
typedef struct _GslLoader GslLoader;
typedef struct _GslOStream GslOStream;
typedef struct _GslThread GslThread;
typedef struct _GslTrans GslTrans;
typedef struct _GslWaveChunk GslWaveChunk;
typedef struct _GslWaveChunkBlock GslWaveChunkBlock;
typedef struct _GslRecMutex GslRecMutex;
typedef struct _GslRing GslRing;
typedef union _GslCond GslCond;
typedef union _GslMutex GslMutex;
/* ssize_t/off_t type used within Gsl */
typedef glong GslLong;
#define GSL_MAXLONG G_MAXLONG
/* --- GSL errors --- */
typedef enum /*< skip >*/
{
GSL_ERROR_NONE,
GSL_ERROR_INTERNAL,
GSL_ERROR_UNKNOWN,
/* I/O errors */
GSL_ERROR_IO,
GSL_ERROR_PERMS,
GSL_ERROR_BUSY,
GSL_ERROR_EXISTS,
GSL_ERROR_TEMP,
GSL_ERROR_EOF,
#define GSL_ERROR_FILE_EMPTY GSL_ERROR_EOF
GSL_ERROR_NOT_FOUND,
GSL_ERROR_OPEN_FAILED,
GSL_ERROR_SEEK_FAILED,
GSL_ERROR_READ_FAILED,
GSL_ERROR_WRITE_FAILED,
/* content errors */
GSL_ERROR_FORMAT_INVALID,
GSL_ERROR_FORMAT_UNKNOWN,
GSL_ERROR_DATA_CORRUPT,
GSL_ERROR_CONTENT_GLITCH,
/* miscellaneous errors */
GSL_ERROR_NO_RESOURCE,
GSL_ERROR_CODEC_FAILURE,
GSL_ERROR_LAST /* administrative */
} GslErrorType;
/* --- functions --- */
typedef void (*GslAccessFunc) (GslModule *module,
gpointer data);
typedef void (*GslFreeFunc) (gpointer data);
typedef void (*GslModuleFreeFunc) (gpointer data,
const GslClass *klass);
#if defined (BSE_COMPILATION) || defined (BSE_PLUGIN_FALLBACK) \
|| (GSL_USE_GSL_GLIB) || defined (GSL_EXTENSIONS)
# define if_expect(cond) if (GSL_GCC_EXPECT (cond))
# define if_reject(cond) if (GSL_GCC_REJECT (cond))
#endif
/* --- implementation details --- */
#define GSL_ENGINE_MAX_POLLFDS (128)
union _GslCond
{
gpointer cond_pointer;
guint8 cond_dummy[MAX (8, GSL_SIZEOF_PTH_COND_T)];
};
union _GslMutex
{
gpointer mutex_pointer;
guint8 mutex_dummy[MAX (8, GSL_SIZEOF_PTH_MUTEX_T)];
};
struct _GslRecMutex
{
GslMutex sync_mutex;
gpointer owner;
guint depth;
};
#if __GNUC__ >= 3 && defined __OPTIMIZE__
# define GSL_GCC_EXPECT(cond) (__builtin_expect ((cond) != 0, 1))
# define GSL_GCC_REJECT(cond) (__builtin_expect ((cond) != 0, 0))
#else
# define GSL_GCC_EXPECT(cond) cond
# define GSL_GCC_REJECT(cond) cond
#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __GSL_DEFS_H__ */