1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-11 14:41:06 +02:00
2010-01-24 09:19:39 +00:00

195 lines
4.0 KiB
C

/******************************************************************
* modified JCD 27 Apr-88 for AMIGA
* cext.h -- extensions to c to make it more portable
* Copyright 1989 Carnegie Mellon University
*
*******************************************************************
cext must provide the following definitions:
true -- a constant
false -- a boolean constant
private -- defined as static, used to declare local functions
public -- defined as empty string, used to declare exported functions
boolean -- a new type
byte -- unsigned 8-bit quantity
ushort -- unsigned 16-bit quantity
ulong -- unsigned 32-bit quantity
Pointer -- pointer to char, a generic pointer
ABS() -- absolute value of any type of number
MAX() -- maximum of two numbers
MIN() -- minimum of two numbers
ROUND() -- round a double to long
NULL -- pointer to nothing, a constant
EOS -- end of string, a constant '\0'
MALLOC(x) -- allocates x bytes
FREE(x) -- frees something from MALLOC
AVAILMEM -- tells how much memory is available.
(N.B.: no parens, no args.)
EXIT(n) -- calls exit(n) after shutting down/deallocating resources
*****************************************************************************/
/* CHANGE LOG
* --------------------------------------------------------------------
* 28Apr03 dm many changes for new conditional compilation switches
* 28Apr03 rbd removed macro redefinitions: min, max
*/
#ifndef CEXT_H
#ifndef SWITCHES
#include "switches.h"
#endif
#include <stdio.h>
#include <string.h>
#include <math.h>
#if HAS_STDLIB_H
#include <stdlib.h>
#endif
#if HAS_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAS_MALLOC_H
#include <malloc.h>
#endif
#if NEED_ULONG
typedef unsigned long ulong;
#endif
#if NEED_USHORT
typedef unsigned long ushort;
#endif
#if NEED_BYTE
typedef unsigned char byte;
#endif
/* There's a name conflict between true/false as an enum type in
* Apple #includes:Types.h on the Mac, and true/false as #defined below
*/
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#define private static
#define public
#if NEED_DEFINE_MALLOC
public void *malloc();
#endif
typedef char *Pointer;
#ifdef UNIX_MACH
typedef int boolean;
#else
/* hopefully, unsigned short will save sign extension instructions */
typedef unsigned char boolean;
#endif
#ifndef ABS
#define ABS(a) (((a) > 0) ? (a) : -(a))
#endif
#ifndef MAX
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef MIN
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#endif
#define MAXULONG 0xffffffff
#ifndef NULL
#define NULL 0L
#endif
#ifndef EOS
#define EOS '\0'
#endif
#define SAFETYBUF 10 /* Safety buffer when allocating memory */
#define BIGGEST_BLOCK 32765 /* Should find a happy medium for this */
#ifdef MACINTOSH /*DMH: gets AVAILMEM in record.c*/
#include <stddef.h>
#define MALLOC(x) malloc((size_t)(x)) /*DMH: size_t is ulong, for MAC*/
#define FREE(x) free((char *)(x))
#define AVAILMEM MyMaxMem(NULL)/*???*/
#endif
#ifdef LATTICE322
#define MALLOC malloc
#define FREE free
#define AVAILMEM MyMaxMem(NULL)
#else
#ifdef DOS /* was MICROSOFT */
#define MALLOC malloc
#define FREE free
#define AVAILMEM MyMaxMem(NULL)
#endif
#endif
#ifdef UNIX
#define MALLOC malloc
#define FREE free
#define AVAILMEM 10000000 /* since we have virtual memory, assume 10Mb */
#endif
#ifdef AMIGA
#define MALLOC malloc
#define FREE free
#define AVAILMEM 128000
#endif
public ulong MyMaxMem(ushort *);
#ifndef MEM
#include "mem.h"
#endif
#ifndef CLEANUP
#include "cleanup.h"
#endif
#ifdef CMTSTUFF
#define EXIT cmt_exit
public void EXIT(int);
/* don't allow anyone to call exit directly */
#define exit(n) PLEASE_CALL_EXIT_NOT_exit
#else
#define EXIT(n) exit(n)
#endif
#define _cext
#ifndef MALLOC
MALLOC is not defined!
#endif
#define ROUND(x) ((long) ((x) + 0.5))
/* for compatibility */
#ifdef NEED_ROUND
#define round ROUND
#endif
#ifndef min
#define min MIN
#define max MAX
#endif
#define CEXT_H
#endif