/* Header for module mtxline, generated by p2c 1.21alpha-07.Dec.93 */
#ifndef MTXLINE_H
#define MTXLINE_H


/* Break input up into words, classify them.  Supply words and
   information about them. */

#ifndef GLOBALS_H
#include "globals.h"
#endif


#ifdef MTXLINE_G
# define vextern
#else
# define vextern extern
#endif


typedef enum {
  other, abcdefg, zword, lyrtag, lparen, rparen, rlparen, lbrac, rbrac,
  pmxprefix, pmxl, macro, endmacro, mword, oword, rword, nextvoice, barword,
  texword, atword, FirstOnly, err
} music_word;


extern boolean bind_left[22];

/* changed bind_left[barword] to false */

vextern boolean selected[maxvoices];


extern void error3(voice_index voice, Char *message);
extern void warning3(voice_index voice, Char *message);
extern void getNextMusWord(Char *buf, Char *note, music_word *nscan);
extern Char *MusicWord(Char *Result, short voice, short n);
extern Char *nextMusicWord(Char *Result, voice_index voice);
extern music_word thisNote(voice_index voice);
extern music_word nextNote(voice_index voice);
extern Char *getMusicWord(Char *Result, voice_index voice);
extern void gotoBar(voice_index voice, short bar_no);
extern boolean endOfBar(voice_index voice, short bar_no);
extern Char *getBar(Char *Result, voice_index voice, short bar);
extern boolean upper(voice_index voice);
extern void clearLabels(void);
extern voice_index0 findVoice(Char *w);
extern void selectVoices(Char *line);
extern void resetInfo(voice_index voice, Char *buf);
extern void setVocal(voice_index voice, boolean voc);
extern boolean isVocal(voice_index voice);
extern void setStavePos(voice_index voice, stave_index stave, stave_index pos);
extern stave_index voiceStave(voice_index voice);
extern stave_index voicePos(voice_index voice);
extern boolean aloneOnStave(stave_index stave);
extern voice_index companion(voice_index voice);
extern void appendNote(voice_index voice, music_word nscan);
extern void appendToLine(voice_index voice, Char *note);
extern void markBar(voice_index voice);
extern short numberOfBars(voice_index voice);
extern void barForward(voice_index voice, short nbars);
extern void regroup(voice_index voice);

extern short beatsPerLine(void);
extern void setExtraLength(voice_index voice, short ext);
extern short ExtraLength(voice_index voice);
extern paragraph_index0 musicLineNo(voice_index voice);
extern void setMusicLineNo(voice_index voice, paragraph_index lno);
extern paragraph_index0 chordLineNo(voice_index voice);
extern void setChordLineNo(voice_index voice, paragraph_index lno);
extern void skipChordBar(voice_index voice);

extern void describeVoice(voice_index voice, Char *describe_lyr);
extern boolean maybeMusicLine(Char *l);
extern Char *musicLine(Char *Result, voice_index voice);


#undef vextern

#endif /*MTXLINE_H*/

/* End. */
