/*
 * Copyright 1988, 1989, 1990, 1991 Massachusetts Institute of Technology
 */
#ifndef Seamless_Structures
#define Seamless_Structures

#ifndef G_Download
#define G_Download 14
#endif /* G_Download */
#ifndef G_PlayList
#define G_PlayList  15
#endif /* G_PlayList */
#ifndef G_FreeList
#define G_FreeList 29
#endif /* G_FreeList */


typedef struct _clip {
	int frame;
	int volume, resource;
	char *volumename;
	int in,out,speed;
	struct _clip *next;
} Clip;

#define ClipFrame(c) c->frame
#define ClipVolume(c) c->volume
#define ClipVolumeName(c) c->volumename
#define ClipResource(c) c->resource
#define ClipInPoint(c) c->in
#define ClipOutPoint(c) c->out
#define ClipSpeed(c) c->speed
#define ClipNext(c) c->next

typedef struct _swtch {
	int frame;
	Clip *in, *out;
	int mask, type, type_parm;
	struct _swtch *next;
} Swtch;

#define SwitchFrame(s) s->frame
#define SwitchInClip(s) s->in
#define SwitchOutClip(s) s->out
#define SwitchMask(s) s->mask
#define SwitchType(s) s->type
#define SwitchTypeParm(s) s->type_parm
#define SwitchNext(s) s->next

typedef struct _list {
	int key;
        int numClips, numSwitches;
	Clip *clips;
	Swtch *switches;	
} List;

#define ListClips(l) l->clips
#define ListSwitches(l) l->switches
#define ListNumClips(l) l->numClips
#define ListNumSwitches(l) l->numSwitches
#define ListServerNumber(l) l->key
#define ListOwner(l) l->key

extern List *SeamlessCreateList();
extern Clip *SeamlessCreateClip(), *SeamlessTopClip(), *SeamlessFindClip();
extern Swtch *SeamlessCreateSwitch();
extern void SeamlessLength();

#endif
