aboutsummaryrefslogtreecommitdiff
path: root/lib/timidity/libunimod/unimod_priv.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/timidity/libunimod/unimod_priv.h')
-rw-r--r--lib/timidity/libunimod/unimod_priv.h161
1 files changed, 161 insertions, 0 deletions
diff --git a/lib/timidity/libunimod/unimod_priv.h b/lib/timidity/libunimod/unimod_priv.h
new file mode 100644
index 0000000000..d22ed6b129
--- /dev/null
+++ b/lib/timidity/libunimod/unimod_priv.h
@@ -0,0 +1,161 @@
+/* MikMod sound library
+ (c) 1998, 1999 Miodrag Vallat and others - see file AUTHORS for
+ complete list.
+
+ This library is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This program 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 Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+ */
+
+/*==============================================================================
+
+ $Id: unimod_priv.h,v 1.23 1999/10/25 16:31:41 miod Exp $
+
+ MikMod sound library internal definitions
+
+==============================================================================*/
+
+#ifndef _UNIMOD_PRIV_H
+#define _UNIMOD_PRIV_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(HAVE_MALLOC_H) && !defined(_MSC_VER) && !defined(__BORLANDC__) && !defined(__WATCOMC__)
+#include <malloc.h>
+#endif
+#include <stdarg.h>
+#if defined(__OS2__)||defined(__EMX__)||defined(__W32__)
+#ifndef strcasecmp
+#define strcasecmp(s,t) stricmp(s,t)
+#endif
+#endif
+
+#include "unimod.h"
+#include "url.h"
+
+#ifdef __W32__
+#pragma warning(disable:4761)
+#endif
+
+/*========== Error handling */
+
+#define _mm_errno ML_errno
+
+/*========== Memory allocation */
+
+extern void *_mm_malloc (size_t);
+extern void *_mm_calloc (size_t, size_t);
+#define _mm_free(p) do { if (p) free(p); p = NULL; } while(0)
+
+/*========== Portable file I/O */
+
+#define _mm_read_SBYTE(x) ((SBYTE)url_getc(x))
+#define _mm_read_UBYTE(x) ((UBYTE)url_getc(x))
+#define _mm_read_SBYTES(x,y,z) url_nread(z,(void *)x,y)
+#define _mm_read_UBYTES(x,y,z) url_nread(z,(void *)x,y)
+#define _mm_fseek(x,y,z) url_seek(x,y,z)
+#define _mm_ftell(x) url_tell(x)
+#define _mm_eof(x) url_eof(x)
+#define _mm_rewind(x) _mm_fseek(x,0,SEEK_SET)
+
+extern int _mm_read_string (CHAR *, int, URL);
+
+extern SWORD _mm_read_M_SWORD (URL);
+extern SWORD _mm_read_I_SWORD (URL);
+extern UWORD _mm_read_M_UWORD (URL);
+extern UWORD _mm_read_I_UWORD (URL);
+
+extern SLONG _mm_read_M_SLONG (URL);
+extern SLONG _mm_read_I_SLONG (URL);
+extern ULONG _mm_read_M_ULONG (URL);
+extern ULONG _mm_read_I_ULONG (URL);
+
+extern int _mm_read_M_SWORDS (SWORD *, int, URL);
+extern int _mm_read_I_SWORDS (SWORD *, int, URL);
+extern int _mm_read_M_UWORDS (UWORD *, int, URL);
+extern int _mm_read_I_UWORDS (UWORD *, int, URL);
+
+extern int _mm_read_M_SLONGS (SLONG *, int, URL);
+extern int _mm_read_I_SLONGS (SLONG *, int, URL);
+extern int _mm_read_M_ULONGS (ULONG *, int, URL);
+extern int _mm_read_I_ULONGS (ULONG *, int, URL);
+
+
+/*========== Loaders */
+
+typedef struct MLOADER
+{
+ struct MLOADER *next;
+ CHAR *type;
+ CHAR *version;
+ BOOL (*Init) (void);
+ BOOL (*Test) (void);
+ BOOL (*Load) (BOOL);
+ void (*Cleanup) (void);
+ CHAR *(*LoadTitle) (void);
+}
+MLOADER;
+
+/* internal loader variables: */
+extern URL modreader;
+extern UWORD finetune[16];
+extern MODULE of; /* static unimod loading space */
+
+extern SBYTE remap[64]; /* for removing empty channels */
+extern UBYTE *poslookup; /* lookup table for pattern jumps after
+ blank pattern removal */
+extern UBYTE poslookupcnt;
+extern UWORD *origpositions;
+
+extern BOOL filters; /* resonant filters in use */
+extern UBYTE activemacro; /* active midi macro number for Sxx */
+extern UBYTE filtermacros[16]; /* midi macros settings */
+extern FILTER filtersettings[256]; /* computed filter settings */
+
+extern int *noteindex;
+
+/* tracker identifiers */
+#define STM_NTRACKERS 3
+extern CHAR *STM_Signatures[];
+extern CHAR *STM_Version[];
+
+
+/*========== Internal loader interface */
+
+extern BOOL ReadComment (UWORD);
+extern BOOL ReadLinedComment (UWORD, UWORD);
+extern BOOL AllocPositions (int);
+extern BOOL AllocPatterns (void);
+extern BOOL AllocTracks (void);
+extern BOOL AllocInstruments (void);
+extern BOOL AllocSamples (void);
+extern CHAR *DupStr (CHAR *, UWORD, BOOL);
+
+/* loader utility functions */
+extern int *AllocLinear (void);
+extern void FreeLinear (void);
+extern int speed_to_finetune (ULONG, int);
+extern void S3MIT_ProcessCmd (UBYTE, UBYTE, BOOL);
+extern void S3MIT_CreateOrders (BOOL);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/* ex:set ts=4: */