1 /* Header for module globals, generated by p2c 1.21alpha-07.Dec.93 */
2 #ifndef GLOBALS_H
3 #define GLOBALS_H
4 
5 
6 #ifdef GLOBALS_G
7 # define vextern
8 #else
9 # define vextern extern
10 #endif
11 
12 
13 /* 1. All global variables.
14    2. Miscellaneous other procedures required by several Units.
15 */
16 
17 /* CMO: addition/change by Christian Mondrup */
18 
19 
20 #define PMXlinelength   128
21 /* !!! One or more of the following constants should be reduced if this
22    program is to be compiled by a 16-bit compiler (e.g. Turbo Pascal),
23    otherwise you get a "Data segment too large" error */
24 #define lines_in_paragraph  100
25 #define max_words       128
26 #define max_notes       128
27 /* Christian Mondrup's suggestion to reduce data segment size:
28       lines_in_paragraph = 50;
29       max_words = 64;
30       max_notes = 64;
31 */
32 #define max_bars        16
33 #define maxstaves       15
34 #define maxvoices       15
35 #define maxgroups       3
36 #define standardPMXvoices  12
37 
38 #define max_lyrics_line_length  (PMXlinelength - 4)
39 
40 #define inf             32000
41 #define unspec          1000
42 #define default_size    20
43 
44 #define start_beam      '['
45 #define stop_beam       ']'
46 #define rest            'r'
47 
48 #define pause           "rp"
49 
50 #define dotcode         'd'
51 #define grace_group     'G'
52 #define multi_group     'x'
53 #define barsym          '|'
54 #define comment         '%'
55 #define blank           ' '
56 #define dot             '.'
57 #define comma           ','
58 #define colon           ':'
59 #define tilde           '~'
60 #define atsign          '@'
61 #define dummy           '\0'
62 
63 #define ndurs           8
64 
65 #define unspecified     '5'   /* Not a valid duration */
66 
67 #define whole           2   /* position of '0' in durations */
68 
69 #define digits          "123456789"
70 #define digitsdot       "0123456789."
71 
72 #define putspace        true
73 #define nospace         false
74 #define print           true
75 
76 
77 typedef char paragraph_index;
78 
79 typedef char voice_index;
80 
81 typedef char stave_index;
82 
83 typedef char bar_index0;
84 
85 typedef uchar word_index0;
86 
87 typedef char paragraph_index0;
88 
89 typedef char voice_index0;
90 
91 typedef char stave_index0;
92 
93 typedef Char paragraph[lines_in_paragraph][256];
94 typedef short line_nos[lines_in_paragraph];
95 
96 
97 extern Char double_comment[3];
98 extern Char durations[ndurs + 1];
99 extern Char terminators[256];
100 extern Char has_duration[9];
101 extern Char solfa_names[8];
102 
103 extern Char choice;
104 extern boolean outfile_open;
105 extern Char texdir[256];
106 extern Char old_meter_word[256];
107 extern short outlen;
108 extern boolean ignore_input;
109 vextern Char voice_label[maxvoices][256];
110 vextern Char clef[maxstaves];
111 vextern voice_index0 instr[maxstaves], stave[maxstaves],
112 		     first_on_stave[maxstaves], number_on_stave[maxstaves];
113 vextern short nspace[maxstaves], stave_size[maxstaves];
114 vextern voice_index0 nvoices, nstaves, ninstr, bottom, top;
115 vextern short one_beat, full_bar, line_no, short_note, musicsize, meternum,
116 	      meterdenom, pmnum, pmdenom, paragraph_no, bar_no, pickup, nbars,
117 	      nleft;
118 vextern paragraph_index0 para_len;
119 vextern double xmtrnum0;
120 vextern paragraph P;
121 vextern line_nos orig_line_no;
122 vextern FILE *infile, *outfile, *stylefile;
123 vextern Char default_duration;
124 vextern Char fracindent[256], this_version[256], this_version_date[256];
125 vextern boolean pmx_preamble_done, first_paragraph, final_paragraph,
126 		must_respace, must_restyle, multi_bar_rest, some_vocal;
127 vextern Char infile_NAME[_FNSIZE];
128 vextern Char outfile_NAME[_FNSIZE];
129 vextern Char stylefile_NAME[_FNSIZE];
130 
131 
132 extern Void error PP((Char *message, int printLine));
133 extern Void fatalerror PP((Char *message));
134 extern Void warning PP((Char *message, int printLine));
135 extern short PMXinstr PP((int stave));
136 extern Void setDefaultDuration PP((int meterdenom));
137 extern Void getMeter PP((Char *line, short *meternum, short *meterdenom,
138 			 short *pmnum, short *pmdenom));
139 extern Void setSpace PP((Char *line));
140 extern Char *meterChange PP((Char *Result, int n1, int n2, int blind));
141 extern Char *meterWord PP((Char *Result, int num, int denom, int pnum,
142 			   int pdenom));
143 extern Void cancel PP((short *num, short *denom, int lowest));
144 extern boolean isNoteOrRest PP((Char *w));
145 extern boolean isPause PP((Char *note));
146 /* CMO: */
147 extern short PMXmeterdenom PP((int denom));
148 
149 
150 #undef vextern
151 
152 #endif /*GLOBALS_H*/
153 
154 /* End. */
155