/*
$Id: dspwrap.h,v 1.4 2005/05/27 09:52:25 leighsmith Exp $
Defined In: The MusicKit
Description:
The following is the UnitGenerator's interface with the MC56001. You
never need to deal with these structures. They are generated automatically
by the utility dspwrap.
Copyright 1988-1992, NeXT Inc. All rights reserved.
Portions Copyright 1999-2005 The MusicKit Project.
*/
#ifndef __MK_dspwrap_H___
#define __MK_dspwrap_H___
/*!
@brief The <b>MKMasterUGStruct</b> struct represents the DSP statistics of a
"master" MKUnitGenerator class. That is, it contains all the
information common to the subclasses. Its fields should not be altered.
Their meaning is as follows:
*/
typedef struct _MKMasterUGStruct {
/*! Number of memory arguments. */
unsigned argCount;
/*! Number of symbols loaded in each space. Needed for symbols that are not args.*/
int symCount[DSP_LC_NUM];
/*! Number of fixups in each P space.*/
int fixupCount[DSP_LC_NUM_P];
/*! Symbol list for each DSP location counter.*/
DSPSymbol *symbols[DSP_LC_NUM];
/*! Array of symbols corresponding to memory arguments.*/
DSPSymbol *argSymbols;
/*! Reserved.*/
void *reserved;
} MKMasterUGStruct;
/*!
@brief The <b>MKLeafUGStruct</b> struct represents the DSP statistics of a
"leaf" MKUnitGenerator class. That is, it contains the information
specific to a particular memory space combination. Its fields should
not be altered. Their meaning is as follows:
*/
typedef struct _MKLeafUGStruct {
/*! Memory and computation resources needed by this unit generator. */
MKOrchMemStruct reso;
/*! Time for this unit generator to compute one sample, in seconds, when
unit generator is on chip. */
double computeTime;
/*! Array of lists of idle patches, indexed by dsp number. */
id **availLists;
/*! Sorted absolute data records. */
DSPDataRecord *data[DSP_LC_NUM];
/*! Fix-up array for each P space. */
DSPFixup *fixups[DSP_LC_NUM_P];
/*! Array which tells which space each argument points to. If the argument
is not address-valued, the array value here is <b>DSP_MS_N</b>. */
DSPMemorySpace *argSpaces;
/*! Pointer to corresponding MKMasterUGStruct. */
MKMasterUGStruct *master;
/*! Reserved */
int reserved1;
/*! Compute time when unit generator is off chip. */
double offChipComputeTime;
/*! Reserved */
void *reserved2;
} MKLeafUGStruct;
extern void MKInitUnitGeneratorClass(MKLeafUGStruct *classInfo);
/* Unit Generator initialization (used in files generated by dspwrap). */
#define MK_2COMPUTETIMES 0x322e30 /* This is a magic number that signals
we have 2 compute times, one for
on-chip and one for off-chip. This
feature is supported in the release 2.0
dspwrap */
#endif