Klassen | Makrodefinitionen | Typdefinitionen | Aufzählungen | Funktionen | Variablen
Kernel

Klassen

struct  mutabor_box_type
 Mutabor box type. Mehr ...
class  frac
struct  parameter_liste
struct  argument
struct  argument_liste
struct  midiliste
struct  intervall
struct  komplex_intervall
struct  ton
struct  tonsystem
struct  case_liste
struct  umstimmung
struct  taste
struct  harmonie
struct  ausloeser
struct  aktions_liste
struct  anweisung
struct  logik
struct  instrument
struct  heap_element
struct  mini_heap
struct  TSYS
struct  PTRN
struct  ton_einstell
struct  case_element
struct  interpreter_parameter_liste
struct  do_aktion
struct  midi_ereignis
struct  keyboard_ereignis
struct  harmonie_ereignis
struct  umst_oder_logik
struct  cache_konstanten
class  tree_storage
 Class tree_storage proviedes an interface for classes providing tree based storage. Mehr ...

Makrodefinitionen

#define MUTWIN
#define REUSE(type)   type
#define STD_PRE
#define mutT   _T
#define mutChar   char
#define mutString   (char*)
#define mutStringRef   mutString
#define mutEmptyString   ((char *) NULL)
#define mutFreeString(string)   if (string) free (string)
#define mutDelString(string)   (mutFreeString(string), string = mutEmptyString)
#define mutFopen   fopen
#define mutCopyString(left, right)   left = strdup(right)
#define mutCopyIntoString(left, right)   strcpy(left,right)
#define mutStrdup   strdup
#define mutStrCmp(left, right)   strcmp (left, right)
#define mutStrEq(left, right)   (!strcmp (left, right))
#define mutStrLast(x)   (x[strlen(x)])
#define C_STR(x)   (x)
#define mutC_STR(x)   (x)
#define mutStrLen   strlen
#define mutStrChr   strchr
#define mutFileName
#define mutOFstream   STD_PRE::ofstream
#define mutIFstream   STD_PRE::ifstream
#define mutTextStrem   STD_PRE::ifstream
#define mutOpenOFstream(name, filename)   STD_PRE::ofstream name(mutFileName(filename), STD_PRE::ios::out | STD_PRE::ios::binary/*0, filebuf::openprot*/)
#define mutOpenIFstream(name, filename)   STD_PRE::ifstream name(mutFileName(filename), STD_PRE::ios::in | STD_PRE::ios::binary/*0, filebuf::openprot*/)
#define mutWriteStream(stream, data, count)   stream.write(data,count)
#define mutReadStream(stream, data, count)   stream.read(data,count)
#define mutCloseStream(stream)   stream.close()
#define mutPutC(stream, data)   stream.putc(data)
#define mutGetC(stream)   stream.getc()
#define mutStreamBad(stream)   (stream.bad())
#define mutStreamGood(stream)   (!stream.bad())
#define mutStreamEOF(stream)   (stream.eof())
#define mutAssertMsg(cond, msg)
#define MIDI_MIN_CHANNEL   0
#define MIDI_MAX_CHANNEL   15
#define MIDI_MIN_KEY   0
#define MIDI_MAX_KEY   0x7f
#define N_(s)   s
#define MUT_ERR_MALLOC_FAILED   MUT_ERR_UNFINISHED_TRANSLATION
#define KEY_CHANGED(box)   { keys_changed[box]=1; keys_changed_sum = 1; }
#define SHOW_CHANNEL
#define FLUSH_UPDATE_UI   FlushUpdateUI()
#define GERMAN
#define __GLOBAL_H_INCLUDED
#define bcopy(from, to, n)   memcpy((to),(from),(n))
#define bzero(s, n)   memset((s),0,(n))
#define bcmp(b1, b2, len)   memcmp((b1),(b2),(len))
#define MAX_BREITE   72
#define MAX_MIDI   32
#define FREQUENZ_TO_MIDI(x)   (log((x)/440.0)/0.05776226504666210908 + 69)
#define FAKTOR_TO_MIDI(x)   (17.31234049066756089 * log(x))
#define MAX_BOX   256
#define LINE_DRAW_QUANTUM   17
 #define MAXLINE_ton_system 18 define MAXLINE_AKTIONEN 18
#define PROT_MAXLINES   30
#define PROT_MAXCHARS   PROT_MAXLINES*40
#define AKTIONEN_MAX   100
#define LAUFZEIT_ERROR0(format, a)   strcpy(Fmeldung, format)
#define LAUFZEIT_ERROR1(format, a)   sprintf(Fmeldung, format, a)
#define LAUFZEIT_ERROR2(format, a, b)   sprintf(Fmeldung, format, a, b)
#define OFFSET   (sizeof(size_t))
#define HEAP_PORTION_SYNTAX   /*65536L*/ 64000
#define HEAP_PORTION_LAUFZEIT   /*65536L*/ 64000
#define DOUBLE_TO_LONG(x)   ((long int) ((x) * (1L<<24)))
#define SYNTHESIZER_TYP_KEINER   0
#define SYNTHESIZER_TYP_FB01   1
#define SYNTHESIZER_TYP_MULTI16   2
#define SYNTHESIZER_TYP_GIS   3
#define adjazent(a, b)
#define u_adjazent(a, b)

Typdefinitionen

typedef int parameter_typ
typedef struct TSYS tone_system
typedef struct PTRN PATTERNN

Aufzählungen

enum  {
  MUT_ERR_UNKNOWN = 0, MUT_ERR_SYNTAX_ERROR, MUT_ERR_INVALID_CHAR, MUT_ERR_FILE_OPEN_FAILED,
  MUT_ERR_UNFINISHED_TRANSLATION
}
enum  argument_typ { zahl, parameter }
enum  intervall_typ { intervall_absolut, intervall_komplex }
enum  ton_typ { ton_absolut, ton_komplex }
enum  umstimmung_typ {
  umstimmung_taste_abs, umstimmung_taste_rel, umstimmung_breite_abs, umstimmung_breite_rel,
  umstimmung_toene_veraendert, umstimmung_wiederholung_abs, umstimmung_wiederholung_rel, umstimmung_umstimmungsbund,
  umstimmung_umstimmungs_case, umstimmung_midi_out
}
enum  ausloeser_typ {
  ausloeser_harmonie, ausloeser_harmonie_form, ausloeser_taste, ausloeser_midi_in,
  ausloeser_default
}
enum  aktions_typ { aktion_midi_out, aktion_aufruf }
enum  ton_einstell_typ { einstell_stumm, einstell_gleich, einstell_absolut, einstell_relativ }
enum  aufruf_typ {
  aufruf_logik, aufruf_tonsystem, aufruf_umst_taste_abs, aufruf_umst_breite_abs,
  aufruf_umst_wiederholung_abs, aufruf_umst_wiederholung_rel, aufruf_umst_taste_rel, aufruf_umst_breite_rel,
  aufruf_umst_toene_veraendert, aufruf_umst_umst_bund, aufruf_umst_umst_case, aufruf_midi_out
}
enum  umst_oder_logik_typ { typ_umstimmung, typ_logik }

Funktionen

wxString getContextLocal (const wxString &s)
void MidiOut (int box, DWORD data, char n)
void NotesCorrect (int box)
int GetChannel (int box, int taste)
void MutResetKeys ()
void GlobalReset ()
void update_pattern (int instr)
void change_breite (int instr, int neu)
void change_anker (int instr, int neu)
void keyboard_analyse (int taste)
void HarmonyAnalysis (int box, PATTERNN *pattern)
void execute_aktion (int box, struct do_aktion *aktion)
int tiefste_taste (int box)
int hoechste_taste (int box)
int compare_harmonie (int breite, int startindex, PATTERNN *laufzeit, PATTERNN *vergleich)
void AddKey (int box, int taste, int id)
void DeleteKey (int box, int taste, int id)
void KeyboardIn (int box, const mutChar *keys)
void MidiAnalysis (int box, BYTE midiByte)
void pascal _export KeyboardAnalyse (int box, int taste, char isLogic)
void pascal _export KeyboardAnalyseSimple (int box, int taste)
void protokoll_aktuelles_tonsystem (int box)
void protokoll_liegende_frequenzen (int box)
void protokoll_aktuelle_relationen (int box)
void protokoll_liegende_relationen (int box)
void FlushUpdateUI ()
long absLong (const long x)
void init_yylex (void)
void xfree (void *pointer)
void * xmalloc (size_t size)
void * xrealloc (void *block, size_t newsize)
void * xcalloc (size_t anzahl, size_t size)
int yylex ()
void yyerror (const char *)
int yyparse ()
void mutabor_programm_einlesen (const wxChar *filename)
void mutabor_tabellen_generator (void)
void mutabor_codegenerator (const char *filename)
void write_kompletten_code (FILE *zieldatei)
void get_new_intervall (const char *name, double wert)
void get_new_intervall_komplex (const char *name)
double get_wert_komplex_intervall (struct komplex_intervall *intervall)
void get_new_ton_absolut (const char *name, double wert)
void init_komplex_ton_list (void)
void get_new_faktor_anteil (double f, const char *name)
void get_new_ton_komplex_positive (const char *name, const char *bezugston)
 void get_new_relativ_anteil (double f, char *linke_grenze, char *rechte_grenze);
void get_new_ton_komplex_negative (const char *name, const char *bezugston)
void init_ton_liste (void)
void get_new_ton_in_tonsystem (const char *name)
void get_new_tonsystem (const char *name, int taste)
void get_new_tonsystem_negative (const char *name, int taste)
void init_parameter_liste (void)
void get_new_name_in_parameterlist (const char *name)
void get_new_number_in_parameterlist (double wert)
void init_argument_liste (void)
void get_new_name_in_argument_list (const char *parameter)
void get_new_number_in_argument_list (double parameter)
void init_aktions_liste (void)
void get_new_aktion_aufruf_element (const char *name)
void get_new_aktion_midi_out_element (void)
void init_umstimmung (const char *name)
void eintrage_parameterliste_in_umstimmung (void)
void get_new_umstimmung (void)
void get_umstimmung_taste_abs (enum argument_typ argument, double zahl_wert, const char *parameter)
void get_umstimmung_taste_rel (enum argument_typ argument, double zahl_wert, const char *parameter, char vorzeichen)
void get_umstimmung_breite_abs (enum argument_typ argument, double zahl_wert, const char *parameter)
void get_umstimmung_breite_rel (enum argument_typ argument, double zahl_wert, const char *parameter, char vorzeichen)
void init_umstimm_expression_list (void)
void get_umstimmung_tonhoehe_veraendert (void)
void get_new_umstimm_expression (const char *bezugston)
void get_new_umstimm_expression_positive (const char *bezugston)
void get_new_umstimm_expression_negative (const char *bezugston)
void get_umstimmung_wiederholung_abs (void)
void get_umstimmung_wiederholung_abs_negative (void)
void get_umstimmung_wiederholung_rel_positive (void)
void get_umstimmung_wiederholung_rel_negative (void)
void get_umstimmung_umstimmungs_bund (void)
void init_umstimmungs_case_liste (void)
void get_umstimmung_umstimm_case_zahl (int selector)
void get_umstimmung_umstimm_case_parameter (const char *selector)
void init_umstimmungs_case_aktions_liste (void)
void get_umstimmungs_case_zahl_element (int konstante)
void get_umstimmungs_case_default_element (void)
void get_umstimmungs_case_aktions_element (const char *aktion)
void get_umstimmung_midi_out (void)
void init_tastenliste (void)
void get_new_harmonie (const char *name, int bezugstaste)
void get_new_taste (int taste, char stern)
void init_ausloeser (void)
void get_aktion_midi_out (void)
void get_aktion_aufruf (const char *name)
void get_ausloeser_default (void)
void get_ausloeser_harmonie (void)
void get_ausloeser_harmonie_form (void)
void get_ausloeser_taste (const char *name)
void get_ausloeser_midi_in (void)
void init_anweisungs_liste (void)
void vervollstaendige_logik (void)
void init_integersequenz (void)
void get_new_integer_in_integersequenz (int wert)
void get_new_logik (const char *name, const char *einstimmung)
void get_new_anweisung (void)
void get_harmoniebezeichner (int vor_taste, const char *name, int nach_taste)
void get_instrument_dekl (int midi_in, int midi_von, int midi_bis, int midi_umleit, struct instrument **list_to_insert)
int ton_list_laenge (struct ton *list)
int tonsystem_list_laenge (struct tonsystem *list)
int umstimmungs_list_laenge (struct umstimmung *list)
int logik_list_laenge (struct logik *list)
int midi_list_laenge (struct midiliste *list)
int get_logik_nummer (const char *name, struct logik *liste)
struct tonget_ton (const char *name, struct ton *liste)
struct intervallget_intervall (const char *name, struct intervall *liste)
struct tonsystemparser_get_tonsystem (const char *name, struct tonsystem *liste)
struct umstimmungget_umstimmung (const char *name, struct umstimmung *liste)
struct harmonieget_harmonie (const char *name, struct harmonie *liste)
struct logikget_logik (const char *name, struct logik *liste)
int intern_fgetc (FILE *stream)
int intern_ungetc (int c, FILE *stream)
int init_speicher_total (void)
int loesche_speicher_total (void)
int init_laufzeit_speicher (void)
int loesche_laufzeit_speicher (void)
void show_line_number (int n)
void AktionenInit ()
void AktionenMessage (int box, const char *aktionName)
int pascal _export GetActString (unsigned char **box, int **l, char **s)
void InitCompDia (HWND compDiaLine)
void calc_declaration_numbers (char withNames)
void fatal_error (int nr,...)
void compiler_warning (int nr,...)
void laufzeit_message (const char *Meldung)
void init_laufzeit_protokoll (void)
void exit_laufzeit_protokoll (void)
void laufzeit_protokoll (const char *formatstring,...)
char *pascal _export GetKeyString (int box, char asTS)
char *pascal _export GetTSString (int box, char asTS)
int pascal _export GetLineNumbers ()
int pascal _export GetErrorLine ()
void scanner_protokoll (int zeichen)
void protokoll_aktion (const char *name)
void clear_protokoll_screen (void)
void drucke_keyboard_liste (int instr)
void update_keyboard_liste (int instr)
void enable_protokoll_frame (void)
void * xalloca (size_t size)
void xde_alloca (void *pointer)
int loesche_syntax_speicher (void)
int init_syntax_speicher (void)
void yfree (void *pointer)
void * ymalloc (size_t size)
void * yrealloc (void *block, size_t newsize)
void * ycalloc (size_t anzahl, size_t size)
void message_tasten_liste (void)
void HARMONIE_analyse (int instr, PATTERNN *pattern)
void MIDI_analyse (int code)
void KEYB_analyse (int key)
void MAUS_analyse (int mx, int my)
void Add_Key (int instr, int key, int velo)
void Delete_Key (int instr, int key)
tone_systemlz_get_tonsystem (int instr)
PATTERNNget_pattern (int instr)
static void berechne_toene_absolut (struct ton *ton_liste)
static void check_konsistenz (void)
void allgemeine_initialisierungen (void)
int parameter_list_laenge (struct parameter_liste *list)
int argument_list_laenge (struct argument_liste *list)
static struct midilisteget_last_integersequenz (void)
static struct parameter_listeget_last_parameter_liste (void)
static int parameter_nummer (int aktueller_index, const char *such_name, struct parameter_liste *knoten)
void print_argumentliste (struct argument_liste *this_)
static struct argument_listeget_last_argument_liste (void)
static struct aktions_listeget_last_aktions_liste (void)
struct komplex_intervallget_last_komplex_intervall (void)
void setze_nummer_von_abstand_und_zentrum (void)
void mutabor_programm_einlesen (const mutChar *filename)
void print_integersequenz (struct midiliste *this_)
struct ausloeserget_last_ausloeser (void)
struct anweisungget_last_anweisungs_liste (void)
static void belege_toene (struct ton **toene, struct ton *liste)
static int ton_nummer (const char *name)
static void test_zyklen (int startknoten)
static void berechne_ton_endgueltig (int k)
int enthalten_in_tastenliste (int taste, struct taste *lauf)
static int case_label_enthalten_in_case_liste (double case_label, struct case_liste *lauf)
static void check_ausloeser (struct ausloeser *ausloeser, const char *name)
static void check_aktionen (struct aktions_liste *aktionen, const char *name)
static void belege_zyklenfeld (struct umst_oder_logik *zyklen_feld, struct umstimmung *liste1, struct logik *liste2)
static int test_zyklen_nummer (const char *name)
static void u_test_zyklen (int startknoten)
static struct do_aktionexpandiere_name (const char *name, struct argument_liste *parameter, struct interpreter_parameter_liste *bezugs_liste)
static struct do_aktionexpandiere_umstimmung (struct umstimmung *the_umstimmung, struct interpreter_parameter_liste *aktuelle_parameter)
static struct do_aktionexpandiere_midi (struct midiliste *liste)
double get_komplex_faktor (struct komplex_intervall *lauf)
double get_komplex_frequenz (struct ton *dieser)
void fprint_argument (FILE *zieldatei, struct argument *argument)
static int(* get_cache_konstante (int wert))[MAX_BOX]
static struct
interpreter_parameter_liste
gen_parameter_liste (struct argument_liste *liste, struct interpreter_parameter_liste *bezugs_liste)
static int * get_wert_of_argument (struct argument *argument, struct interpreter_parameter_liste *aktuelle_parameter)
static struct ton_einstellexpand_tonliste (struct ton *the_tonliste)
static struct do_aktionexpandiere_tonsystem (struct tonsystem *the_tonsystem)
static struct do_aktionexpandiere_logik (struct logik *the_logik)
static struct do_aktionexpand_aktions_liste (struct aktions_liste *the_liste, struct interpreter_parameter_liste *aktuelle_parameter)
static struct case_elementexpand_case_liste (struct case_liste *the_liste, struct interpreter_parameter_liste *aktuelle_parameter)
static int * create_midi_scan_liste (struct midiliste *lauf)
PATTERNNexpand_pattern (const char *harmonie_name)
void insert_in_globale_liste (int instrument, struct logik *lauf)
void insert_in_lokale_liste (int instrument, struct anweisung *lauf, const char *name_der_logik)
static void expandiere_in_globale_liste (void)
static struct harmonie_ereignis ** get_ende_harmonie (struct harmonie_ereignis **lauf)
static struct keyboard_ereignis ** get_ende_keyboard (struct keyboard_ereignis **lauf)
static struct midi_ereignis ** get_ende_midi (struct midi_ereignis **lauf)
fracfrac::operator= (const frac &f)
fracfrac::operator+= (const frac &f)
fracfrac::operator-= (const frac &f)
fracfrac::operator*= (const frac &f)
fracfrac::operator/= (const frac &f)
frac frac::operator+ (const frac s)
frac frac::operator- (const frac s)
frac frac::operator* (const frac s)
frac frac::operator/ (const frac s)
int frac::operator< (const frac &f)
int frac::operator<= (const frac &f)
int frac::operator== (const frac &f)
int frac::operator!= (const frac &f)
int frac::operator>= (const frac &f)
int frac::operator> (const frac &f)
fracfrac::operator= (const int &i)
long frac::gcd (long a, long b)

Variablen

tone_systemfree_tonesystem
mutabor_box_type mut_box [MAX_BOX]
int laufzeit_meldungen_erlaubt = 0
int aktuelles_midi_instrument = 0
int aktuelle_keyboard_box = 0
tone_systemfree_tonesystem
mutabor_box_type mut_box [MAX_BOX]
int laufzeit_meldungen_erlaubt
int aktuelles_midi_instrument
int aktuelle_keyboard_box
const mutTranslationChar * Error_text []
const mutTranslationChar * Warning_text []
const mutTranslationChar * Error_text []
const mutTranslationChar * Warning_text []
int protokollfunktionen_aktiv = 0
int protokollfunktion_aktionsausgabe = 0
int zeige_aktuelles_tonsystem = 0
tone_system tonesystem_memory [MAX_BOX+1]
tone_system tonesystem_init
int liegende_tasten [MAX_BOX][64]
int liegende_tasten_max [MAX_BOX]
long last_note_id [MAX_BOX]
bool logic_changed [MAX_BOX]
int laufzeit_abstand [MAX_BOX]
int laufzeit_zentrum [MAX_BOX]
char tempstring [255]
FILE * quelldatei
long anzahl_eingelesene_zeichen
struct intervalllist_of_intervalle
struct tonlist_of_toene
struct tonsystemlist_of_tonsysteme
struct umstimmunglist_of_umstimmungen
struct harmonielist_of_harmonien
struct logiklist_of_logiken
struct instrumentlist_of_instrumente
struct instrumentlist_of_config_instrumente
int geheimcode
int keys_changed [MAX_BOX]
int keys_changed_sum
char KeepSound
HWND CompDiaLine
int protokoll_ausgabezeile = 0
int aktionen_ausgabezeile = 0
jmp_buf weiter_gehts_nach_compilerfehler
char protokoll_string [PROT_MAXCHARS]
char sAktionen [AKTIONEN_MAX *50]
unsigned char boxAktionen [AKTIONEN_MAX]
int lAktionen [AKTIONEN_MAX]
int nAktionen = 0
int keys_changed [MAX_BOX]
int keys_changed_sum
char sd1 [100]
char sd2 [100]
char Fmeldung [255]
int scanner_echo
char sd1 [100]
char sd2 [100]
char Fmeldung [255]
char SeRiEnNuMmEr []
static int the_character
static int is_valid
static struct heap_elementsyntax_heap = NULL
static struct heap_elementheap_to_use_syntax = NULL
static struct mini_heaplaufzeit_heap = NULL
struct harmonie_ereignisfirst_harmonie [MAX_BOX]
struct harmonie_ereignis ** last_global_harmonie [MAX_BOX]
struct harmonie_ereignis ** first_lokal_harmonie
struct keyboard_ereignisfirst_keyboard [MAX_BOX]
struct keyboard_ereignis ** last_global_keyboard [MAX_BOX]
struct keyboard_ereignis ** first_lokal_keyboard
struct midi_ereignisfirst_midi [MAX_BOX]
struct midi_ereignis ** last_global_midi [MAX_BOX]
struct midi_ereignis ** first_lokal_midi
int laufzeit_abstand [256]
int laufzeit_zentrum [256]
int laufzeit_meldungen_erlaubt
int aktuelle_keyboard_box
int liegende_tasten [MAX_BOX][64]
int liegende_tasten_max [MAX_BOX]
struct intervalllist_of_intervalle
struct tonlist_of_toene
struct tonsystemlist_of_tonsysteme
struct umstimmunglist_of_umstimmungen
struct harmonielist_of_harmonien
struct logiklist_of_logiken
struct instrumentlist_of_instrumente
struct instrumentlist_of_config_instrumente
struct tonton_ohne_namen
static struct midilistelist_of_integers
static struct parameter_listelist_of_names
static struct argument_listelist_of_argumente
static struct aktions_listelist_of_aktionen
static struct komplex_intervallthe_komplex_liste
FILE * quelldatei
static struct tonton_liste
static struct umstimmungtmp_umstimmung
static struct tontmp_tonliste
static struct case_listetmp_umstimmungs_case_liste
static struct tastetmp_tastenliste
static int tmp_vor_taste
static const chartmp_name
static int tmp_nach_taste
static struct ausloesertmp_ausloeser
static struct anweisungtmp_anweisungsliste
static int anzahl_toene
static struct ton ** toene
static charvisited
static charmatrix
static int anzahl_umstimmungen_und_logiken
static struct umst_oder_logikzyklen_feld
static charu_visited
static charu_matrix
struct harmonie_ereignisfirst_harmonie [MAX_BOX]
struct harmonie_ereignis ** last_global_harmonie [MAX_BOX]
struct harmonie_ereignis ** first_lokal_harmonie
struct keyboard_ereignisfirst_keyboard [MAX_BOX]
struct keyboard_ereignis ** last_global_keyboard [MAX_BOX]
struct keyboard_ereignis ** first_lokal_keyboard
struct midi_ereignisfirst_midi [MAX_BOX]
struct midi_ereignis ** last_global_midi [MAX_BOX]
struct midi_ereignis ** first_lokal_midi
long anzahl_eingelesene_zeichen
static struct
interpreter_parameter_liste 
zentrums_knoten
static struct
interpreter_parameter_liste 
abstands_knoten
struct
interpreter_parameter_liste
start_parameter_liste
static struct cache_konstantencache_konstanten = NULL

Makro-Dokumentation

#define __GLOBAL_H_INCLUDED

Definiert in Zeile 38 der Datei Global.h.

#define adjazent (   a,
 
)
Wert:
matrix [ (a) * anzahl_toene * sizeof (char) \
                             + (b) * sizeof (char)]

Definiert in Zeile 2244 der Datei Parser.cpp.

Wird benutzt von berechne_toene_absolut() und test_zyklen().

#define AKTIONEN_MAX   100

Definiert in Zeile 90 der Datei GrafKern.cpp.

Wird benutzt von AktionenMessage().

#define bcmp (   b1,
  b2,
  len 
)    memcmp((b1),(b2),(len))

Definiert in Zeile 50 der Datei Global.h.

#define bcopy (   from,
  to,
 
)    memcpy((to),(from),(n))

Definiert in Zeile 48 der Datei Global.h.

Wird benutzt von protokoll_liegende_frequenzen() und yyparse().

#define bzero (   s,
 
)    memset((s),0,(n))

Definiert in Zeile 49 der Datei Global.h.

#define C_STR (   x)    (x)

Definiert in Zeile 155 der Datei Defs.h.

Wird benutzt von InGis::Open().

#define DOUBLE_TO_LONG (   x)    ((long int) ((x) * (1L<<24)))

Definiert in Zeile 47 der Datei Interpre.h.

Wird benutzt von expand_tonliste(), expandiere_tonsystem() und expandiere_umstimmung().

#define FAKTOR_TO_MIDI (   x)    (17.31234049066756089 * log(x))

Definiert in Zeile 60 der Datei Global.h.

Wird benutzt von expand_tonliste(), expandiere_tonsystem() und expandiere_umstimmung().

#define FLUSH_UPDATE_UI   FlushUpdateUI()

Definiert in Zeile 64 der Datei Execute.h.

Wird benutzt von InMidiPort::Proceed() und InMidiFile::Proceed().

#define FREQUENZ_TO_MIDI (   x)    (log((x)/440.0)/0.05776226504666210908 + 69)

Definiert in Zeile 57 der Datei Global.h.

Wird benutzt von expand_tonliste() und expandiere_tonsystem().

#define GERMAN

Definiert in Zeile 34 der Datei Global.h.

#define HEAP_PORTION_LAUFZEIT   /*65536L*/ 64000

Definiert in Zeile 34 der Datei Hilfs.h.

#define HEAP_PORTION_SYNTAX   /*65536L*/ 64000

Definiert in Zeile 33 der Datei Hilfs.h.

Wird benutzt von xmalloc() und xrealloc().

#define KEY_CHANGED (   box)    { keys_changed[box]=1; keys_changed_sum = 1; }

Definiert in Zeile 57 der Datei Execute.cpp.

Wird benutzt von AddKey(), DeleteKey() und execute_aktion().

#define LAUFZEIT_ERROR0 (   format,
 
)    strcpy(Fmeldung, format)

Definiert in Zeile 127 der Datei GrafKern.h.

Wird benutzt von InMidiPort::Open() und OutMidiPort::Open().

#define LAUFZEIT_ERROR1 (   format,
 
)    sprintf(Fmeldung, format, a)

Definiert in Zeile 128 der Datei GrafKern.h.

Wird benutzt von InMidiFile::Open().

#define LAUFZEIT_ERROR2 (   format,
  a,
 
)    sprintf(Fmeldung, format, a, b)

Definiert in Zeile 129 der Datei GrafKern.h.

Wird benutzt von InMidiPort::Open() und OutMidiPort::Open().

#define LINE_DRAW_QUANTUM   17

#define MAXLINE_ton_system 18 define MAXLINE_AKTIONEN 18

Definiert in Zeile 749 der Datei Global.h.

Wird benutzt von yylex().

#define MAX_BOX   256
#define MAX_BREITE   72

Definiert in Zeile 52 der Datei Global.h.

Wird benutzt von change_breite(), expand_pattern() und MutResetKeys().

#define MAX_MIDI   32

Definiert in Zeile 54 der Datei Global.h.

#define MIDI_MAX_CHANNEL   15

Definiert in Zeile 206 der Datei Defs.h.

Wird benutzt von MutInputMidiDeviceShape::GetInputFilterPanel().

#define MIDI_MAX_KEY   0x7f

Definiert in Zeile 208 der Datei Defs.h.

Wird benutzt von MutInputMidiDeviceShape::GetInputFilterPanel().

#define MIDI_MIN_CHANNEL   0

Definiert in Zeile 205 der Datei Defs.h.

Wird benutzt von MutInputMidiDeviceShape::GetInputFilterPanel().

#define MIDI_MIN_KEY   0

Definiert in Zeile 207 der Datei Defs.h.

Wird benutzt von MutInputMidiDeviceShape::GetInputFilterPanel().

#define MUT_ERR_MALLOC_FAILED   MUT_ERR_UNFINISHED_TRANSLATION

Definiert in Zeile 49 der Datei Errors.h.

Wird benutzt von xalloca().

#define mutAssertMsg (   cond,
  msg 
)

Definiert in Zeile 194 der Datei Defs.h.

#define mutC_STR (   x)    (x)
#define mutChar   char
#define mutCloseStream (   stream)    stream.close()

Definiert in Zeile 176 der Datei Defs.h.

Wird benutzt von InMidiFile::Open().

#define mutCopyIntoString (   left,
  right 
)    strcpy(left,right)

Definiert in Zeile 150 der Datei Defs.h.

Wird benutzt von SavePos().

#define mutCopyString (   left,
  right 
)    left = strdup(right)

Definiert in Zeile 149 der Datei Defs.h.

Wird benutzt von EndSegment(), EndSequenz(), GisReadHead::GisReadHead() und Tag().

#define mutDelString (   string)    (mutFreeString(string), string = mutEmptyString)

Definiert in Zeile 147 der Datei Defs.h.

#define mutEmptyString   ((char *) NULL)
#define mutFileName

Definiert in Zeile 161 der Datei Defs.h.

#define mutFopen   fopen

Definiert in Zeile 148 der Datei Defs.h.

#define mutFreeString (   string)    if (string) free (string)
#define mutGetC (   stream)    stream.getc()

Definiert in Zeile 180 der Datei Defs.h.

Wird benutzt von InMidiFile::Open().

#define mutIFstream   STD_PRE::ifstream

Definiert in Zeile 164 der Datei Defs.h.

#define mutOFstream   STD_PRE::ofstream

Definiert in Zeile 163 der Datei Defs.h.

#define mutOpenIFstream (   name,
  filename 
)    STD_PRE::ifstream name(mutFileName(filename), STD_PRE::ios::in | STD_PRE::ios::binary/*0, filebuf::openprot*/)

Definiert in Zeile 169 der Datei Defs.h.

Wird benutzt von InMidiFile::Open().

#define mutOpenOFstream (   name,
  filename 
)    STD_PRE::ofstream name(mutFileName(filename), STD_PRE::ios::out | STD_PRE::ios::binary/*0, filebuf::openprot*/)

Definiert in Zeile 167 der Datei Defs.h.

Wird benutzt von OutMidiFile::Close().

#define mutPutC (   stream,
  data 
)    stream.putc(data)

Definiert in Zeile 179 der Datei Defs.h.

Wird benutzt von Track::Save() und WriteLength().

#define mutReadStream (   stream,
  data,
  count 
)    stream.read(data,count)

Definiert in Zeile 174 der Datei Defs.h.

Wird benutzt von InMidiFile::Open() und ReadLength().

#define mutStrChr   strchr

Definiert in Zeile 160 der Datei Defs.h.

Wird benutzt von CharIn().

#define mutStrCmp (   left,
  right 
)    strcmp (left, right)

Definiert in Zeile 152 der Datei Defs.h.

Wird benutzt von GetMatchingHeader().

#define mutStrdup   strdup

Definiert in Zeile 151 der Datei Defs.h.

#define mutStreamBad (   stream)    (stream.bad())

Definiert in Zeile 182 der Datei Defs.h.

Wird benutzt von InMidiFile::Open(), OpenFile() und ReadNewLine().

#define mutStreamEOF (   stream)    (stream.eof())

Definiert in Zeile 184 der Datei Defs.h.

Wird benutzt von InMidiFile::Open() und ReadNewLine().

#define mutStreamGood (   stream)    (!stream.bad())

Definiert in Zeile 183 der Datei Defs.h.

Wird benutzt von InMidiFile::Open().

#define mutStrEq (   left,
  right 
)    (!strcmp (left, right))

Definiert in Zeile 153 der Datei Defs.h.

Wird benutzt von MutaborTag().

#define mutString   (char*)
#define mutStringRef   mutString

Definiert in Zeile 144 der Datei Defs.h.

#define mutStrLast (   x)    (x[strlen(x)])

Definiert in Zeile 154 der Datei Defs.h.

#define mutStrLen   strlen

Definiert in Zeile 159 der Datei Defs.h.

Wird benutzt von KeyboardIn().

#define mutT   _T
#define mutTextStrem   STD_PRE::ifstream

Definiert in Zeile 165 der Datei Defs.h.

#define MUTWIN

Definiert in Zeile 36 der Datei Defs.h.

#define mutWriteStream (   stream,
  data,
  count 
)    stream.write(data,count)

Definiert in Zeile 172 der Datei Defs.h.

Wird benutzt von OutMidiFile::Close() und Track::Save().

#define N_ (   s)    s

Definiert in Zeile 50 der Datei Errors.cpp.

#define OFFSET   (sizeof(size_t))

Definiert in Zeile 125 der Datei Hilfs.cpp.

Wird benutzt von xmalloc().

#define PROT_MAXCHARS   PROT_MAXLINES*40

Definiert in Zeile 89 der Datei GrafKern.cpp.

Wird benutzt von laufzeit_message().

#define PROT_MAXLINES   30

Definiert in Zeile 88 der Datei GrafKern.cpp.

#define REUSE (   type)    type

Definiert in Zeile 69 der Datei Defs.h.

Wird benutzt von OutMidiFile::NoteOn(), MutRouteWnd::OnDraw() und InMidiFile::ReadMidiProceed().

#define SHOW_CHANNEL

Definiert in Zeile 663 der Datei Execute.cpp.

#define STD_PRE

Definiert in Zeile 75 der Datei Defs.h.

#define SYNTHESIZER_TYP_FB01   1

Definiert in Zeile 349 der Datei Interpre.h.

#define SYNTHESIZER_TYP_GIS   3

Definiert in Zeile 351 der Datei Interpre.h.

#define SYNTHESIZER_TYP_KEINER   0

Definiert in Zeile 348 der Datei Interpre.h.

#define SYNTHESIZER_TYP_MULTI16   2

Definiert in Zeile 350 der Datei Interpre.h.

#define u_adjazent (   a,
 
)
Wert:
u_matrix [ (a) * anzahl_umstimmungen_und_logiken \
                * sizeof (char) + (b) * sizeof (char)]

Definiert in Zeile 2690 der Datei Parser.cpp.

Wird benutzt von check_konsistenz() und u_test_zyklen().


Dokumentation der benutzerdefinierten Typen

typedef int parameter_typ

Definiert in Zeile 76 der Datei Global.h.

typedef struct PTRN PATTERNN
typedef struct TSYS tone_system

Dokumentation der Aufzählungstypen

anonymous enum
Aufzählungswerte:
MUT_ERR_UNKNOWN 
MUT_ERR_SYNTAX_ERROR 
MUT_ERR_INVALID_CHAR 
MUT_ERR_FILE_OPEN_FAILED 
MUT_ERR_UNFINISHED_TRANSLATION 

Definiert in Zeile 51 der Datei Errors.h.

Aufzählungswerte:
aktion_midi_out 
aktion_aufruf 

Definiert in Zeile 425 der Datei Global.h.

Aufzählungswerte:
zahl 
parameter 

Definiert in Zeile 78 der Datei Global.h.

enum aufruf_typ
Aufzählungswerte:
aufruf_logik 
aufruf_tonsystem 
aufruf_umst_taste_abs 
aufruf_umst_breite_abs 
aufruf_umst_wiederholung_abs 
aufruf_umst_wiederholung_rel 
aufruf_umst_taste_rel 
aufruf_umst_breite_rel 
aufruf_umst_toene_veraendert 
aufruf_umst_umst_bund 
aufruf_umst_umst_case 
aufruf_midi_out 

Definiert in Zeile 158 der Datei Interpre.h.

Aufzählungswerte:
ausloeser_harmonie 
ausloeser_harmonie_form 
ausloeser_taste 
ausloeser_midi_in 
ausloeser_default 

Definiert in Zeile 380 der Datei Global.h.

Aufzählungswerte:
intervall_absolut 
intervall_komplex 

Definiert in Zeile 119 der Datei Global.h.

Aufzählungswerte:
einstell_stumm 
einstell_gleich 
einstell_absolut 
einstell_relativ 

Definiert in Zeile 110 der Datei Interpre.h.

enum ton_typ
Aufzählungswerte:
ton_absolut 
ton_komplex 

Definiert in Zeile 181 der Datei Global.h.

Aufzählungswerte:
typ_umstimmung 
typ_logik 

Definiert in Zeile 2664 der Datei Parser.cpp.

Aufzählungswerte:
umstimmung_taste_abs 
umstimmung_taste_rel 
umstimmung_breite_abs 
umstimmung_breite_rel 
umstimmung_toene_veraendert 
umstimmung_wiederholung_abs 
umstimmung_wiederholung_rel 
umstimmung_umstimmungsbund 
umstimmung_umstimmungs_case 
umstimmung_midi_out 

Definiert in Zeile 234 der Datei Global.h.


Dokumentation der Funktionen

long absLong ( const long  x)

Definiert in Zeile 37 der Datei Frac.cpp.

Wird benutzt von frac::gcd().

{
        if ( x >= 0 ) return x;
        else return -x;
}
void Add_Key ( int  instr,
int  key,
int  velo 
)
void AddKey ( int  box,
int  taste,
int  id 
)
void AktionenInit ( )

Definiert in Zeile 121 der Datei GrafKern.cpp.

Benutzt nAktionen.

Wird benutzt von Activate().

{
        nAktionen = 0;
}
void AktionenMessage ( int  box,
const char aktionName 
)

Definiert in Zeile 145 der Datei GrafKern.cpp.

Benutzt AKTIONEN_MAX, boxAktionen, lAktionen, nAktionen und sAktionen.

Wird benutzt von execute_aktion().

{
        if ( nAktionen < AKTIONEN_MAX ) {
                boxAktionen[nAktionen] = ((unsigned char*)&box)[0];
                int l = 0;

                if ( nAktionen )
                        l = lAktionen[nAktionen-1];

                strcpy(&sAktionen[l], aktionName);

                lAktionen[nAktionen++] = l + strlen(aktionName);
        }
}
void allgemeine_initialisierungen ( void  )

Definiert in Zeile 78 der Datei Parser.cpp.

Benutzt ton::name, ton::next, ton::ton_absolut, ton_absolut, ton::ton_typ, ton::u und xmalloc().

Wird benutzt von check_konsistenz().

int argument_list_laenge ( struct argument_liste list)

Definiert in Zeile 144 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von check_aktionen() und check_konsistenz().

{
        if (list) return 1 + argument_list_laenge (list -> next);

        return 0;
}
static void belege_toene ( struct ton **  toene,
struct ton liste 
) [static]

Definiert in Zeile 2249 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von berechne_toene_absolut().

{
        while (liste)
        {
                *toene = liste;
                toene++;
                liste = liste->next;
        }
}
static void belege_zyklenfeld ( struct umst_oder_logik zyklen_feld,
struct umstimmung liste1,
struct logik liste2 
) [static]

Definiert in Zeile 2695 der Datei Parser.cpp.

Benutzt umst_oder_logik::logik, logik::next, umstimmung::next, typ_logik, typ_umstimmung, umst_oder_logik::u, umst_oder_logik::umst_oder_logik_typ und umst_oder_logik::umstimmung.

Wird benutzt von check_konsistenz().

{
        int i = 0;

        while (liste1)
        {
                zyklen_feld[i].umst_oder_logik_typ = typ_umstimmung;
                zyklen_feld[i].u.umstimmung = liste1;
                liste1 = liste1->next;
                i++;
        }

        while (liste2)
        {
                zyklen_feld[i].umst_oder_logik_typ = typ_logik;
                zyklen_feld[i].u.logik = liste2;
                liste2 = liste2->next;
                i++;
        }
}
static void berechne_toene_absolut ( struct ton ton_liste) [static]

Definiert in Zeile 2321 der Datei Parser.cpp.

Benutzt _(), adjazent, anzahl_toene, belege_toene(), berechne_ton_endgueltig(), fatal_error(), test_zyklen(), ton_absolut, ton_komplex, ton_list_laenge(), ton_nummer(), ton::u, xalloca() und xde_alloca().

Wird benutzt von mutabor_programm_einlesen().

{
        int i,j,k;

        anzahl_toene = ton_list_laenge (list_of_toene);

        toene = (ton* *) xalloca (sizeof(struct ton *) * anzahl_toene);
        visited = (char*) xalloca (sizeof(char) * anzahl_toene);
        matrix = (char*) xalloca (sizeof(char) * anzahl_toene * anzahl_toene);


        /* Feld mit toenen initialisieren (zum schnelleren Zugriff) */

        belege_toene (toene, list_of_toene);

        /* Adjazenzmatrix initialisieren (Kein Ton hÑngt vom anderen ab) */

        for (i=0; i<anzahl_toene; i++)
        {
                for (j=0; j<anzahl_toene; j++) {
                        adjazent (i,j) = 0;
                }
        }

        /* Adjazenzmatrix initialisieren (AbhÑngigkeiten eintragen) */

        for (i=0; i<anzahl_toene; i++)
        {
                if (toene[i]->ton_typ == ton_absolut)  /* alles ok */ ;
                else if (toene[i]->ton_typ == ton_komplex) {
                        adjazent (i, ton_nummer (toene[i]->u.ton_komplex.bezugston)) = 1;
                } else {
                        fatal_error(0,_C_STR(_("loop")));
                }
        }

#ifdef DEBUG_ANZEIGE
        /* Adjazenzmatrix anzeigen */

        printf ("Matrix:\n");

        for (i=0; i<anzahl_toene; i++)
        {
                printf ("%s -> ", toene[i]->name);

                for (j=0; j<anzahl_toene; j++) {
                        if (adjazent (i,j))
                                printf ("%s  ", toene[j]->name);
                }

                printf ("\n");
        }

        printf ("\n");

#endif

        /* auf Zyklenfreiheit Pruefen */

        for (k=0; k<anzahl_toene; k++)
                visited [k] = 0;

        for (k=0; k<anzahl_toene; k++)
        {
                visited [k] = 1;
                test_zyklen (k);
                visited [k] = 0;
        }

        /* Toene endgueltig berechnen */

        for (k=0; k<anzahl_toene; k++)
                berechne_ton_endgueltig (k);

#ifdef DEBUG_ANZEIGE
        /* Adjazenzmatrix anzeigen */

        printf ("Matrix:\n");

        for (i=0; i<anzahl_toene; i++)
        {
                printf ("%s -> ", toene[i]->name);

                for (j=0; j<anzahl_toene; j++) {
                        if (adjazent (i,j))
                                printf ("%s  ", toene[j]->name);
                }

                printf ("\n");
        }

        printf ("\n");

#endif

        xde_alloca (toene);
        xde_alloca (visited);
        xde_alloca (matrix);

}
static void berechne_ton_endgueltig ( int  k) [static]

Definiert in Zeile 2291 der Datei Parser.cpp.

Benutzt _(), fatal_error(), get_wert_komplex_intervall(), ton::ton_absolut, ton_absolut, ton_komplex, ton_nummer(), ton::ton_typ und ton::u.

Wird benutzt von berechne_toene_absolut().

{
        int b;
        double help, help2;

        switch (toene[k]->ton_typ) {

        case ton_absolut:         /* hier nichts zu tun */
                break;

        case ton_komplex:
                b = ton_nummer (toene[k]->u.ton_komplex.bezugston);

                berechne_ton_endgueltig (b);

                help2 = get_wert_komplex_intervall (toene[k]->u.ton_komplex.komplex_liste);

                help = toene[b]->u.ton_absolut.ton_wert;

                toene[k]->ton_typ = ton_absolut;

                toene[k]->u.ton_absolut.ton_wert = help * help2;

                break;

        default:
                fatal_error(0,_C_STR(_("loop")));
        }
}
void calc_declaration_numbers ( char  withNames)

Definiert in Zeile 201 der Datei GrafKern.cpp.

Benutzt anzahl_eingelesene_zeichen, intervall_list_laenge(), list_of_intervalle, list_of_logiken, list_of_toene, list_of_tonsysteme, list_of_umstimmungen, logik_list_laenge(), sd1, sd2, ton_list_laenge(), tonsystem_list_laenge() und umstimmungs_list_laenge().

Wird benutzt von Compile().

{
#ifdef MUTWIN
#ifdef WX
        sd1 = wxString::Format(_T("%d"), logik_list_laenge(list_of_logiken));
        sd2 = wxString::Format(_T("%d"), ton_list_laenge(list_of_toene));
        sd3 = wxString::Format(_T("%d"), umstimmungs_list_laenge(list_of_umstimmungen));
        sd4 = wxString::Format(_T("%d"), tonsystem_list_laenge(list_of_tonsysteme));
        sd5 = wxString::Format(_T("%d"), intervall_list_laenge(list_of_intervalle));
        sd6 = wxString::Format(_T("%ld"), anzahl_eingelesene_zeichen);
#else
        sprintf(sd1, "%d\n%d\n%d",
                logik_list_laenge(list_of_logiken),
                ton_list_laenge(list_of_toene),
                umstimmungs_list_laenge(list_of_umstimmungen));
        sprintf(sd2, "%d\n%d\n%d",
                tonsystem_list_laenge(list_of_tonsysteme),
                intervall_list_laenge(list_of_intervalle),
                anzahl_eingelesene_zeichen);
#endif
#else

        if ( withNames) {
                sprintf(sd1, "  logics: %d\n  tones: %d\n  tunes: %d",
                        logik_list_laenge(list_of_logiken),
                        ton_list_laenge(list_of_toene),
                        umstimmungs_list_laenge(list_of_umstimmungen));
                sprintf(sd2, "  tone systems: %d\n  intervalls; %d\n  read chars: %d",
                        tonsystem_list_laenge(list_of_tonsysteme),
                        intervall_list_laenge(list_of_intervalle),
                        anzahl_eingelesene_zeichen);
        } else {
                sprintf(sd1, "%d\n%d\n%d",
                        logik_list_laenge(list_of_logiken),
                        ton_list_laenge(list_of_toene),
                        umstimmungs_list_laenge(list_of_umstimmungen));
                sprintf(sd2, "%d\n%d\n%d",
                        tonsystem_list_laenge(list_of_tonsysteme),
                        intervall_list_laenge(list_of_intervalle),
                        anzahl_eingelesene_zeichen);
        }

#endif
}
static int case_label_enthalten_in_case_liste ( double  case_label,
struct case_liste lauf 
) [static]

Definiert in Zeile 2445 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von check_konsistenz().

{
        if (lauf == NULL)
                return 0;
        else if ( ! lauf -> is_default  &&
                        ( (int)(case_label) == (int)(lauf -> case_label) ) )
                return 1;
        else
                return case_label_enthalten_in_case_liste (case_label, lauf -> next);
}
void change_anker ( int  instr,
int  neu 
)

Definiert in Zeile 383 der Datei Execute.cpp.

Benutzt TSYS::anker, TSYS::breite, free_tonesystem, GET_FREQ, laufzeit_zentrum, mut_box, TSYS::periode, TSYS::ton und mutabor_box_type::tonesystem.

Wird benutzt von execute_aktion().

{
        tone_system * tonsys = mut_box[box].tonesystem;
        tone_system * temp = tonsys;
        int i;
        laufzeit_zentrum[box]-=neu-tonsys->anker;

        while ( laufzeit_zentrum[box] < 0 )
                laufzeit_zentrum[box] += tonsys->breite;

        laufzeit_zentrum[box]%=tonsys->breite;

        while (neu<36)
                neu += tonsys->breite;

        while (neu>96)
                neu -= tonsys->breite;

        free_tonesystem->ton[0]=GET_FREQ(neu,tonsys);

        for (i=1; i<tonsys->breite; i++)
                free_tonesystem->ton[i] =
                        free_tonesystem->ton[0] + tonsys->ton[i]-tonsys->ton[0];

        free_tonesystem->anker=neu;
        free_tonesystem->breite=tonsys->breite;
        free_tonesystem->periode=tonsys->periode;
        mut_box[box].tonesystem=free_tonesystem;
        free_tonesystem=temp;
}
void change_breite ( int  instr,
int  neu 
)

Definiert in Zeile 414 der Datei Execute.cpp.

Benutzt TSYS::anker, TSYS::breite, GET_FREQ, MAX_BREITE, mut_box, TSYS::periode, TSYS::ton und mutabor_box_type::tonesystem.

Wird benutzt von execute_aktion().

{
        tone_system * tonsys = mut_box[box].tonesystem;
        int i;

        if ( neu>0 && neu < MAX_BREITE ) {
                if ( neu > tonsys->breite )
                        for (i = tonsys->breite; i < neu; i++)
                                tonsys->ton[i]=GET_FREQ((tonsys->anker+i),tonsys);
                tonsys->periode =
                        GET_FREQ(tonsys->anker+neu,tonsys) - GET_FREQ(tonsys->anker,tonsys);
                tonsys->breite=neu;
        }
}
static void check_aktionen ( struct aktions_liste aktionen,
const char name 
) [static]

Definiert in Zeile 2566 der Datei Parser.cpp.

Benutzt _(), aktions_liste::aktion_aufruf, aktion_aufruf, aktions_liste::aktion_midi_out, aktion_midi_out, aktions_liste::aktions_typ, argument_list_laenge(), compiler_warning(), fatal_error(), get_logik(), get_umstimmung(), midiliste::midi_code, mutC_STR, midiliste::next, parameter_list_laenge(), umstimmung::parameter_liste, parser_get_tonsystem() und aktions_liste::u.

Wird benutzt von check_konsistenz().

{

        for ( ; aktionen ; aktionen = aktionen -> next )
        {
                if (aktionen->aktions_typ == aktion_midi_out) {

                        struct midiliste * midi_lauf
                                                = aktionen->u.aktion_midi_out.midi_code;

                        if (midi_lauf -> midi_code < 128 ||
                                        midi_lauf -> midi_code > 255 ) {
                                compiler_warning (1, mutC_STR(name));
                        }

                        while (midi_lauf) {
                                if (midi_lauf -> midi_code < 0 ||
                                                midi_lauf -> midi_code > 255 ) {
                                        fatal_error (50, mutC_STR(name), _C_STR(_("byte")));
                                }

                                midi_lauf = midi_lauf -> next;
                        }

                }

                if (aktionen->aktions_typ == aktion_aufruf) {

                        struct umstimmung * help_umstimmung =
                                                        get_umstimmung (aktionen->u.aktion_aufruf.name,
                                                                        list_of_umstimmungen);

                        struct tonsystem * help_tonsystem =
                                                        parser_get_tonsystem (aktionen->u.aktion_aufruf.name,
                                                                              list_of_tonsysteme);

                        struct logik * help_logik =
                                                        get_logik (aktionen->u.aktion_aufruf.name,
                                                                   list_of_logiken);
                        int i=0;

                        if (help_umstimmung) i++;

                        if (help_tonsystem)  i++;

                        if (help_logik)      i++;

                        if (i == 0) {
                                fatal_error (38,
                                             mutC_STR(aktionen->u.aktion_aufruf.name),
                                             mutC_STR(name));
                        }

                        if (i > 1) {
                                compiler_warning (3, mutC_STR(aktionen->u.aktion_aufruf.name), mutC_STR(name));
                        }

                        if (help_umstimmung) {
                                if (argument_list_laenge (aktionen->u.aktion_aufruf.argument_liste)
                                                != parameter_list_laenge (help_umstimmung->parameter_liste)) {

                                        fatal_error (61, mutC_STR(name), mutC_STR(aktionen->u.aktion_aufruf.name));
                                }
                        } else if (help_tonsystem) {
                                if (argument_list_laenge (aktionen->u.aktion_aufruf.argument_liste)
                                                != 0 ) {

                                        fatal_error (61, mutC_STR(name), mutC_STR(aktionen->u.aktion_aufruf.name));
                                }
                        } else if (help_logik) {
                                if (argument_list_laenge (aktionen->u.aktion_aufruf.argument_liste)
                                                != 0 ) {

                                        fatal_error (61, mutC_STR(name), mutC_STR(aktionen->u.aktion_aufruf.name));
                                }
                        }

                }

        }
}
static void check_ausloeser ( struct ausloeser ausloeser,
const char name 
) [static]

Definiert in Zeile 2457 der Datei Parser.cpp.

Benutzt _(), ausloeser::ausloeser_harmonie, ausloeser_harmonie, ausloeser::ausloeser_harmonie_form, ausloeser_harmonie_form, ausloeser::ausloeser_midi_in, ausloeser_midi_in, ausloeser::ausloeser_typ, compiler_warning(), enthalten_in_tastenliste(), fatal_error(), get_harmonie(), midiliste::midi_code, mutC_STR, midiliste::next, harmonie::tastenliste und ausloeser::u.

Wird benutzt von check_konsistenz().

{

        struct harmonie * help_harmonie;

        if (ausloeser == NULL) return;

        if (ausloeser->ausloeser_typ == ausloeser_harmonie_form)
        {
                help_harmonie = get_harmonie (ausloeser->u.ausloeser_harmonie_form.name, list_of_harmonien);

                if (help_harmonie == NULL) {
                        fatal_error (30,
                                     mutC_STR(ausloeser->u.ausloeser_harmonie_form.name),
                                     mutC_STR(name));
                }

                if (enthalten_in_tastenliste
                                (ausloeser->u.ausloeser_harmonie_form.vortaste,
                                 help_harmonie->tastenliste) ||
                                ausloeser->u.ausloeser_harmonie_form.vortaste
                                == -1 ) {
                        /* OK */
                } else {
                        compiler_warning (2, mutC_STR(name));
                        /* Markierung setzen, fuer unmoeglichen Ausloeser */
                        ausloeser->u.ausloeser_harmonie_form.vortaste = -2;
                }

                if (enthalten_in_tastenliste
                                (ausloeser->u.ausloeser_harmonie_form.nachtaste,
                                 help_harmonie->tastenliste) ||
                                ausloeser->u.ausloeser_harmonie_form.nachtaste
                                == -1 ) {
                        /* OK */
                } else {
                        compiler_warning (2, mutC_STR(name));
                        /* Markierung setzen, fuer unmoeglichen Ausloeser */
                        ausloeser->u.ausloeser_harmonie_form.vortaste = -2;
                }
        }


        if (ausloeser->ausloeser_typ == ausloeser_harmonie)
        {
                help_harmonie = get_harmonie (ausloeser->u.ausloeser_harmonie.name, list_of_harmonien);

                if (help_harmonie == NULL) {
                        fatal_error (30,
                                     mutC_STR(ausloeser->u.ausloeser_harmonie.name),
                                     mutC_STR(name));
                }

                if (enthalten_in_tastenliste
                                (ausloeser->u.ausloeser_harmonie.vortaste,
                                 help_harmonie->tastenliste) ||
                                ausloeser->u.ausloeser_harmonie.vortaste
                                == -1 ) {
                        /* OK */
                } else {
                        compiler_warning (2, mutC_STR(name));
                        /* Markierung setzen, fuer unmoeglichen Ausloeser */
                        ausloeser->u.ausloeser_harmonie.vortaste = -2;
                }

                if (enthalten_in_tastenliste
                                (ausloeser->u.ausloeser_harmonie.nachtaste,
                                 help_harmonie->tastenliste) ||
                                ausloeser->u.ausloeser_harmonie.nachtaste
                                == -1 ) {
                        /* OK */
                } else {
                        compiler_warning (2, mutC_STR(name));
                        /* Markierung setzen, fuer unmoeglichen Ausloeser */
                        ausloeser->u.ausloeser_harmonie.vortaste = -2;
                }
        }

        if (ausloeser->ausloeser_typ == ausloeser_midi_in)
        {

                struct midiliste * midi_lauf
                                        = ausloeser->u.ausloeser_midi_in.midi_code;

                if (midi_lauf -> midi_code < 128 ||
                                midi_lauf -> midi_code > 255 ) {
                        fatal_error (50, mutC_STR(name), _C_STR(_("status byte")));
                }

                if (midi_lauf -> midi_code & 0x000F ) {
                        midi_lauf -> midi_code &= 0xFFF0;
                        compiler_warning(1,mutC_STR(name));
                }

                midi_lauf = midi_lauf -> next;

                while (midi_lauf) {
                        if (midi_lauf -> midi_code < 0 ||
                                        midi_lauf -> midi_code > 127 ) {
                                fatal_error (50, mutC_STR(name), _C_STR(_("data byte")));
                        } else
                                midi_lauf = midi_lauf -> next;
                }
        }

}
static void check_konsistenz ( void  ) [static]

Definiert in Zeile 2765 der Datei Parser.cpp.

Benutzt _(), aktions_liste::aktion_aufruf, aktion_aufruf, allgemeine_initialisierungen(), logik::anweisungsliste, anzahl_umstimmungen_und_logiken, argument_list_laenge(), anweisung::ausloeser, logik::ausloeser, ausloeser_default, ausloeser::ausloeser_typ, belege_zyklenfeld(), case_label_enthalten_in_case_liste(), check_aktionen(), check_ausloeser(), check_komplex_intervall(), compiler_warning(), logik::einstimmungs_name, fatal_error(), get_logik(), get_ton(), get_umstimmung(), logik_list_laenge(), mutC_STR, logik::name, umstimmung::name, ton::name, tonsystem::name, anweisung::next, logik::next, case_liste::next, aktions_liste::next, umstimmung::next, ton::next, tonsystem::next, parameter_list_laenge(), parser_get_tonsystem(), tonsystem::periode, tonsystem::taste, test_zyklen_nummer(), tonsystem::toene, ton_absolut, ton::ton_komplex, typ_logik, typ_umstimmung, umst_oder_logik::u, aktions_liste::u, ton::u, umstimmung::u, u_adjazent, u_test_zyklen(), umst_oder_logik::umstimmung, umstimmung_breite_abs, umstimmung_breite_rel, umstimmung_taste_abs, umstimmung_taste_rel, umstimmung::umstimmung_toene_veraendert, umstimmung_toene_veraendert, umstimmung::umstimmung_typ, umstimmung::umstimmung_umstimmungs_case, umstimmung_umstimmungs_case, umstimmung::umstimmung_umstimmungsbund, umstimmung_umstimmungsbund, umstimmung::umstimmung_wiederholung_abs, umstimmung_wiederholung_abs, umstimmung::umstimmung_wiederholung_rel, umstimmung_wiederholung_rel, umstimmungs_list_laenge(), xalloca() und xde_alloca().

Wird benutzt von mutabor_programm_einlesen().

{
        allgemeine_initialisierungen();

        /* Tonsysteme:
           öberprÅfen, ob Periode und Tîne deklariert sind
           und ob die Taste im Bereich 36 - 96 liegt.
        */

        { struct tonsystem * lauf;

                struct ton * ton_lauf;

                for (lauf = list_of_tonsysteme; lauf; lauf = lauf->next) {
                        check_komplex_intervall (lauf->periode, lauf->name);

                        if (lauf->taste < 24  ||  lauf->taste > 108) {
                                fatal_error(47,lauf->taste,mutC_STR(lauf->name)); /* UngÅlt. Taste */
                        }

                        for (ton_lauf = lauf->toene;
                                        ton_lauf;
                                        ton_lauf = ton_lauf->next) {
                                if ((ton_lauf->name != NULL) &&
                                                (get_ton (ton_lauf->name, list_of_toene) == NULL)) {
                                        fatal_error(33,mutC_STR(ton_lauf->name),mutC_STR(lauf->name));
                                }
                        }
                }
        }


        /**** Umstimmungen prÅfen, ob alle Tîne und Intervalle
              global deklariert sind, ob Umstimmungsbund und Umstimmungs_case
              keine Rekursion enthÑlt, ob case_labels eindeutig sind,
              und ob die benutzten Parameter
              zu den deklarierten Parametern passen.
        ****/

        {

                struct umstimmung * lauf;

                for (lauf = list_of_umstimmungen; lauf; lauf = lauf -> next) {
                        switch (lauf -> umstimmung_typ) {

                        default :
                                fatal_error (0, _T(__FILE__), __LINE__);

                                break;

                        case umstimmung_taste_abs :

                        case umstimmung_taste_rel :

                        case umstimmung_breite_abs :

                        case umstimmung_breite_rel :
                                break;

                        case umstimmung_wiederholung_rel :
                                check_komplex_intervall (lauf->u.umstimmung_wiederholung_rel.komplex_liste,
                                                         lauf->name);

                                break;

                        case umstimmung_wiederholung_abs :
                                check_komplex_intervall (lauf->u.umstimmung_wiederholung_abs.komplex_liste,
                                                         lauf->name);

                                break;

                        case umstimmung_toene_veraendert : {

                                struct ton * lauf_ton;

                                for (lauf_ton = lauf->u.umstimmung_toene_veraendert.tonliste;
                                                lauf_ton;
                                                lauf_ton = lauf_ton -> next) {

                                        if (lauf_ton -> name != NULL) {
                                                /*  break geht hier wegen Bug in TURBO-C nicht! break for the next tone */

                                                if (lauf_ton -> ton_typ == ton_absolut) {
                                                        fatal_error(48,mutC_STR(lauf->name), mutC_STR(lauf_ton->name));
                                                        /* nicht komplexer Ton */
                                                }

                                                if (strcmp (lauf_ton->name,
                                                                lauf_ton->u.ton_komplex.bezugston)) {
                                                        fatal_error(0,_T(__FILE__),__LINE__,_C_STR(_("retuning")));
                                                }

                                                if ((lauf_ton->name[0] != '@') &&
                                                                (get_ton (lauf_ton->name, list_of_toene) == NULL)) {
                                                        fatal_error(34,mutC_STR(lauf_ton->name),mutC_STR(lauf->name));
                                                        /* Undekl. Ton in Umst. */
                                                }

                                                check_komplex_intervall (lauf_ton->u.ton_komplex.komplex_liste,

                                                                         lauf->name);

                                        }
                                }
                        }

                        break;

                        case umstimmung_umstimmungsbund : {

                                /* Hier werden nur die LÑngen der Parameterlisten
                                   verglichen. Die Zyklenfreiheit kommt spÑter
                                */

                                struct aktions_liste * help_aktionen;

                                for (help_aktionen = lauf -> u.umstimmung_umstimmungsbund.aktions_liste;
                                                help_aktionen;
                                                help_aktionen = help_aktionen -> next) {
                                        if (help_aktionen -> aktions_typ == aktion_aufruf) {

                                                struct umstimmung * umst =
                                                                                get_umstimmung (help_aktionen -> u.aktion_aufruf.name,
                                                                                                list_of_umstimmungen);

                                                if (umst == NULL) {

                                                        struct tonsystem * tonsys =
                                                                                        parser_get_tonsystem (help_aktionen -> u.aktion_aufruf.name,
                                                                                                              list_of_tonsysteme);

                                                        if (tonsys == NULL) {

                                                                struct logik * help_logik;
                                                                help_logik = get_logik (help_aktionen -> u.aktion_aufruf.name,
                                                                                        list_of_logiken);

                                                                if (help_logik == NULL) {
                                                                        fatal_error(36,mutC_STR(help_aktionen -> u.aktion_aufruf.name)
                                                                                    ,mutC_STR(lauf->name));
                                                                        /* Umst. in Bund */
                                                                } else {
                                                                        if (help_aktionen -> u.aktion_aufruf.argument_liste != NULL) {
                                                                                fatal_error (63, mutC_STR(lauf -> name) ,
                                                                                             mutC_STR(help_aktionen -> u.aktion_aufruf.name));
                                                                        }
                                                                }
                                                        } else {
                                                                if (help_aktionen -> u.aktion_aufruf.argument_liste != NULL) {
                                                                        fatal_error (63, mutC_STR(lauf -> name), mutC_STR(help_aktionen -> u.aktion_aufruf.name));
                                                                }
                                                        }
                                                } else {
                                                        if (argument_list_laenge (help_aktionen -> u.aktion_aufruf.argument_liste)
                                                                        != parameter_list_laenge (umst -> parameter_liste)) {
                                                                fatal_error(60,mutC_STR(lauf->name),mutC_STR(help_aktionen -> u.aktion_aufruf.name));
                                                        }
                                                }
                                        }
                                }
                        }

                        break;

                        case umstimmung_umstimmungs_case : {

                                /* Hier werden nur Eindeutigkeit der case_label
                                   und die LÑngen der Parameterlisten
                                   verglichen. Die Zyklenfreiheit kommt spÑter
                                */

                                struct case_liste * case_lauf;
                                int anzahl_defaults;

                                struct aktions_liste * help_aktionen;


                                for (case_lauf = lauf->u.umstimmung_umstimmungs_case.umstimmungs_case_liste;
                                                case_lauf;
                                                case_lauf = case_lauf -> next ) {
                                        if (  !  case_lauf -> is_default  &&
                                                        case_label_enthalten_in_case_liste (case_lauf -> case_label,
                                                                                            case_lauf -> next ) ) {
                                                fatal_error (22, (int)(case_lauf -> case_label),
                                                             mutC_STR(lauf -> name));
                                        }
                                }


                                for (anzahl_defaults = 0,
                                                case_lauf = lauf->u.umstimmung_umstimmungs_case.umstimmungs_case_liste;
                                                case_lauf;
                                                case_lauf = case_lauf -> next ) {

                                        if (case_lauf -> is_default) {
                                                anzahl_defaults ++;

                                                if (anzahl_defaults > 1) {
                                                        fatal_error (21, mutC_STR(lauf -> name));
                                                }

                                                if (case_lauf -> next != NULL) {
                                                        /* compiler_warning ( ?? ANSONSTEN ist nicht letztes
                                                                              Element der case_liste  */
                                                }
                                        }

                                        for (help_aktionen = case_lauf -> case_aktion;
                                                        help_aktionen;
                                                        help_aktionen = help_aktionen -> next) {
                                                if (help_aktionen -> aktions_typ == aktion_aufruf) {

                                                        struct umstimmung * umst =
                                                                                        get_umstimmung (help_aktionen -> u.aktion_aufruf.name,
                                                                                                        list_of_umstimmungen);

                                                        if (umst == NULL) {

                                                                struct tonsystem * tonsys =
                                                                                                parser_get_tonsystem (help_aktionen -> u.aktion_aufruf.name,
                                                                                                                      list_of_tonsysteme);

                                                                if (tonsys == NULL) {

                                                                        struct logik * help_logik;
                                                                        help_logik = get_logik (help_aktionen -> u.aktion_aufruf.name,
                                                                                                list_of_logiken);

                                                                        if (help_logik == NULL) {
                                                                                fatal_error(36,mutC_STR(help_aktionen -> u.aktion_aufruf.name)
                                                                                            ,lauf->name);
                                                                                /* Umst. in Bund */
                                                                        } else {
                                                                                if (help_aktionen -> u.aktion_aufruf.argument_liste != NULL) {
                                                                                        fatal_error (64, mutC_STR(lauf -> name) ,
                                                                                                     mutC_STR(help_aktionen -> u.aktion_aufruf.name));
                                                                                }
                                                                        }
                                                                } else {
                                                                        if (help_aktionen -> u.aktion_aufruf.argument_liste != NULL) {
                                                                                fatal_error (64, mutC_STR(lauf -> name) ,
                                                                                             mutC_STR(help_aktionen -> u.aktion_aufruf.name));
                                                                        }
                                                                }
                                                        } else {
                                                                if (argument_list_laenge (help_aktionen -> u.aktion_aufruf.argument_liste)
                                                                                != parameter_list_laenge (umst -> parameter_liste)) {
                                                                        fatal_error(60, mutC_STR(lauf->name),
                                                                                    mutC_STR(help_aktionen -> u.aktion_aufruf.name));
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }

                        break;
                        }  /* of switch */
                }  /* of for */

                /**** testzyklen ****/

                {
                        int i,j,k;

                        anzahl_umstimmungen_und_logiken =
                                umstimmungs_list_laenge (list_of_umstimmungen)
                                + logik_list_laenge (list_of_logiken) ;

                        zyklen_feld = (umst_oder_logik*) xalloca (sizeof(struct umst_oder_logik) * anzahl_umstimmungen_und_logiken);
                        u_visited = (char*) xalloca (sizeof(char) * anzahl_umstimmungen_und_logiken);
                        u_matrix = (char*) xalloca (sizeof(char) * anzahl_umstimmungen_und_logiken
                                                    * anzahl_umstimmungen_und_logiken);


                        /* Feld mit Umstimmungen initialisieren (zum schnelleren Zugriff) */

                        belege_zyklenfeld (zyklen_feld, list_of_umstimmungen, list_of_logiken);

                        /* Adjazenzmatrix initialisieren (Keine Umstimmung
                                       hÑngt von einer anderen ab) */

                        for (i=0; i<anzahl_umstimmungen_und_logiken; i++) {
                                for (j=0; j<anzahl_umstimmungen_und_logiken; j++) {
                                        u_adjazent (i,j) = 0;
                                }
                        }

                        /* Adjazenzmatrix initialisieren (AbhÑngigkeiten eintragen) */

                        for (i=0; i<anzahl_umstimmungen_und_logiken; i++) {
                                if (zyklen_feld[i].umst_oder_logik_typ == typ_umstimmung &&
                                                zyklen_feld[i].u.umstimmung->umstimmung_typ == umstimmung_umstimmungsbund) {

                                        struct aktions_liste *lauf = zyklen_feld[i].u.umstimmung->u.umstimmung_umstimmungsbund.aktions_liste;

                                        for ( ; lauf ; lauf = lauf -> next ) {
                                                if (lauf -> aktions_typ == aktion_aufruf) {
                                                        if (get_umstimmung (lauf -> u.aktion_aufruf.name,
                                                                            list_of_umstimmungen) != NULL
                                                                        ||
                                                                        get_logik (lauf -> u.aktion_aufruf.name,
                                                                                   list_of_logiken) != NULL
                                                           ) {
                                                                /* Keine Tonsysteme adjazent eintragen */

                                                                u_adjazent (i, test_zyklen_nummer (lauf->u.aktion_aufruf.name)) = 1;
                                                        }
                                                }
                                        }
                                } else if (zyklen_feld[i].umst_oder_logik_typ == typ_umstimmung &&
                                                zyklen_feld[i].u.umstimmung->umstimmung_typ ==
                                                umstimmung_umstimmungs_case) {

                                        struct case_liste * case_lauf;

                                        for (case_lauf = zyklen_feld[i].u.umstimmung->u.umstimmung_umstimmungs_case.umstimmungs_case_liste;
                                                        case_lauf;
                                                        case_lauf = case_lauf -> next) {

                                                struct aktions_liste *lauf = case_lauf -> case_aktion;

                                                for ( ; lauf ; lauf = lauf -> next ) {
                                                        if (lauf -> aktions_typ == aktion_aufruf) {
                                                                if (get_umstimmung (lauf -> u.aktion_aufruf.name,
                                                                                    list_of_umstimmungen) != NULL
                                                                                ||
                                                                                get_logik (lauf -> u.aktion_aufruf.name,
                                                                                           list_of_logiken) != NULL
                                                                   ) {
                                                                        /* Keine Tonsysteme adjazent eintragen */

                                                                        u_adjazent (i, test_zyklen_nummer (lauf->u.aktion_aufruf.name)) = 1;
                                                                }
                                                        }
                                                }
                                        }
                                } else if (zyklen_feld[i].umst_oder_logik_typ == typ_logik &&
                                                zyklen_feld[i].u.logik->einstimmungs_name) {

                                        if (get_umstimmung (zyklen_feld[i].u.logik->einstimmungs_name,
                                                            list_of_umstimmungen) != NULL) {
                                                /* Keine Tonsysteme adjazent eintragen */

                                                u_adjazent (i, test_zyklen_nummer (zyklen_feld[i].u.logik->einstimmungs_name)) = 1;
                                        }
                                }
                        }

#ifdef DEBUG_ANZEIGE_2
                        /* Adjazenzmatrix anzeigen */

                        printf ("U_Matrix:\n");

                        for (i=0; i<anzahl_umstimmungen_und_logiken; i++) {
                                if (zyklen_feld[i].umst_oder_logik_typ == typ_umstimmung)
                                        printf ("Umstimmung %s -> ", zyklen_feld[i].u.umstimmung->name);
                                else
                                        printf ("Logik %s -> ", zyklen_feld[i].u.logik->name);

                                for (j=0; j<anzahl_umstimmungen_und_logiken; j++) {
                                        if (u_adjazent (i,j))
                                                if (zyklen_feld[j].umst_oder_logik_typ == typ_umstimmung)
                                                        printf ("Umstimmung %s ", zyklen_feld[j].u.umstimmung->name);
                                                else
                                                        printf ("Logik %s -> ", zyklen_feld[j].u.logik->name);
                                }

                                printf ("\n");
                        }

                        printf ("\n");

#endif

                        /* auf Zyklenfreiheit Pruefen */

                        for (k=0; k<anzahl_umstimmungen_und_logiken; k++)
                                u_visited [k] = 0;

                        for (k=0; k<anzahl_umstimmungen_und_logiken; k++) {
                                u_visited [k] = 1;
                                u_test_zyklen (k);
                                u_visited [k] = 0;
                        }


#ifdef DEBUG_ANZEIGE_2
                        /* Adjazenzmatrix anzeigen */

                        printf ("U_Matrix:\n");

                        for (i=0; i<anzahl_umstimmungen_und_logiken; i++) {
                                if (zyklen_feld[i].umst_oder_logik_typ == typ_umstimmung)
                                        printf ("Umstimmung %s -> ", zyklen_feld[i].u.umstimmung->name);
                                else
                                        printf ("Logik %s -> ", zyklen_feld[i].u.logik->name);

                                for (j=0; j<anzahl_umstimmungen_und_logiken; j++) {
                                        if (u_adjazent (i,j))
                                                if (zyklen_feld[j].umst_oder_logik_typ == typ_umstimmung)
                                                        printf ("Umstimmung %s ", zyklen_feld[j].u.umstimmung->name);
                                                else
                                                        printf ("Logik %s -> ", zyklen_feld[j].u.logik->name);
                                }

                                printf ("\n");
                        }

                        printf ("\n");

#endif

                        xde_alloca (zyklen_feld);
                        xde_alloca (u_visited);
                        xde_alloca (u_matrix);

                }


                /******* ende testzyklen **/

        }


        /* Logiken:
           öberprÅfen, ob Einstimmung deklariert ist
           und ob die Anweisungen korrekt deklariert sind.
        */


#if 1

        { struct logik * lauf;

                struct anweisung * anweisungs_lauf;
                int anzahl_default_ausloeser;

                for (lauf = list_of_logiken; lauf; lauf = lauf->next) {

                        struct umstimmung * help_umstimmung;

                        check_ausloeser (lauf->ausloeser, lauf->name);

                        /* Eine Logik darf nicht mit dem DEFAULT-Auslîser aufgerufen werden */

                        if (lauf->ausloeser) {
                                if (lauf->ausloeser->ausloeser_typ == ausloeser_default) {
                                        fatal_error (51, mutC_STR(lauf->name));
                                }
                        }

                        if (lauf->einstimmungs_name!=NULL) {
                                if (parser_get_tonsystem (lauf->einstimmungs_name, list_of_tonsysteme) == NULL) {
                                        if ((help_umstimmung=get_umstimmung (lauf->einstimmungs_name, list_of_umstimmungen)) == NULL) {
                                                fatal_error(37,mutC_STR(lauf->einstimmungs_name),
                                                            mutC_STR(lauf->name));
                                                /* Einst. in Logik */
                                        } else {
                                                if (parameter_list_laenge (help_umstimmung -> parameter_liste) != 0) {
                                                        fatal_error(62, mutC_STR(lauf->name),
                                                                    mutC_STR(lauf->einstimmungs_name));
                                                }
                                        }
                                }
                        }

                        for (anweisungs_lauf = lauf->anweisungsliste,
                                        anzahl_default_ausloeser = 0;
                                        anweisungs_lauf;
                                        anweisungs_lauf = anweisungs_lauf->next) {

                                check_ausloeser (anweisungs_lauf->ausloeser, lauf->name);

                                if (anweisungs_lauf->ausloeser == NULL)
                                        fatal_error (0, _T(__FILE__), __LINE__);
                                else {
                                        if (anweisungs_lauf->ausloeser->ausloeser_typ
                                                        == ausloeser_default) {
                                                anzahl_default_ausloeser ++;

                                                if (anzahl_default_ausloeser > 1) {
                                                        fatal_error (20, mutC_STR(lauf -> name));
                                                } else {
                                                        if (anweisungs_lauf -> next != NULL)
                                                                compiler_warning (4, mutC_STR(lauf -> name));
                                                }
                                        }
                                }

                                check_aktionen (anweisungs_lauf -> aktion, lauf->name);

                        }
                }
        }
#endif
}
void clear_protokoll_screen ( void  )
int compare_harmonie ( int  breite,
int  startindex,
PATTERNN laufzeit,
PATTERNN vergleich 
)

Definiert in Zeile 454 der Datei Execute.cpp.

Benutzt PTRN::tonigkeit.

Wird benutzt von HarmonyAnalysis().

{
        int i;

        for (i=0;i<breite; i++,startindex++) {
                if ( vergleich->tonigkeit[i] ) {
                        /* Bedeutung: vergleich: 0(egal) 1(off)   2(on)
                                      laufzeit:          0(off)  >0(on)   */

                        if ( vergleich->tonigkeit[i]==1 &&
                                        laufzeit->tonigkeit[startindex%breite] )
                                /* vergleich = off, aber laufzeit != off */
                                return 0 ;
                        if ( vergleich->tonigkeit[i]!=1 &&
                                        laufzeit->tonigkeit[startindex%breite]==0 )
                                /* vergleich = on , aber laufzeit = off */
                                return 0 ;
                }
        }
        return 1;
}
void compiler_warning ( int  nr,
  ... 
)

Definiert in Zeile 302 der Datei GrafKern.cpp.

Benutzt _(), DEBUGLOGBASE, Fmeldung und Warning_text.

Wird benutzt von check_aktionen(), check_ausloeser(), check_konsistenz() und InGis::Open().

{
        va_list arglist;
        va_start(arglist,nr);
#ifdef MUTWIN
        DEBUGLOGBASE (other,_T(""), _T("testing %s"), _T("%s"));
        DEBUGLOGBASE (other,_T(""),
                      _T("Compiler warning %d: %s"),
                      nr,
                      Warning_text[nr]);
#if defined(WX)
        wxMessageBox(wxString::FormatV(wxGetTranslation(Warning_text[nr]),
                                       arglist),
                     _("Compiler warning"),
                     wxOK | wxICON_ASTERISK );
#else
        char Fmeldung[255];
        vsprintf( Fmeldung, Warning_text[nr], arglist );
        MessageBox(0, Fmeldung, "Compiler warning", MB_OK | MB_ICONASTERISK );
#endif
#endif
}
static int* create_midi_scan_liste ( struct midiliste lauf) [static]

Definiert in Zeile 774 der Datei TabGen.cpp.

Benutzt midiliste::midi_code, midi_list_laenge(), midiliste::next und xcalloc().

Wird benutzt von insert_in_globale_liste() und insert_in_lokale_liste().

{
        int j, k, * ret;

        j = midi_list_laenge (lauf);

        ret = (int*) xcalloc((size_t)(j+1), sizeof(int));

        for (k=0; lauf; lauf=lauf->next, k++)
                ret [k] = lauf->midi_code;

        ret [k] = -1;

        return ret;
}
void Delete_Key ( int  instr,
int  key 
)
void DeleteKey ( int  box,
int  taste,
int  id 
)

Definiert in Zeile 552 der Datei Execute.cpp.

Benutzt GET_INDEX, HarmonyAnalysis(), KEY_CHANGED, last_note_id, liegende_tasten, liegende_tasten_max, mut_box, harmonie_ereignis::pattern, mutabor_box_type::pattern und PTRN::tonigkeit.

Wird benutzt von InGis::Proceed(), InMidiPort::ProceedRoute() und InMidiFile::ProceedRoute().

{
        for (int i=0; i<liegende_tasten_max[box]; i++)
                if ( liegende_tasten[box][i] == taste ) {
                        liegende_tasten[box][i] =
                                liegende_tasten[box][--liegende_tasten_max[box]];
                        mut_box[box].pattern.tonigkeit[GET_INDEX(taste,mut_box[box].tonesystem)]--;
                        last_note_id[box] = (id << 16) + (box << 8) +  taste;
                        HarmonyAnalysis(box, &mut_box[box].pattern);
                        last_note_id[box] = 0;
                        KEY_CHANGED(box);
                        break;
                }
}
void drucke_keyboard_liste ( int  instr)
void eintrage_parameterliste_in_umstimmung ( void  )

Definiert in Zeile 1263 der Datei Parser.cpp.

Benutzt get_last_parameter_liste().

Wird benutzt von yyparse().

void enable_protokoll_frame ( void  )
int enthalten_in_tastenliste ( int  taste,
struct taste lauf 
)

Definiert in Zeile 2432 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von check_ausloeser().

{
        while (lauf)
                if (lauf -> code == taste)
                        return 1;
                else
                        lauf = lauf -> next;

        return 0;
}
void execute_aktion ( int  box,
struct do_aktion aktion 
)

Definiert in Zeile 124 der Datei Execute.cpp.

Benutzt _(), AktionenMessage(), TSYS::anker, do_aktion::aufruf_logik, aufruf_logik, do_aktion::aufruf_midi_out, aufruf_midi_out, do_aktion::aufruf_tonsystem, aufruf_tonsystem, do_aktion::aufruf_typ, do_aktion::aufruf_umst_breite_abs, aufruf_umst_breite_abs, do_aktion::aufruf_umst_breite_rel, aufruf_umst_breite_rel, do_aktion::aufruf_umst_taste_abs, aufruf_umst_taste_abs, do_aktion::aufruf_umst_taste_rel, aufruf_umst_taste_rel, do_aktion::aufruf_umst_toene_veraendert, aufruf_umst_toene_veraendert, aufruf_umst_umst_bund, do_aktion::aufruf_umst_umst_case, aufruf_umst_umst_case, do_aktion::aufruf_umst_wiederholung_abs, aufruf_umst_wiederholung_abs, do_aktion::aufruf_umst_wiederholung_rel, aufruf_umst_wiederholung_rel, TSYS::breite, case_element::case_aktion, case_element::case_wert, change_anker(), change_breite(), char, ton_einstell::einstell_absolut, einstell_absolut, einstell_gleich, ton_einstell::einstell_relativ, einstell_relativ, einstell_stumm, HarmonyAnalysis(), case_element::is_default, KEY_CHANGED, last_global_harmonie, last_global_keyboard, last_global_midi, logic_changed, midiliste::midi_code, MidiOut(), mut_box, do_aktion::name, midiliste::next, case_element::next, ton_einstell::next, NotesCorrect(), TSYS::periode, ton_einstell::ton_einstell_typ, mutabor_box_type::tonesystem, ton_einstell::u, do_aktion::u und update_pattern().

Wird benutzt von HarmonyAnalysis(), KeyboardAnalyse(), KeyboardAnalyseSimple() und MidiAnalysis().

{
        bool WasNewLogic = false;

        for ( ; aktion; aktion = aktion -> next)
        {
                AktionenMessage(box, aktion->name);
                switch (aktion->aufruf_typ) {
                case aufruf_logik:
                        execute_aktion (box, aktion->u.aufruf_logik.einstimmung);
                        * last_global_keyboard[box] =
                                * aktion->u.aufruf_logik.lokal_keyboard;
                        * last_global_harmonie[box] =
                                * aktion->u.aufruf_logik.lokal_harmonie;
                        * last_global_midi[box] =
                                * aktion->u.aufruf_logik.lokal_midi;
                        WasNewLogic = true;
                        break;

                case aufruf_tonsystem:
                        * mut_box[box].tonesystem =
                                * aktion->u.aufruf_tonsystem.tonsystem;
                        update_pattern(box);

#ifdef NOTES_CORRECT_SOFORT
                        NotesCorrect(box);

#endif
                        KEY_CHANGED(box);

                        break;

                case aufruf_umst_taste_abs:
                        change_anker(box,
                                     aktion->u.aufruf_umst_taste_abs.wert[box]);

                        update_pattern(box);

#ifdef NOTES_CORRECT_SOFORT
                        NotesCorrect(box);

#endif
                        KEY_CHANGED(box);

                        break;

                case aufruf_umst_breite_abs:
                        change_breite(box,
                                      aktion->u.aufruf_umst_breite_abs.wert[box]);

                        update_pattern(box);

#ifdef NOTES_CORRECT_SOFORT
                        NotesCorrect(box);

#endif
                        KEY_CHANGED(box);

                        break;

                case aufruf_umst_wiederholung_abs:
                        mut_box[box].tonesystem->periode =
                                aktion->u.aufruf_umst_wiederholung_abs.faktor;

#ifdef NOTES_CORRECT_SOFORT
                        NotesCorrect(box);

#endif
                        KEY_CHANGED(box);

                        break;

                case aufruf_umst_wiederholung_rel:
                        mut_box[box].tonesystem->periode +=
                                aktion->u.aufruf_umst_wiederholung_rel.faktor;

#ifdef NOTES_CORRECT_SOFORT
                        NotesCorrect(box);

#endif
                        KEY_CHANGED(box);

                        break;

                case aufruf_umst_taste_rel: {
                        int help;
                        help = mut_box[box].tonesystem->anker;

                        switch (aktion->u.aufruf_umst_taste_rel.rechenzeichen) {

                        case '+':
                                help += aktion->u.aufruf_umst_taste_rel.wert[box];

                                break;

                        case '-':
                                help -= aktion->u.aufruf_umst_taste_rel.wert[box];

                                break;
                        }

                        change_anker(box, help);

                        update_pattern(box);
#ifdef NOTES_CORRECT_SOFORT
                        NotesCorrect(box);
#endif
                        KEY_CHANGED(box);
                }

                break;

                case aufruf_umst_breite_rel: {
                        int help;
                        help = mut_box[box].tonesystem->breite;

                        switch (aktion->u.aufruf_umst_breite_rel.rechenzeichen) {

                        case '+':
                                help += aktion->u.aufruf_umst_breite_rel.wert[box];

                                break;

                        case '-':
                                help -= aktion->u.aufruf_umst_breite_rel.wert[box];

                                break;

                        case '*':
                                help *= aktion->u.aufruf_umst_breite_rel.wert[box];

                                break;

                        case '/':
                                help /= aktion->u.aufruf_umst_breite_rel.wert[box];

                                break;
                        }

                        change_breite(box, help);

                        update_pattern(box);
#ifdef NOTES_CORRECT_SOFORT
                        NotesCorrect(box);
#endif
                        KEY_CHANGED(box);
                }

                break;

                case aufruf_umst_toene_veraendert: {
                        long * ton_zeiger;

                        struct ton_einstell * lauf;

                        for (ton_zeiger = mut_box[box].tonesystem->ton,
                                        lauf = aktion->u.aufruf_umst_toene_veraendert.tonliste;
                                        lauf;
                                        lauf = lauf->next, ton_zeiger ++) {

                                switch (lauf->ton_einstell_typ) {

                                case einstell_stumm:
                                        * ton_zeiger = 0;

                                        break;

                                case einstell_gleich:
                                        /* nichts tun */
                                        break;

                                case einstell_absolut:
                                        * ton_zeiger = lauf->u.einstell_absolut.wert;

                                        break;

                                case einstell_relativ:
                                        * ton_zeiger += lauf->u.einstell_relativ.wert;

                                        break;

                                }

                        }

#ifdef NOTES_CORRECT_SOFORT
                        NotesCorrect(box);

#endif
                        KEY_CHANGED(box);
                }
                break;

                case aufruf_umst_umst_case: {
                        struct case_element * lauf;
                        int i;
                        i=aktion->u.aufruf_umst_umst_case.wert[box];

                        for (lauf = aktion->u.aufruf_umst_umst_case.umst_case;
                                        lauf;
                                        lauf = lauf->next) {
                                if ( (i == lauf->case_wert) || (lauf->is_default)) {
                                        execute_aktion (box, lauf->case_aktion);
                                        return;
                                }
                        }
                }
                break;

                case aufruf_midi_out: {
                        struct midiliste * lauf;
                        unsigned long data = 0, faktor = 1, n = 0;
                        ;

                        for (lauf = aktion->u.aufruf_midi_out.out_liste;
                                        lauf && faktor ;
                                        lauf = lauf -> next) {
                                data += faktor * (unsigned char) lauf->midi_code;
                                faktor *= 0x100;
                                n++;
                        }
                        MidiOut(box, data, n);
                }
                break;

                case aufruf_umst_umst_bund:
                        wxLogWarning(_("Unhandled case path: aufruf_umst_umst_bund"));
                        break;

                default:
                        wxLogError(_("Unexpected action type: %d"), aktion->aufruf_typ);
                }
        }

        // check harmonies instantly
        if ( WasNewLogic ) {
                // \todo Check, if this is necessary or used
                HarmonyAnalysis(box, &(mut_box[box].pattern));
                logic_changed[box] = true;
        }

#ifndef NOTES_CORRECT_SOFORT
        NotesCorrect(box);
#endif
}
void exit_laufzeit_protokoll ( void  )
static struct do_aktion* expand_aktions_liste ( struct aktions_liste the_liste,
struct interpreter_parameter_liste aktuelle_parameter 
) [static, read]

Definiert in Zeile 463 der Datei TabGen.cpp.

Benutzt aktion_aufruf, aktion_midi_out, expandiere_midi(), expandiere_name(), fatal_error(), do_aktion::next und do_aktion::u.

Wird benutzt von expand_case_liste(), expandiere_umstimmung() und insert_in_lokale_liste().

{

        struct do_aktion * help_1, * help_2, ** help_3;

        if (the_liste == NULL) return NULL;

        if (the_liste -> aktions_typ == aktion_aufruf)
        {
                help_1 = expandiere_name (the_liste -> u.aktion_aufruf.name,
                                          the_liste -> u.aktion_aufruf.argument_liste,
                                          aktuelle_parameter);
        } else if (the_liste -> aktions_typ == aktion_midi_out)
        {
                help_1 = expandiere_midi (the_liste -> u.aktion_midi_out.midi_code);
        } else
                fatal_error (0, __FILE__, __LINE__);

        help_2 = expand_aktions_liste (the_liste -> next, aktuelle_parameter);

        for (help_3 = & help_1; * help_3; help_3 = & (*help_3)->next)
                ;

        * help_3 = help_2;

        return help_1;

}
static struct case_element* expand_case_liste ( struct case_liste the_liste,
struct interpreter_parameter_liste aktuelle_parameter 
) [static, read]

Definiert in Zeile 497 der Datei TabGen.cpp.

Benutzt case_liste::case_aktion, case_liste::case_label, expand_aktions_liste(), case_liste::is_default, case_liste::next und xmalloc().

Wird benutzt von expandiere_umstimmung().

{

        struct case_element * start_liste = NULL;

        struct case_element ** ende_liste = & start_liste;

        struct case_liste * lauf_liste;

        for (lauf_liste = the_liste; lauf_liste; lauf_liste = lauf_liste -> next)
        {
                if ( ! lauf_liste -> is_default ) {

                        *ende_liste = (case_element*) xmalloc (sizeof (struct case_element));
                        (*ende_liste) -> case_wert = lauf_liste -> case_label;
                        (*ende_liste) -> is_default = 0;
                        (*ende_liste) -> case_aktion =
                                expand_aktions_liste (
                                        lauf_liste -> case_aktion,
                                        aktuelle_parameter);
                        (*ende_liste) -> next = NULL;
                        ende_liste = & (*ende_liste) -> next;
                }
        }

        for (lauf_liste = the_liste; lauf_liste; lauf_liste = lauf_liste -> next)
        {
                if ( lauf_liste -> is_default ) {

                        *ende_liste = (case_element*) xmalloc (sizeof (struct case_element));
                        (*ende_liste) -> case_wert = lauf_liste -> case_label;
                        (*ende_liste) -> is_default = 1;
                        (*ende_liste) -> case_aktion =
                                expand_aktions_liste (
                                        lauf_liste -> case_aktion,
                                        aktuelle_parameter);
                        (*ende_liste) -> next = NULL;
                        ende_liste = & (*ende_liste) -> next;
                }
        }

        return start_liste;
}
PATTERNN* expand_pattern ( const char harmonie_name)

Definiert in Zeile 790 der Datei TabGen.cpp.

Benutzt taste::code, fatal_error(), get_harmonie(), list_of_harmonien, MAX_BREITE, taste::next, taste::stern, harmonie::tastenliste, PTRN::tonigkeit und xmalloc().

Wird benutzt von insert_in_globale_liste() und insert_in_lokale_liste().

{

        struct harmonie * the_harmonie;
        PATTERNN * help;
        int i;

        struct taste * lauf_taste;

        the_harmonie = get_harmonie (harmonie_name, list_of_harmonien);

        if (the_harmonie == NULL) {
                fatal_error (0, __FILE__, __LINE__);
        }

        help = (PTRN*) xmalloc (sizeof (PATTERNN));

        for (i=0;i<MAX_BREITE;i++) help->tonigkeit[i]=1; /* Off */

        for (lauf_taste = the_harmonie->tastenliste;
                        lauf_taste;
                        lauf_taste = lauf_taste -> next) {
                if (lauf_taste->stern=='*')
                        help->tonigkeit[lauf_taste->code]=0; /* Egal */
                else
                        help->tonigkeit[lauf_taste->code]=2; /* On */
        }

        return help;
}
static struct ton_einstell* expand_tonliste ( struct ton the_tonliste) [static, read]

Definiert in Zeile 303 der Datei TabGen.cpp.

Benutzt DOUBLE_TO_LONG, einstell_absolut, einstell_gleich, einstell_relativ, einstell_stumm, FAKTOR_TO_MIDI, fatal_error(), FREQUENZ_TO_MIDI, get_komplex_faktor(), get_komplex_frequenz(), ton::name, ton_einstell::next, ton::ton_absolut, ton_absolut, ton::ton_komplex, ton_komplex, ton::u, ton_einstell::u und xmalloc().

Wird benutzt von expandiere_umstimmung().

{

        struct ton_einstell * help;

        if (the_tonliste == NULL) return NULL;

        help = (ton_einstell*) xmalloc (sizeof (struct ton_einstell));

        switch (the_tonliste -> ton_typ)
        {

        default:
                fatal_error (0, __FILE__, __LINE__);

        case ton_absolut:
                if (the_tonliste->name) {
                        help -> ton_einstell_typ = einstell_absolut;
                        help -> u.einstell_absolut.wert =
                                DOUBLE_TO_LONG (
                                        FREQUENZ_TO_MIDI(
                                                the_tonliste->u.ton_absolut.ton_wert));
                } else {
                        help -> ton_einstell_typ = einstell_stumm;
                }

                break;

        case ton_komplex:
                if (the_tonliste->name == NULL) {
                        help -> ton_einstell_typ = einstell_stumm;
                } else
                        if ( ! strcmp (the_tonliste->name, "@")) {
                                if (the_tonliste->u.ton_komplex.komplex_liste) {
                                        help -> ton_einstell_typ = einstell_relativ;
                                        help -> u.einstell_relativ.wert =
                                                DOUBLE_TO_LONG (
                                                        FAKTOR_TO_MIDI (
                                                                get_komplex_faktor (the_tonliste->u.ton_komplex.komplex_liste)));
                                } else {
                                        help -> ton_einstell_typ = einstell_gleich;
                                }
                        } else { /* normaler ton */
                                help -> ton_einstell_typ = einstell_absolut;
                                help -> u.einstell_absolut.wert =
                                        DOUBLE_TO_LONG (
                                                FREQUENZ_TO_MIDI (
                                                        get_komplex_frequenz (the_tonliste)));

                        }

                break;
        }

        help -> next = expand_tonliste (the_tonliste -> next);

        return help;


}
static void expandiere_in_globale_liste ( void  ) [static]

Definiert in Zeile 1105 der Datei TabGen.cpp.

Benutzt midi_ereignis::aktion, expandiere_logik(), MAX_BOX, midi_ereignis::next und midi_ereignis::the_logik_to_expand.

Wird benutzt von mutabor_tabellen_generator().

{

        struct harmonie_ereignis * lauf_harmonie [MAX_BOX];

        struct keyboard_ereignis * lauf_keyboard [MAX_BOX];

        struct midi_ereignis     * lauf_midi     [MAX_BOX];
        int i;

        for (i=0; i<MAX_BOX; i++) {
                lauf_harmonie[i] = first_harmonie[i];
                lauf_keyboard[i] = first_keyboard[i];
                lauf_midi    [i] = first_midi    [i];
        }

        while (lauf_harmonie[0]) {
                int j;

                lauf_harmonie[0] -> aktion =
                        expandiere_logik (lauf_harmonie[0] -> the_logik_to_expand);

                for (j=1; j<MAX_BOX; j++) {
                        lauf_harmonie[j] -> aktion = lauf_harmonie[0] -> aktion;
                }

                for (j=0; j<MAX_BOX; j++) {
                        lauf_harmonie[j] = lauf_harmonie[j] -> next;
                }
        }



        while (lauf_keyboard[0]) {
                int j;

                lauf_keyboard[0] -> aktion =
                        expandiere_logik (lauf_keyboard[0] -> the_logik_to_expand);

                for (j=1; j<MAX_BOX; j++) {
                        lauf_keyboard[j] -> aktion = lauf_keyboard[0] -> aktion;
                }

                for (j=0; j<MAX_BOX; j++) {
                        lauf_keyboard[j] = lauf_keyboard[j] -> next;
                }
        }



        while (lauf_midi[0]) {
                int j;

                lauf_midi[0] -> aktion =
                        expandiere_logik (lauf_midi[0] -> the_logik_to_expand);

                for (j=1; j<MAX_BOX; j++) {
                        lauf_midi[j] -> aktion = lauf_midi[0] -> aktion;
                }

                for (j=0; j<MAX_BOX; j++) {
                        lauf_midi[j] = lauf_midi[j] -> next;
                }
        }

}
static struct do_aktion* expandiere_logik ( struct logik the_logik) [static, read]

Definiert in Zeile 413 der Datei TabGen.cpp.

Benutzt aufruf_logik, logik::einstimmungs_name, expandiere_tonsystem(), expandiere_umstimmung(), fatal_error(), get_logik_nummer(), get_umstimmung(), list_of_logiken, list_of_tonsysteme, list_of_umstimmungen, name, umstimmung::next, parser_get_tonsystem(), umstimmung::u und xmalloc().

Wird benutzt von expandiere_in_globale_liste() und expandiere_name().

{

        struct do_aktion * help;
        int i;

        help = (do_aktion*) xmalloc (sizeof (struct do_aktion));
        help -> name = the_logik -> name;
        help -> aufruf_typ = aufruf_logik;

        if (the_logik -> einstimmungs_name)
        {

                struct tonsystem * help_tonsystem;

                struct umstimmung * help_umstimmung;
                help_tonsystem = parser_get_tonsystem (the_logik->einstimmungs_name,
                                                       list_of_tonsysteme);

                if (help_tonsystem) {
                        help -> u.aufruf_logik.einstimmung = expandiere_tonsystem (help_tonsystem);
                } else {
                        help_umstimmung = get_umstimmung (the_logik->einstimmungs_name,
                                                          list_of_umstimmungen);

                        if (help_umstimmung) {
                                help -> u.aufruf_logik.einstimmung = expandiere_umstimmung (help_umstimmung, NULL);
                        } else {
                                fatal_error (0, __FILE__, __LINE__);
                                help -> u.aufruf_logik.einstimmung = NULL;
                        }
                }
        } else
                help -> u.aufruf_logik.einstimmung = NULL;

        i = get_logik_nummer (the_logik -> name, list_of_logiken);

        help -> u.aufruf_logik.lokal_harmonie = & first_lokal_harmonie [i];

        help -> u.aufruf_logik.lokal_keyboard = & first_lokal_keyboard [i];

        help -> u.aufruf_logik.lokal_midi     = & first_lokal_midi     [i];

        help -> next = NULL;

        return help;
}
static struct do_aktion * expandiere_midi ( struct midiliste liste) [static, read]

Definiert in Zeile 759 der Datei TabGen.cpp.

Benutzt aufruf_midi_out, name, do_aktion::next, do_aktion::u und xmalloc().

Wird benutzt von expand_aktions_liste().

{

        struct do_aktion * help;

        help = (do_aktion*) xmalloc (sizeof (struct do_aktion));
        help -> name = "MidiOut";
        help -> aufruf_typ = aufruf_midi_out;
        help -> u.aufruf_midi_out.out_liste = liste;
        help -> next = NULL;

        return help;
}
static struct do_aktion * expandiere_name ( const char name,
struct argument_liste parameter,
struct interpreter_parameter_liste bezugs_liste 
) [static, read]

Definiert in Zeile 706 der Datei TabGen.cpp.

Benutzt expandiere_logik(), expandiere_tonsystem(), expandiere_umstimmung(), fatal_error(), gen_parameter_liste(), get_logik(), get_umstimmung(), list_of_logiken, list_of_tonsysteme, list_of_umstimmungen und parser_get_tonsystem().

Wird benutzt von expand_aktions_liste().

{

        struct logik * help_logik;

        struct tonsystem * help_tonsystem;

        struct umstimmung * help_umstimmung;

        if (name == NULL) return NULL;


        help_logik = get_logik (name, list_of_logiken);

        if (help_logik)
        {

                return expandiere_logik (help_logik);

        } else
        {

                help_tonsystem = parser_get_tonsystem (name, list_of_tonsysteme);

                if (help_tonsystem) {

                        return expandiere_tonsystem (help_tonsystem);

                } else {

                        help_umstimmung = get_umstimmung (name, list_of_umstimmungen);

                        if (help_umstimmung) {

                                struct interpreter_parameter_liste * aktuelle_parameter;
                                aktuelle_parameter = gen_parameter_liste (parameter, bezugs_liste);
                                return expandiere_umstimmung (help_umstimmung,
                                                              aktuelle_parameter);

                        } else
                                fatal_error (0, __FILE__, __LINE__);

                        return NULL;
                }
        }

}
static struct do_aktion* expandiere_tonsystem ( struct tonsystem the_tonsystem) [static, read]

Definiert in Zeile 365 der Datei TabGen.cpp.

Benutzt aufruf_tonsystem, DOUBLE_TO_LONG, FAKTOR_TO_MIDI, FREQUENZ_TO_MIDI, get_ton(), get_wert_komplex_intervall(), list_of_toene, ton::name, name, ton::next, toene, TSYS::ton, ton_list_laenge(), ton::u und xmalloc().

Wird benutzt von expandiere_logik() und expandiere_name().

{

        struct do_aktion * help;
        tone_system * help_tonsystem;

        help = (do_aktion*) xmalloc (sizeof (struct do_aktion));
        help -> name = the_tonsystem -> name;
        help -> aufruf_typ = aufruf_tonsystem;

        help_tonsystem = (TSYS*) xmalloc (sizeof (tone_system));
        help_tonsystem -> anker = the_tonsystem -> taste;
        help_tonsystem -> breite = ton_list_laenge (the_tonsystem -> toene);
        help_tonsystem -> periode =
                DOUBLE_TO_LONG (
                        FAKTOR_TO_MIDI (
                                get_wert_komplex_intervall (
                                        the_tonsystem -> periode)));

        {

                struct ton * ton_lauf;
                int i;

                for (ton_lauf = the_tonsystem -> toene , i = 0 ;
                                ton_lauf;
                                ton_lauf = ton_lauf -> next , i++ ) {
                        if (ton_lauf->name) {
                                help_tonsystem->ton[i] =
                                        DOUBLE_TO_LONG( FREQUENZ_TO_MIDI(
                                                                get_ton (
                                                                        ton_lauf -> name, list_of_toene)
                                                                -> u.ton_absolut.ton_wert));
                        } else {
                                help_tonsystem->ton[i] = 0 ;
                        }
                }
        }

        help -> u.aufruf_tonsystem.tonsystem = help_tonsystem;
        help -> next = NULL;

        return help;
}
static struct do_aktion * expandiere_umstimmung ( struct umstimmung the_umstimmung,
struct interpreter_parameter_liste aktuelle_parameter 
) [static, read]

Definiert in Zeile 546 der Datei TabGen.cpp.

Benutzt aufruf_midi_out, aufruf_umst_breite_abs, aufruf_umst_breite_rel, aufruf_umst_taste_abs, aufruf_umst_taste_rel, aufruf_umst_toene_veraendert, aufruf_umst_umst_case, aufruf_umst_wiederholung_abs, aufruf_umst_wiederholung_rel, DOUBLE_TO_LONG, expand_aktions_liste(), expand_case_liste(), expand_tonliste(), FAKTOR_TO_MIDI, fatal_error(), get_wert_komplex_intervall(), get_wert_of_argument(), name, do_aktion::next, umstimmung::u, do_aktion::u, umstimmung::umstimmung_breite_abs, umstimmung_breite_abs, umstimmung::umstimmung_breite_rel, umstimmung_breite_rel, umstimmung::umstimmung_midi_out, umstimmung_midi_out, umstimmung::umstimmung_taste_abs, umstimmung_taste_abs, umstimmung::umstimmung_taste_rel, umstimmung_taste_rel, umstimmung::umstimmung_toene_veraendert, umstimmung_toene_veraendert, umstimmung::umstimmung_umstimmungs_case, umstimmung_umstimmungs_case, umstimmung::umstimmung_umstimmungsbund, umstimmung_umstimmungsbund, umstimmung::umstimmung_wiederholung_abs, umstimmung_wiederholung_abs, umstimmung_wiederholung_rel, xfree() und xmalloc().

Wird benutzt von expandiere_logik() und expandiere_name().

{

        struct do_aktion * help;

        help = (do_aktion*) xmalloc (sizeof (struct do_aktion));
        help -> name = the_umstimmung -> name;

        switch (the_umstimmung -> umstimmung_typ)
        {

        case umstimmung_taste_abs:
                help -> aufruf_typ = aufruf_umst_taste_abs;

                help -> u.aufruf_umst_taste_abs.wert =
                        get_wert_of_argument ( & the_umstimmung->u.umstimmung_taste_abs.argument,
                                               aktuelle_parameter);

                help -> next = NULL;

                return help;

                /*        break; */

        case umstimmung_breite_abs:
                help -> aufruf_typ = aufruf_umst_breite_abs;

                help -> u.aufruf_umst_breite_abs.wert =
                        get_wert_of_argument ( & the_umstimmung->u.umstimmung_breite_abs.argument,
                                               aktuelle_parameter);

                help -> next = NULL;

                return help;

                /*        break; */

        case umstimmung_wiederholung_abs:
                help -> aufruf_typ = aufruf_umst_wiederholung_abs;

                help -> u.aufruf_umst_wiederholung_abs.faktor =
                        DOUBLE_TO_LONG (
                                FAKTOR_TO_MIDI (
                                        get_wert_komplex_intervall (
                                                the_umstimmung->u.umstimmung_wiederholung_abs.komplex_liste)));

                help -> next = NULL;

                return help;

                /*        break; */

        case umstimmung_wiederholung_rel:
                help -> aufruf_typ = aufruf_umst_wiederholung_rel;

                help -> u.aufruf_umst_wiederholung_rel.faktor =
                        DOUBLE_TO_LONG (
                                FAKTOR_TO_MIDI (
                                        get_wert_komplex_intervall (
                                                the_umstimmung->u.umstimmung_wiederholung_abs.komplex_liste)));

                help -> next = NULL;

                return help;

                /*        break; */

        case umstimmung_taste_rel:
                help -> aufruf_typ = aufruf_umst_taste_rel;

                help -> u.aufruf_umst_taste_rel.wert =
                        get_wert_of_argument ( & the_umstimmung->u.umstimmung_taste_rel.argument,
                                               aktuelle_parameter);

                help -> u.aufruf_umst_taste_rel.rechenzeichen = the_umstimmung->u.umstimmung_taste_rel.rechenzeichen;

                help -> next = NULL;

                return help;

                /*        break; */

        case umstimmung_breite_rel:
                help -> aufruf_typ = aufruf_umst_breite_rel;

                help -> u.aufruf_umst_breite_rel.wert =
                        get_wert_of_argument ( & the_umstimmung->u.umstimmung_breite_rel.argument,
                                               aktuelle_parameter);

                help -> u.aufruf_umst_breite_rel.rechenzeichen = the_umstimmung->u.umstimmung_breite_rel.rechenzeichen;

                help -> next = NULL;

                return help;

                /*        break; */

        case umstimmung_toene_veraendert:
                help -> aufruf_typ = aufruf_umst_toene_veraendert;

                help -> u.aufruf_umst_toene_veraendert.tonliste =
                        expand_tonliste ( the_umstimmung->u.umstimmung_toene_veraendert.tonliste);

                help -> next = NULL;

                return help;

                /*        break; */

        case umstimmung_umstimmungsbund:
                xfree (help);

                return expand_aktions_liste (the_umstimmung->u.umstimmung_umstimmungsbund.aktions_liste,
                                             aktuelle_parameter);

                /*        break; */

        case umstimmung_umstimmungs_case:
                help -> aufruf_typ = aufruf_umst_umst_case;

                help -> u.aufruf_umst_umst_case.wert =
                        get_wert_of_argument ( & the_umstimmung->u.umstimmung_umstimmungs_case.argument,
                                               aktuelle_parameter);

                help -> u.aufruf_umst_umst_case.umst_case =
                        expand_case_liste (the_umstimmung->u.umstimmung_umstimmungs_case.umstimmungs_case_liste,
                                           aktuelle_parameter);

                help -> next = NULL;

                return help;

                /*        break; */

        case umstimmung_midi_out:
                help -> aufruf_typ = aufruf_midi_out;

                help -> u.aufruf_midi_out.out_liste =
                        the_umstimmung->u.umstimmung_midi_out.out_liste;

                help -> next = NULL;

                return help;

                /*        break; */

        default:
                fatal_error (0, __FILE__, __LINE__);

                return NULL;

        }
}
void fatal_error ( int  nr,
  ... 
)

Definiert in Zeile 288 der Datei GrafKern.cpp.

Benutzt Error_text, Fmeldung und weiter_gehts_nach_compilerfehler.

Wird benutzt von berechne_intervall_endgueltig(), berechne_intervalle_absolut(), berechne_toene_absolut(), berechne_ton_endgueltig(), check_aktionen(), check_ausloeser(), check_komplex_intervall(), check_konsistenz(), expand_aktions_liste(), expand_pattern(), expand_tonliste(), expandiere_logik(), expandiere_name(), expandiere_umstimmung(), fprint_argument(), gen_parameter_liste(), get_ausloeser_taste(), get_instrument_dekl(), get_intervall_wert(), get_komplex_faktor(), get_logik_nummer(), get_new_harmonie(), get_new_intervall(), get_new_intervall_komplex(), get_new_logik(), get_new_name_in_argument_list(), get_new_name_in_parameterlist(), get_new_ton_absolut(), get_new_ton_komplex_negative(), get_new_ton_komplex_positive(), get_new_tonsystem(), get_new_tonsystem_negative(), get_umstimmung_breite_abs(), get_umstimmung_breite_rel(), get_umstimmung_taste_abs(), get_umstimmung_taste_rel(), get_umstimmung_umstimm_case_parameter(), get_umstimmung_umstimm_case_zahl(), get_umstimmung_umstimmungs_bund(), get_umstimmung_wiederholung_abs_negative(), get_wert_komplex_intervall(), get_wert_of_argument(), init_umstimmung(), insert_in_globale_liste(), insert_in_lokale_liste(), intervall_nummer(), mutabor_programm_einlesen(), setze_nummer_von_abstand_und_zentrum(), test_zyklen(), test_zyklen_nummer(), ton_nummer(), u_test_zyklen(), xalloca(), xcalloc(), xmalloc(), xrealloc(), ymalloc(), yylex() und yyparse().

{
        va_list arglist;
        va_start(arglist,nr);
#if defined(WX)
        Fmeldung = wxString::FormatV(wxGetTranslation(Error_text[nr]), arglist);
#else
        vsprintf( Fmeldung, Error_text[nr], arglist );
#endif
        longjmp( weiter_gehts_nach_compilerfehler , (nr==0)?255:nr );
}
void FlushUpdateUI ( )

Definiert in Zeile 743 der Datei Execute.cpp.

Benutzt keys_changed, keys_changed_sum, logic_changed, MAX_BOX und updatecallback.

{
        if ( keys_changed_sum && updatecallback ) {
                for (int i=0; i<MAX_BOX; i++) {
                        if (keys_changed[i]) {
                                updatecallback(i,logic_changed[i]);
                                keys_changed[i]=0;
                                logic_changed[i]=0;
                        }
                }
                keys_changed_sum = 0;
        }
}
void fprint_argument ( FILE *  zieldatei,
struct argument argument 
)

Definiert in Zeile 122 der Datei TabGen.cpp.

Benutzt fatal_error(), parameter, intervall::u und zahl.

{
        if (argument -> argument_typ == zahl)
        {
                fprintf (zieldatei, ", %d ", argument -> u.zahl.zahl);
        } else if (argument -> argument_typ == parameter)
        {
                fprintf (zieldatei, ", %s ", argument -> u.parameter.parameter_name);
        } else
                fatal_error (0, __FILE__, __LINE__ );
}
long frac::gcd ( long  a,
long  b 
)

Definiert in Zeile 282 der Datei Frac.cpp.

Benutzt absLong().

Wird benutzt von frac::operator*(), frac::operator*=(), frac::operator+(), frac::operator+=(), frac::operator-(), frac::operator-=(), frac::operator/() und frac::operator/=().

{
        long p, q, r = 1;
        a = absLong(a);
        b = absLong(b);

        if ( a > b ) {
                p = a;
                q = b;
        } else {
                p = b;
                q = a;
        }

        if ( !q ) return 1;

        while ( r ) {
                r = p % q;
                p = q;
                q = r;
        }

        return p;
}
static struct interpreter_parameter_liste* gen_parameter_liste ( struct argument_liste liste,
struct interpreter_parameter_liste bezugs_liste 
) [static, read]

Definiert in Zeile 206 der Datei TabGen.cpp.

Benutzt argument_liste::argument, argument::argument_typ, fatal_error(), get_cache_konstante(), argument_liste::next, interpreter_parameter_liste::next, argument::parameter, parameter, argument::u, interpreter_parameter_liste::werte_feld, xmalloc(), argument::zahl und zahl.

Wird benutzt von expandiere_name().

        {

                struct interpreter_parameter_liste * help;

                if (liste == NULL)
                        return NULL;

                help = (interpreter_parameter_liste*) xmalloc (sizeof (struct interpreter_parameter_liste));

                switch (liste->argument.argument_typ)
                {

                case zahl:
                        help->werte_feld = get_cache_konstante (liste->argument.u.zahl.zahl);

                        break;

                case parameter: {
                        int i;

                        struct interpreter_parameter_liste * lauf;

                        for (lauf = bezugs_liste, i=liste->argument.u.parameter.parameter_nummer;
                                        lauf && i;
                                        lauf = lauf -> next, i--)
                                ;

                        if (lauf)
                                help->werte_feld = lauf -> werte_feld;
                        else
                                fatal_error (0, __FILE__, __LINE__);
                }

                break;

                default:
                        fatal_error (0, __FILE__, __LINE__);

                        break;
                }

                help->next = gen_parameter_liste (liste->next, bezugs_liste);

                return help;
        }
void get_aktion_aufruf ( const char name)
void get_aktion_midi_out ( void  )
void get_ausloeser_default ( void  )

Definiert in Zeile 2040 der Datei Parser.cpp.

Benutzt ausloeser_default und xmalloc().

Wird benutzt von yyparse().

void get_ausloeser_harmonie ( void  )
void get_ausloeser_harmonie_form ( void  )
void get_ausloeser_midi_in ( void  )
void get_ausloeser_taste ( const char name)

Definiert in Zeile 2068 der Datei Parser.cpp.

Benutzt ausloeser_taste, fatal_error(), mutC_STR, name, ausloeser::u und xmalloc().

Wird benutzt von yyparse().

{

        tmp_ausloeser = (ausloeser*) xmalloc (sizeof (struct ausloeser));
        tmp_ausloeser -> ausloeser_typ = ausloeser_taste;
        tmp_ausloeser -> u.ausloeser_taste.taste  = name;

        if (strlen (name) != 1) {
                fatal_error (52, mutC_STR(name));
        }

}
static int(* get_cache_konstante ( int  wert) )[MAX_BOX] [static]

Definiert in Zeile 185 der Datei TabGen.cpp.

Benutzt cache_konstanten::konstante, MAX_BOX, cache_konstanten::next und xmalloc().

Wird benutzt von gen_parameter_liste() und get_wert_of_argument().

{

        struct cache_konstanten ** lauf;
        int i;

        for (lauf = & cache_konstanten; *lauf; lauf = & (*lauf)->next) {
        if ((*lauf)->konstante[0] == wert)
                        return & (*lauf)->konstante;
        }

        *lauf = (struct cache_konstanten*) xmalloc (sizeof (struct cache_konstanten));

        for (i=0; i<MAX_BOX; i++)
        (*lauf)->konstante[i] = wert;

        (*lauf)->next = NULL;

        return & (*lauf)->konstante;
}
static struct harmonie_ereignis** get_ende_harmonie ( struct harmonie_ereignis **  lauf) [static, read]

Definiert in Zeile 1177 der Datei TabGen.cpp.

Benutzt harmonie_ereignis::next.

Wird benutzt von mutabor_tabellen_generator().

{
        if (*lauf == NULL) return lauf;

        return get_ende_harmonie (& (*lauf) -> next);
}
static struct keyboard_ereignis** get_ende_keyboard ( struct keyboard_ereignis **  lauf) [static, read]

Definiert in Zeile 1186 der Datei TabGen.cpp.

Benutzt keyboard_ereignis::next.

Wird benutzt von mutabor_tabellen_generator().

{
        if (*lauf == NULL) return lauf;

        return get_ende_keyboard (& (*lauf) -> next);
}
static struct midi_ereignis** get_ende_midi ( struct midi_ereignis **  lauf) [static, read]

Definiert in Zeile 1195 der Datei TabGen.cpp.

Benutzt midi_ereignis::next.

Wird benutzt von mutabor_tabellen_generator().

{
        if (*lauf == NULL) return lauf;

        return get_ende_midi (& (*lauf) -> next);
}
struct harmonie * get_harmonie ( const char name,
struct harmonie liste 
) [read]

Definiert in Zeile 197 der Datei Parser.cpp.

Benutzt harmonie::name und harmonie::next.

Wird benutzt von check_ausloeser() und expand_pattern().

{
        if (liste == NULL) return NULL;

        if ( ! strcmp (name, liste->name)) return liste;

        return get_harmonie (name, liste->next);
}
void get_harmoniebezeichner ( int  vor_taste,
const char name,
int  nach_taste 
)

Definiert in Zeile 2019 der Datei Parser.cpp.

Benutzt name.

Wird benutzt von yyparse().

{
        tmp_vor_taste   = vor_taste;
        tmp_name        = name;
        tmp_nach_taste  = nach_taste;
}
void get_instrument_dekl ( int  midi_in,
int  midi_von,
int  midi_bis,
int  midi_umleit,
struct instrument **  list_to_insert 
)

Definiert in Zeile 2162 der Datei Parser.cpp.

Benutzt fatal_error(), logik::next, instrument::next und xmalloc().

Wird benutzt von mutabor_programm_einlesen(), SetChannels() und yyparse().

{
        int temp;

        //for (list_to_insert = & list_of_instrumente;

        for (;
                        * list_to_insert;
                        list_to_insert = & (*list_to_insert)->next)
        {
                if ( midi_in == (*list_to_insert)->midi_in) {
                        fatal_error(18, midi_in); /* MIDI-Instrument doppelt */
                }
        }

        if ( midi_von > midi_bis )
        {
                temp=midi_von;       /* Vertauschen der Reihenfolge */
                midi_von=midi_bis;
                midi_bis=temp;

        }

        if ( (midi_in < 1) || (midi_in > 16) )
        {
                fatal_error(45);
        }

        if ( midi_von && midi_bis )
        {
                if ( (midi_von < 1) || (midi_von > 16) )
                        fatal_error(45);

                if ( (midi_bis < 1) || (midi_bis > 16) )
                        fatal_error(45);
        }

        if ( (midi_umleit < 0) || (midi_umleit > 16) )
        {
                fatal_error(45);
        }


        (* list_to_insert) = (instrument*) xmalloc (sizeof (struct instrument));
        (* list_to_insert) -> midi_in             = midi_in;
        (* list_to_insert) -> midi_von            = midi_von;
        (* list_to_insert) -> midi_bis            = midi_bis;
        (* list_to_insert) -> midi_umleit         = midi_umleit;
        (* list_to_insert) -> next                = NULL;

}
struct intervall * get_intervall ( const char name,
struct intervall liste 
) [read]

Definiert in Zeile 164 der Datei Parser.cpp.

Benutzt intervall::name und intervall::next.

Wird benutzt von check_komplex_intervall() und get_komplex_faktor().

{
        if (liste == NULL) return NULL;

        if ( ! strcmp (name, liste->name)) return liste;

        return get_intervall (name, liste->next);
}
double get_komplex_faktor ( struct komplex_intervall lauf)

Definiert in Zeile 90 der Datei TabGen.cpp.

Benutzt komplex_intervall::faktor, fatal_error(), get_intervall(), intervall_absolut, list_of_intervalle, komplex_intervall::name, do_aktion::next und intervall::u.

Wird benutzt von expand_tonliste() und get_komplex_frequenz().

{
        double ret = 1.0;

        for ( ; lauf ; lauf = lauf -> next )
        {

                struct intervall * help = get_intervall (lauf->name, list_of_intervalle);

                if (help && help -> intervall_typ == intervall_absolut) {
                        ret *= pow (help -> u.intervall_absolut.intervall_wert,
                                    lauf->faktor);
                } else {
                        fatal_error (0, __FILE__, __LINE__);
                }

        }

        return ret;
}
double get_komplex_frequenz ( struct ton dieser)

Definiert in Zeile 112 der Datei TabGen.cpp.

Benutzt get_komplex_faktor(), get_ton(), list_of_toene, ton::ton_komplex, intervall::u und ton::u.

Wird benutzt von expand_tonliste().

{
        double ret = get_ton (dieser->u.ton_komplex.bezugston, list_of_toene)
                     -> u.ton_absolut.ton_wert;
        ret *= get_komplex_faktor (dieser->u.ton_komplex.komplex_liste);
        return ret;
}
static struct aktions_liste* get_last_aktions_liste ( void  ) [static, read]
struct anweisung* get_last_anweisungs_liste ( void  ) [read]

Definiert in Zeile 2105 der Datei Parser.cpp.

Benutzt tmp_anweisungsliste.

Wird benutzt von vervollstaendige_logik().

{
        return tmp_anweisungsliste ;
}
static struct argument_liste* get_last_argument_liste ( void  ) [static, read]

Definiert in Zeile 359 der Datei Parser.cpp.

Benutzt list_of_argumente.

Wird benutzt von get_new_aktion_aufruf_element().

{
        return list_of_argumente;
}
struct ausloeser* get_last_ausloeser ( void  ) [read]

Definiert in Zeile 2035 der Datei Parser.cpp.

Benutzt tmp_ausloeser.

Wird benutzt von get_new_anweisung() und get_new_logik().

{
        return tmp_ausloeser;
}
static struct midiliste* get_last_integersequenz ( void  ) [static, read]
struct komplex_intervall* get_last_komplex_intervall ( void  ) [read]
static struct parameter_liste* get_last_parameter_liste ( void  ) [static, read]

Definiert in Zeile 278 der Datei Parser.cpp.

Benutzt list_of_names.

Wird benutzt von eintrage_parameterliste_in_umstimmung().

{
        return list_of_names;
}
struct logik * get_logik ( const char name,
struct logik liste 
) [read]

Definiert in Zeile 207 der Datei Parser.cpp.

Benutzt logik::name und logik::next.

Wird benutzt von check_aktionen(), check_konsistenz() und expandiere_name().

{
        if (liste == NULL) return NULL;

        if ( ! strcmp (name, liste->name)) return liste;

        return get_logik (name, liste->next);
}
int get_logik_nummer ( const char name,
struct logik liste 
)

Definiert in Zeile 124 der Datei Parser.cpp.

Benutzt fatal_error(), logik::name und logik::next.

Wird benutzt von expandiere_logik().

{
        if (liste == NULL)
        {
                fatal_error (0, _T(__FILE__), __LINE__);
                return 0;
        } else if ( ! strcmp (name, liste->name))
                return 0;
        else
                return 1 + get_logik_nummer (name, liste->next);
}
void get_new_aktion_aufruf_element ( const char name)

Definiert in Zeile 375 der Datei Parser.cpp.

Benutzt aktion_aufruf, get_last_argument_liste(), name, aktions_liste::next, aktions_liste::u und xmalloc().

Wird benutzt von yyparse().

{

        struct aktions_liste * * lauf;

        for (lauf= & list_of_aktionen; * lauf; lauf= & (*lauf)->next) {}

        (* lauf) = (aktions_liste*) xmalloc ((size_t) sizeof (struct aktions_liste));
        (* lauf) -> aktions_typ           = aktion_aufruf;
        (* lauf) -> u.aktion_aufruf.name  = name;
        (* lauf) -> u.aktion_aufruf.argument_liste = get_last_argument_liste ();
        (* lauf) -> next                  = NULL;
}
void get_new_aktion_midi_out_element ( void  )

Definiert in Zeile 390 der Datei Parser.cpp.

Benutzt aktion_midi_out, get_last_integersequenz(), aktions_liste::next, aktions_liste::u und xmalloc().

Wird benutzt von yyparse().

{

        struct aktions_liste * * lauf;

        for (lauf= & list_of_aktionen; * lauf; lauf= & (*lauf)->next) {}

        (* lauf) = (aktions_liste*) xmalloc ((size_t) sizeof (struct aktions_liste));
        (* lauf) -> aktions_typ           = aktion_midi_out;
        (* lauf) -> u.aktion_midi_out.midi_code = get_last_integersequenz ();
        (* lauf) -> next                  = NULL;
}
void get_new_anweisung ( void  )

Definiert in Zeile 2110 der Datei Parser.cpp.

Benutzt get_last_aktions_liste(), get_last_ausloeser(), anweisung::next und xmalloc().

Wird benutzt von yyparse().

{

        struct anweisung * * lauf;

        for (lauf= & tmp_anweisungsliste; * lauf; lauf= & (*lauf)->next)
                /* Nur Ende der Liste finden */ ;

        (* lauf) = (anweisung*) xmalloc (sizeof (struct anweisung));

        (* lauf) -> ausloeser   = get_last_ausloeser ();

        (* lauf) -> aktion      = get_last_aktions_liste ();

        (* lauf) -> next        = NULL;

}
void get_new_faktor_anteil ( double  f,
const char name 
)

Definiert in Zeile 418 der Datei Parser.cpp.

Benutzt komplex_intervall::faktor, name, komplex_intervall::next und xmalloc().

Wird benutzt von yyparse().

{

        struct komplex_intervall * * lauf;

        for (lauf= & the_komplex_liste; * lauf; lauf= & (*lauf)->next)
                /* nur ende der Liste finden */ ;

        (* lauf) = (komplex_intervall*) xmalloc ((size_t) sizeof (struct komplex_intervall));

        (* lauf) -> faktor = f;

        (* lauf) -> name   = name;

        (* lauf) -> next   = NULL;

}
void get_new_harmonie ( const char name,
int  bezugstaste 
)

Definiert in Zeile 1956 der Datei Parser.cpp.

Benutzt harmonie::bezugstaste, fatal_error(), mutC_STR, name, harmonie::next, harmonie::tastenliste, tmp_tastenliste und xmalloc().

Wird benutzt von yyparse().

{

        struct harmonie * * lauf;

        for (lauf= & list_of_harmonien; * lauf; lauf= & (*lauf)->next) {
                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(14, mutC_STR(name)); /* Harmoniename doppelt */
                }
        }

        (* lauf) = (harmonie*) xmalloc (sizeof (struct harmonie));
        (* lauf) -> name                = name;
        (* lauf) -> tastenliste         = tmp_tastenliste;
        (* lauf) -> bezugstaste         = bezugstaste;
        (* lauf) -> next                = NULL;

}
void get_new_integer_in_integersequenz ( int  wert)

Definiert in Zeile 229 der Datei Parser.cpp.

Benutzt midiliste::midi_code, midiliste::next und xmalloc().

Wird benutzt von yyparse().

{

        struct midiliste * * lauf;

        for (lauf= & list_of_integers; * lauf; lauf= & (*lauf)->next) {}

        (* lauf) = (midiliste*) xmalloc ((size_t) sizeof (struct midiliste));
        (* lauf) -> midi_code     = wert;
        (* lauf) -> next          = NULL;
}
void get_new_intervall ( const char name,
double  wert 
)

Definiert in Zeile 1014 der Datei Parser.cpp.

Benutzt fatal_error(), intervall_absolut, mutC_STR, name, intervall::next, intervall::u und xmalloc().

Wird benutzt von mutabor_programm_einlesen() und yyparse().

{

        struct intervall * * lauf;

        for (lauf= & list_of_intervalle; * lauf; lauf= &(*lauf)->next) {
                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(10,mutC_STR(name)); /* Intervallname doppelt */
                }
        }

        if (fabs (wert) < 0.001)
                fatal_error (46, mutC_STR(name));

        (* lauf) = (intervall*) xmalloc ((size_t) sizeof (struct intervall));

        (* lauf) -> name = name;

        (* lauf) -> intervall_typ = intervall_absolut;

        (* lauf) -> u.intervall_absolut.intervall_wert = wert;

        (* lauf) -> next = NULL;

}
void get_new_intervall_komplex ( const char name)

Definiert in Zeile 1040 der Datei Parser.cpp.

Benutzt fatal_error(), get_last_komplex_intervall(), intervall_komplex, mutC_STR, name, intervall::next, intervall::u und xmalloc().

Wird benutzt von yyparse().

{

        struct intervall * * lauf;

        for (lauf= & list_of_intervalle; * lauf; lauf= &(*lauf)->next) {
                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(10,mutC_STR(name)); /* Intervallname doppelt */
                }
        }

        (* lauf) = (intervall*) xmalloc ((size_t) sizeof (struct intervall));
        (* lauf) -> name = name;
        (* lauf) -> intervall_typ = intervall_komplex;
        (* lauf) -> u.intervall_komplex.komplex_liste =
                get_last_komplex_intervall ();
        (* lauf) -> next = NULL;

}
void get_new_logik ( const char name,
const char einstimmung 
)

Definiert in Zeile 2129 der Datei Parser.cpp.

Benutzt logik::anweisungsliste, logik::einstimmungs_name, fatal_error(), get_last_ausloeser(), mutC_STR, name, logik::next und xmalloc().

Wird benutzt von yyparse().

{

        struct logik * * lauf;

        for (lauf= & list_of_logiken; * lauf; lauf= & (*lauf)->next) {
                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(15, mutC_STR(name)); /* Logikname doppelt */
                }
        }

        (* lauf) = (logik*) xmalloc (sizeof (struct logik));
        (* lauf) -> name                = name;
        (* lauf) -> ausloeser           = get_last_ausloeser ();
        (* lauf) -> einstimmungs_name   = einstimmung;
        (* lauf) -> anweisungsliste     = NULL;
        (* lauf) -> next                = NULL;

}
void get_new_name_in_argument_list ( const char parameter)

Definiert in Zeile 337 der Datei Parser.cpp.

Benutzt argument::argument_typ, fatal_error(), mutC_STR, name, argument_liste::next, argument::parameter, parameter, argument::u und xmalloc().

Wird benutzt von yyparse().

{

        struct argument_liste * * lauf;

        for (lauf= & list_of_argumente; * lauf; lauf= & (*lauf)->next) {
#if 0

                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(17,mutC_STR(name)); /* Parametername doppelt: name */
                }

#endif
        }

        (* lauf) = (argument_liste*) xmalloc ((size_t) sizeof (struct argument_liste));
        (* lauf) -> argument.argument_typ = parameter;
        (* lauf) -> argument.u.parameter.parameter_nummer = 0;
        (* lauf) -> argument.u.parameter.parameter_name = parameter_name;
        (* lauf) -> next          = NULL;
}
void get_new_name_in_parameterlist ( const char name)

Definiert in Zeile 261 der Datei Parser.cpp.

Benutzt fatal_error(), mutC_STR, name, parameter_liste::next und xmalloc().

Wird benutzt von yyparse().

{

        struct parameter_liste * * lauf;

        for (lauf= & list_of_names; * lauf; lauf= & (*lauf)->next) {
                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(17,mutC_STR(name)); /* Parametername doppelt: name */
                }
        }

        (* lauf) = (parameter_liste*) xmalloc ((size_t) sizeof (struct parameter_liste));
        (* lauf) -> name          = name;
        (* lauf) -> next          = NULL;
}
void get_new_number_in_argument_list ( double  parameter)

Definiert in Zeile 322 der Datei Parser.cpp.

Benutzt argument::argument_typ, argument_liste::next, argument::u, xmalloc(), argument::zahl und zahl.

Wird benutzt von yyparse().

{

        struct argument_liste * * lauf;

        for (lauf= & list_of_argumente; * lauf; lauf= & (*lauf)->next) {}

        (* lauf) = (argument_liste*) xmalloc ((size_t) sizeof (struct argument_liste));
        (* lauf) -> argument.argument_typ = zahl;
        (* lauf) -> argument.u.zahl.zahl  = (int) parameter_zahl;
        (* lauf) -> next                  = NULL;
}
void get_new_number_in_parameterlist ( double  wert)
void get_new_taste ( int  taste,
char  stern 
)

Definiert in Zeile 1937 der Datei Parser.cpp.

Benutzt taste::code, taste::next, taste::stern und xmalloc().

Wird benutzt von yyparse().

{

        struct taste * * lauf;

        for (lauf= & tmp_tastenliste; * lauf; lauf= & (*lauf)->next)
                /* Nur Ende der Liste finden */ ;

        (* lauf) = (struct taste*) xmalloc (sizeof (struct taste));

        (* lauf) -> code               = taste;

        (* lauf) -> stern               = stern;

        (* lauf) -> next                = NULL;

}
void get_new_ton_absolut ( const char name,
double  wert 
)

Definiert in Zeile 1065 der Datei Parser.cpp.

Benutzt fatal_error(), mutC_STR, name, ton::next, ton_absolut, ton::u und xmalloc().

Wird benutzt von mutabor_programm_einlesen() und yyparse().

{

        struct ton * * lauf;

        for (lauf= & list_of_toene; * lauf; lauf= & (*lauf)->next) {
                if ( ! strcmp (name, (* lauf)->name)) {
                        fatal_error(11,mutC_STR(name)); /* Tonname doppelt */
                }
        }

        (* lauf) = (ton*) xmalloc ((size_t) sizeof (struct ton));
        (* lauf) -> name                   = name;
        (* lauf) -> ton_typ                = ton_absolut;
        (* lauf) -> u.ton_absolut.ton_wert = wert;
        (* lauf) -> next                   = NULL;

}
void get_new_ton_in_tonsystem ( const char name)

Definiert in Zeile 1154 der Datei Parser.cpp.

Benutzt name, ton::next und xmalloc().

Wird benutzt von yyparse().

{

        struct ton * * lauf;

        for (lauf= & ton_liste; * lauf; lauf= & (*lauf)->next) {
                /* Hier sind doppelte Tîne zulÑssig !! */
        }

        (* lauf) = (ton*) xmalloc ((size_t) sizeof (struct ton));
        (* lauf) -> name                    = name;
        (* lauf) -> next                    = NULL;

}
void get_new_ton_komplex_negative ( const char name,
const char bezugston 
)

Definiert in Zeile 1106 der Datei Parser.cpp.

Benutzt ton::bezugston, komplex_intervall::faktor, fatal_error(), get_last_komplex_intervall(), mutC_STR, name, komplex_intervall::next, ton::next, ton_komplex, ton::u und xmalloc().

Wird benutzt von yyparse().

{

        struct ton * * lauf;

        for (lauf= & list_of_toene; * lauf; lauf= & (*lauf)->next) {
                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(11,mutC_STR(name)); /* Tonname doppelt */
                }
        }

        (* lauf) = (ton*) xmalloc ((size_t) sizeof (struct ton));
        (* lauf) -> name                        = name;
        (* lauf) -> ton_typ                     = ton_komplex;
        (* lauf) -> u.ton_komplex.bezugston     = bezugston;

        {

                struct komplex_intervall * help = get_last_komplex_intervall ();

                if (help == NULL) {
                        fatal_error (0, _T(__FILE__), __LINE__);
                }

                help -> faktor *= -1.0 ;

                (* lauf) -> u.ton_komplex.komplex_liste = help;
        }

        (* lauf) -> next                        = NULL;

}
void get_new_ton_komplex_positive ( const char name,
const char bezugston 
)

void get_new_relativ_anteil (double f, char *linke_grenze, char *rechte_grenze);

Definiert in Zeile 1085 der Datei Parser.cpp.

Benutzt ton::bezugston, fatal_error(), get_last_komplex_intervall(), mutC_STR, name, ton::next, ton_komplex, ton::u und xmalloc().

Wird benutzt von yyparse().

{

        struct ton * * lauf;

        for (lauf= & list_of_toene; * lauf; lauf= & (*lauf)->next) {
                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(11,mutC_STR(name)); /* Tonname doppelt */
                }
        }

        (* lauf) = (ton*) xmalloc ((size_t) sizeof (struct ton));
        (* lauf) -> name                        = name;
        (* lauf) -> ton_typ                     = ton_komplex;
        (* lauf) -> u.ton_komplex.bezugston     = bezugston;
        (* lauf) -> u.ton_komplex.komplex_liste = get_last_komplex_intervall ();
        (* lauf) -> next                        = NULL;

}
void get_new_tonsystem ( const char name,
int  taste 
)

Definiert in Zeile 1170 der Datei Parser.cpp.

Benutzt fatal_error(), get_last_komplex_intervall(), mutC_STR, name, tonsystem::next, tonsystem::periode, tonsystem::taste, toene, ton_liste und xmalloc().

Wird benutzt von yyparse().

{

        struct tonsystem * * lauf;

        for (lauf= & list_of_tonsysteme; * lauf; lauf= & (*lauf)->next) {
                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(12,mutC_STR(name)); /* Tonsystemname doppelt */
                }
        }

        (* lauf) = (struct tonsystem*) xmalloc ((size_t) sizeof (struct tonsystem));
        (* lauf) -> name          = name;
        (* lauf) -> taste         = taste;
        (* lauf) -> periode       = get_last_komplex_intervall ();
        (* lauf) -> toene         = ton_liste;
        (* lauf) -> next          = NULL;

}
void get_new_tonsystem_negative ( const char name,
int  taste 
)

Definiert in Zeile 1191 der Datei Parser.cpp.

Benutzt komplex_intervall::faktor, fatal_error(), get_last_komplex_intervall(), mutC_STR, name, komplex_intervall::next, tonsystem::next, tonsystem::taste, toene, ton_liste und xmalloc().

Wird benutzt von yyparse().

{

        struct tonsystem * * lauf;

        for (lauf= & list_of_tonsysteme; * lauf; lauf= & (*lauf)->next) {
                if ( ! strcmp (name, (*lauf)->name)) {
                        fatal_error(12,mutC_STR(name)); /* Tonsystemname doppelt */
                }
        }

        (* lauf) = (struct tonsystem*) xmalloc ((size_t) sizeof (struct tonsystem));
        (* lauf) -> name          = name;
        (* lauf) -> taste         = taste;
        {

                struct komplex_intervall * help = get_last_komplex_intervall ();

                if (help == NULL)
                        fatal_error (0, _T(__FILE__), __LINE__);

                help -> faktor *= -1.0 ;

                (* lauf) -> periode = help;
        }

        (* lauf) -> toene         = ton_liste;
        (* lauf) -> next          = NULL;

}
void get_new_umstimm_expression ( const char bezugston)

Definiert in Zeile 1433 der Datei Parser.cpp.

Benutzt ton::bezugston, name, ton::next, ton_komplex, ton::u und xmalloc().

Wird benutzt von yyparse().

{

        struct ton * * lauf;

        for (lauf= & tmp_tonliste; * lauf; lauf= & (*lauf)->next)
                /* Nur Ende der Liste finden */ ;

        (* lauf) = (ton*) xmalloc ((size_t) sizeof (struct ton));

        (* lauf) -> name                    = bezugston;

        (* lauf) -> ton_typ                 = ton_komplex;

        (* lauf) -> u.ton_komplex.bezugston = bezugston;

        (* lauf) -> u.ton_komplex.komplex_liste = NULL;

        (* lauf) -> next                    = NULL;

}
void get_new_umstimm_expression_negative ( const char bezugston)

Definiert in Zeile 1481 der Datei Parser.cpp.

Benutzt ton::bezugston, komplex_intervall::faktor, get_last_komplex_intervall(), name, komplex_intervall::next, ton::next, ton_komplex, ton::u und xmalloc().

Wird benutzt von yyparse().

{

        struct ton * * lauf;

        for (lauf= & tmp_tonliste; * lauf; lauf= & (*lauf)->next)
                /* Nur Ende der Liste finden */ ;

        (* lauf) = (ton*) xmalloc ((size_t) sizeof (struct ton));

        (* lauf) -> name                    = bezugston;

        (* lauf) -> ton_typ                 = ton_komplex;

        (* lauf) -> u.ton_komplex.bezugston = bezugston;

        {

                struct komplex_intervall * help = get_last_komplex_intervall ();
                help->faktor *= -1.0;
                (* lauf) -> u.ton_komplex.komplex_liste = help;
        }

        (* lauf) -> next                    = NULL;

}
void get_new_umstimm_expression_positive ( const char bezugston)

Definiert in Zeile 1457 der Datei Parser.cpp.

Benutzt ton::bezugston, get_last_komplex_intervall(), name, ton::next, ton_komplex, ton::u und xmalloc().

Wird benutzt von yyparse().

{

        struct ton * * lauf;

        for (lauf= & tmp_tonliste; * lauf; lauf= & (*lauf)->next)
                /* Nur Ende der Liste finden */ ;

        (* lauf) = (ton*) xmalloc ((size_t) sizeof (struct ton));

        (* lauf) -> name                    = bezugston;

        (* lauf) -> ton_typ                 = ton_komplex;

        (* lauf) -> u.ton_komplex.bezugston = bezugston;

        (* lauf) -> u.ton_komplex.komplex_liste = get_last_komplex_intervall ();

        (* lauf) -> next                    = NULL;

}
void get_new_umstimmung ( void  )

Definiert in Zeile 1252 der Datei Parser.cpp.

Benutzt umstimmung::next und tmp_umstimmung.

Wird benutzt von yyparse().

{

        struct umstimmung * * lauf;

        for (lauf= & list_of_umstimmungen; * lauf; lauf= & (*lauf)->next) {}

        (* lauf) = tmp_umstimmung;
}
PATTERNN* get_pattern ( int  instr)
struct ton * get_ton ( const char name,
struct ton liste 
) [read]

Definiert in Zeile 152 der Datei Parser.cpp.

Benutzt ton::name und ton::next.

Wird benutzt von check_konsistenz(), expandiere_tonsystem() und get_komplex_frequenz().

{
        if (name==NULL) return(ton_ohne_namen);

        if (liste == NULL) return NULL;

        if ( ! strcmp (name, liste->name)) return liste;

        return get_ton (name, liste->next);
}
struct umstimmung * get_umstimmung ( const char name,
struct umstimmung liste 
) [read]

Definiert in Zeile 186 der Datei Parser.cpp.

Benutzt umstimmung::name und umstimmung::next.

Wird benutzt von check_aktionen(), check_konsistenz(), expandiere_logik() und expandiere_name().

{
        if (liste == NULL) return NULL;

        if ( ! strcmp (name, liste->name)) return liste;

        return get_umstimmung (name, liste->next);
}
void get_umstimmung_breite_abs ( enum argument_typ  argument,
double  zahl_wert,
const char parameter 
)

Definiert in Zeile 1349 der Datei Parser.cpp.

Benutzt umstimmung::argument, fatal_error(), mutC_STR, umstimmung::name, parameter, umstimmung::parameter_liste, parameter_nummer(), umstimmung::u, umstimmung_breite_abs und zahl.

Wird benutzt von yyparse().

{
        tmp_umstimmung -> umstimmung_typ = umstimmung_breite_abs;
        tmp_umstimmung -> u.umstimmung_breite_abs.
        argument.argument_typ
        = argument;

        if (argument == zahl) {
                tmp_umstimmung -> u.umstimmung_breite_abs.
                argument.u.zahl.zahl = (int) zahl_wert;
        } else {
                int i = parameter_nummer (0, parameter,
                                          tmp_umstimmung->parameter_liste);

                if (i == EOF) {
                        fatal_error(31,
                                    mutC_STR(parameter),
                                    mutC_STR(tmp_umstimmung->name)); /* Parameter n.dekl. */
                }

                tmp_umstimmung -> u.umstimmung_breite_abs.

                argument.u.parameter.
                parameter_nummer = i;
                tmp_umstimmung -> u.umstimmung_breite_abs.
                argument.u.parameter.
                parameter_name = parameter;
        }
}
void get_umstimmung_breite_rel ( enum argument_typ  argument,
double  zahl_wert,
const char parameter,
char  vorzeichen 
)

Definiert in Zeile 1383 der Datei Parser.cpp.

Benutzt umstimmung::argument, fatal_error(), mutC_STR, umstimmung::name, parameter, umstimmung::parameter_liste, parameter_nummer(), umstimmung::u, umstimmung_breite_rel und zahl.

Wird benutzt von yyparse().

{
        tmp_umstimmung -> umstimmung_typ = umstimmung_breite_rel;
        tmp_umstimmung -> u.umstimmung_breite_rel.
        argument.argument_typ
        = argument;

        if (argument == zahl) {
                tmp_umstimmung -> u.umstimmung_breite_rel.
                argument.u.zahl.zahl = (int) zahl_wert;
        } else {
                int i = parameter_nummer (0, parameter,
                                          tmp_umstimmung->parameter_liste);

                if (i == EOF) {
                        fatal_error(31,
                                    mutC_STR(parameter),
                                    mutC_STR(tmp_umstimmung->name)); /* Parameter n.dekl. */
                }

                tmp_umstimmung -> u.umstimmung_breite_rel.

                argument.u.parameter.
                parameter_nummer = i;
                tmp_umstimmung -> u.umstimmung_breite_rel.
                argument.u.parameter.
                parameter_name = parameter;
        }

        tmp_umstimmung -> u.umstimmung_breite_rel.rechenzeichen

        = vorzeichen;
}
void get_umstimmung_midi_out ( void  )

Definiert in Zeile 1915 der Datei Parser.cpp.

Benutzt get_last_integersequenz(), umstimmung::umstimmung_midi_out und umstimmung_midi_out.

Wird benutzt von yyparse().

void get_umstimmung_taste_abs ( enum argument_typ  argument,
double  zahl_wert,
const char parameter 
)

Definiert in Zeile 1278 der Datei Parser.cpp.

Benutzt umstimmung::argument, fatal_error(), mutC_STR, umstimmung::name, parameter, umstimmung::parameter_liste, parameter_nummer(), umstimmung::u, umstimmung_taste_abs und zahl.

Wird benutzt von yyparse().

{
        tmp_umstimmung -> umstimmung_typ = umstimmung_taste_abs;
        tmp_umstimmung -> u.umstimmung_taste_abs.
        argument.argument_typ
        = argument;

        if (argument == zahl) {
                tmp_umstimmung -> u.umstimmung_taste_abs.
                argument.u.zahl.zahl = (int) zahl_wert;
        } else {
                int i = parameter_nummer (0, parameter,
                                          tmp_umstimmung->parameter_liste);

                if (i == EOF) {
                        fatal_error(31,
                                    mutC_STR(parameter),
                                    mutC_STR(tmp_umstimmung->name)); /* Parameter n.dekl. */
                }

                tmp_umstimmung -> u.umstimmung_taste_abs.

                argument.u.parameter.
                parameter_nummer = i;
                tmp_umstimmung -> u.umstimmung_taste_abs.
                argument.u.parameter.
                parameter_name = parameter;
        }
}
void get_umstimmung_taste_rel ( enum argument_typ  argument,
double  zahl_wert,
const char parameter,
char  vorzeichen 
)

Definiert in Zeile 1311 der Datei Parser.cpp.

Benutzt umstimmung::argument, fatal_error(), mutC_STR, name, parameter, umstimmung::parameter_liste, parameter_nummer(), umstimmung::u, umstimmung_taste_rel und zahl.

Wird benutzt von yyparse().

{
        tmp_umstimmung -> umstimmung_typ = umstimmung_taste_rel;
        tmp_umstimmung -> u.umstimmung_taste_rel.
        argument.argument_typ
        = argument;

        if (argument == zahl) {
                tmp_umstimmung -> u.umstimmung_taste_rel.
                argument.u.zahl.zahl = (int) zahl_wert;
        } else {
                int i = parameter_nummer (0, parameter,
                                          tmp_umstimmung->parameter_liste);

                if (i == EOF) {
                        fatal_error(31,
                                    mutC_STR(parameter),
                                    mutC_STR(tmp_umstimmung -> name)); /* Parameter n.dekl. */
                }

                tmp_umstimmung -> u.umstimmung_taste_rel.

                argument.u.parameter.
                parameter_nummer = i;
                tmp_umstimmung -> u.umstimmung_taste_rel.
                argument.u.parameter.
                parameter_name = parameter;
        }

        tmp_umstimmung -> u.umstimmung_taste_rel.rechenzeichen

        = vorzeichen;
}
void get_umstimmung_tonhoehe_veraendert ( void  )

Definiert in Zeile 1510 der Datei Parser.cpp.

Benutzt tmp_tonliste, umstimmung::umstimmung_toene_veraendert und umstimmung_toene_veraendert.

Wird benutzt von yyparse().

{
        tmp_umstimmung -> umstimmung_typ = umstimmung_toene_veraendert;
        tmp_umstimmung -> u.umstimmung_toene_veraendert.tonliste
        = tmp_tonliste;
}
void get_umstimmung_umstimm_case_parameter ( const char selector)

Definiert in Zeile 1835 der Datei Parser.cpp.

Benutzt aktions_liste::aktion_aufruf, aktion_aufruf, argument_liste::argument, argument::argument_typ, fatal_error(), mutC_STR, umstimmung::name, argument_liste::next, aktions_liste::next, case_liste::next, argument::parameter, parameter, parameter_nummer(), tmp_umstimmungs_case_liste, argument::u, umstimmung::umstimmung_umstimmungs_case und umstimmung_umstimmungs_case.

Wird benutzt von yyparse().

{
        tmp_umstimmung -> umstimmung_typ = umstimmung_umstimmungs_case;
        tmp_umstimmung -> u.umstimmung_umstimmungs_case
        .argument
        .argument_typ = parameter;
        tmp_umstimmung -> u.umstimmung_umstimmungs_case
        .argument
        .u.parameter.parameter_name = selector;

        /* und test, ob selector als Parameter deklariert ist. */

        {
                int i = parameter_nummer (0,selector, tmp_umstimmung -> parameter_liste);

                if (i == EOF ) {
                        fatal_error(31,
                                    mutC_STR(selector),
                                    mutC_STR(tmp_umstimmung->name)); /* Parameter n.dekl. */
                } else {
                        tmp_umstimmung -> u.umstimmung_umstimmungs_case
                        .argument
                        .u.parameter.parameter_nummer = i;

                }
        }

        tmp_umstimmung -> u.umstimmung_umstimmungs_case
        .umstimmungs_case_liste = tmp_umstimmungs_case_liste;



        /* check, ob die Parameter zulÑssig sind */

        {

                struct case_liste * case_lauf;

                for (case_lauf = tmp_umstimmung -> u.umstimmung_umstimmungs_case
                                 .umstimmungs_case_liste ;
                                case_lauf;
                                case_lauf = case_lauf -> next) {

                        struct aktions_liste * aktions_lauf;

                        for (aktions_lauf = case_lauf -> case_aktion;
                                        aktions_lauf;
                                        aktions_lauf = aktions_lauf -> next) {

                                if (aktions_lauf -> aktions_typ == aktion_aufruf) {

                                        struct argument_liste * argument_lauf;

                                        for (argument_lauf = aktions_lauf -> u.aktion_aufruf.argument_liste;
                                                        argument_lauf;
                                                        argument_lauf = argument_lauf -> next ) {
                                                if (argument_lauf -> argument.argument_typ == parameter) {
                                                        int i = parameter_nummer (0,
                                                                                  argument_lauf->argument.u.parameter.parameter_name,
                                                                                  tmp_umstimmung -> parameter_liste);

                                                        if (i == EOF ) {
                                                                fatal_error(31,
                                                                            mutC_STR(argument_lauf->argument.u.parameter.parameter_name),
                                                                            mutC_STR(tmp_umstimmung -> name)); /* Parameter n.dekl. */
                                                        } else {
                                                                argument_lauf->argument.u.parameter.parameter_nummer = i;
                                                        } /* if */
                                                } /* if */
                                        }  /* for argument_lauf */
                                } /* if (aktions_lauf .. */
                        }  /* for aktions_lauf */
                }  /* for case_lauf */
        }



}
void get_umstimmung_umstimm_case_zahl ( int  selector)

Definiert in Zeile 1775 der Datei Parser.cpp.

Benutzt aktions_liste::aktion_aufruf, aktion_aufruf, argument_liste::argument, argument::argument_typ, fatal_error(), mutC_STR, argument_liste::next, aktions_liste::next, case_liste::next, argument::parameter, parameter, parameter_nummer(), tmp_umstimmungs_case_liste, argument::u, umstimmung::umstimmung_umstimmungs_case, umstimmung_umstimmungs_case und zahl.

Wird benutzt von yyparse().

{
        tmp_umstimmung -> umstimmung_typ = umstimmung_umstimmungs_case;
        tmp_umstimmung -> u.umstimmung_umstimmungs_case
        .argument
        .argument_typ = zahl;
        tmp_umstimmung -> u.umstimmung_umstimmungs_case
        .argument
        .u.zahl.zahl = selector;
        tmp_umstimmung -> u.umstimmung_umstimmungs_case
        .umstimmungs_case_liste = tmp_umstimmungs_case_liste;


        /* check, ob die Parameter zulÑssig sind */

        {

                struct case_liste * case_lauf;

                for (case_lauf = tmp_umstimmung -> u.umstimmung_umstimmungs_case
                                 .umstimmungs_case_liste ;
                                case_lauf;
                                case_lauf = case_lauf -> next) {

                        struct aktions_liste * aktions_lauf;

                        for (aktions_lauf = case_lauf -> case_aktion;
                                        aktions_lauf;
                                        aktions_lauf = aktions_lauf -> next) {

                                if (aktions_lauf -> aktions_typ == aktion_aufruf) {

                                        struct argument_liste * argument_lauf;

                                        for (argument_lauf = aktions_lauf -> u.aktion_aufruf.argument_liste;
                                                        argument_lauf;
                                                        argument_lauf = argument_lauf -> next ) {
                                                if (argument_lauf -> argument.argument_typ == parameter) {
                                                        int i = parameter_nummer (0,
                                                                                  argument_lauf->argument.u.parameter.parameter_name,
                                                                                  tmp_umstimmung -> parameter_liste);

                                                        if (i == EOF ) {
                                                                fatal_error(31,
                                                                            mutC_STR(argument_lauf->argument.u.parameter.parameter_name),
                                                                            mutC_STR(tmp_umstimmung -> name)); /* Parameter n.dekl. */
                                                        } else {
                                                                argument_lauf->argument.u.parameter.parameter_nummer = i;
                                                        } /* if */
                                                } /* if */
                                        }  /* for argument_lauf */
                                } /* if (aktions_lauf ... */
                        }  /* for aktions_lauf */
                }  /* for case_lauf */
        }


}
void get_umstimmung_umstimmungs_bund ( void  )

Definiert in Zeile 1611 der Datei Parser.cpp.

Benutzt aktions_liste::aktion_aufruf, aktion_aufruf, argument_liste::argument, argument::argument_typ, fatal_error(), get_last_aktions_liste(), mutC_STR, argument_liste::next, aktions_liste::next, argument::parameter, parameter, parameter_nummer(), argument::u, aktions_liste::u, umstimmung::umstimmung_umstimmungsbund und umstimmung_umstimmungsbund.

Wird benutzt von yyparse().

{
        tmp_umstimmung -> umstimmung_typ = umstimmung_umstimmungsbund;
        tmp_umstimmung -> u.umstimmung_umstimmungsbund
        .aktions_liste = get_last_aktions_liste ();


        /* check, ob die Parameter zulÑssig sind */

        {

                struct aktions_liste * aktions_lauf;

                for (aktions_lauf = tmp_umstimmung -> u.umstimmung_umstimmungsbund.aktions_liste;
                                aktions_lauf;
                                aktions_lauf = aktions_lauf -> next) {

                        if (aktions_lauf -> aktions_typ == aktion_aufruf) {

                                struct argument_liste * argument_lauf;

                                for (argument_lauf = aktions_lauf -> u.aktion_aufruf.argument_liste;
                                                argument_lauf;
                                                argument_lauf = argument_lauf -> next ) {
                                        if (argument_lauf -> argument.argument_typ == parameter) {
                                                int i = parameter_nummer (0,
                                                                          argument_lauf->argument.u.parameter.parameter_name,
                                                                          tmp_umstimmung -> parameter_liste);

                                                if (i == EOF ) {
                                                        fatal_error(31,
                                                                    mutC_STR(argument_lauf->argument.u.parameter.parameter_name),
                                                                    mutC_STR(tmp_umstimmung -> name)); /* Parameter n.dekl. */
                                                } else {
                                                        argument_lauf->argument.u.parameter.parameter_nummer = i;
                                                } /* if */
                                        } /* if */
                                }  /* for argument_lauf */
                        }  /* if (aktions_lauf... */
                }  /* for aktions_lauf */
        }



}
void get_umstimmung_wiederholung_abs ( void  )
void get_umstimmung_wiederholung_abs_negative ( void  )
void get_umstimmung_wiederholung_rel_negative ( void  )
void get_umstimmung_wiederholung_rel_positive ( void  )
void get_umstimmungs_case_aktions_element ( const char aktion)
void get_umstimmungs_case_default_element ( void  )

Definiert in Zeile 1746 der Datei Parser.cpp.

Benutzt case_liste::case_aktion, case_liste::case_label, get_last_aktions_liste(), case_liste::is_default, case_liste::next und xmalloc().

Wird benutzt von yyparse().

{

        struct case_liste * * lauf;

        for (lauf= & tmp_umstimmungs_case_liste;
                        * lauf;
                        lauf= & (*lauf)->next)
                /* Nur Ende der Liste finden */ ;

        (* lauf) = (case_liste*) xmalloc (sizeof (struct case_liste));

        (* lauf) -> case_label          = -1000000; /* als dummy-wert */

        (* lauf) -> is_default          = 1;

        (* lauf) -> case_aktion         = get_last_aktions_liste ();

        (* lauf) -> next                = NULL;
}
void get_umstimmungs_case_zahl_element ( int  konstante)

Definiert in Zeile 1725 der Datei Parser.cpp.

Benutzt case_liste::case_aktion, case_liste::case_label, get_last_aktions_liste(), case_liste::is_default, case_liste::next und xmalloc().

Wird benutzt von yyparse().

{

        struct case_liste * * lauf;

        for (lauf= & tmp_umstimmungs_case_liste;
                        * lauf;
                        lauf= & (*lauf)->next)
                /* Nur Ende der Liste finden */ ;

        (* lauf) = (case_liste*) xmalloc (sizeof (struct case_liste));

        (* lauf) -> case_label          = konstante;

        (* lauf) -> is_default          = 0;

        (* lauf) -> case_aktion         = get_last_aktions_liste ();

        (* lauf) -> next                = NULL;
}
double get_wert_komplex_intervall ( struct komplex_intervall intervall)

Definiert in Zeile 68 der Datei Interval.cpp.

Benutzt fatal_error(), get_intervall_wert(), mutC_STR, name und intervall::next.

Wird benutzt von berechne_intervall_endgueltig(), berechne_ton_endgueltig(), expandiere_tonsystem() und expandiere_umstimmung().

{
        double ret = 1.0;

        for ( ; intervall ; intervall = intervall -> next )
        {
                double help = get_intervall_wert (intervall -> name);

                if (help > 0)
                        ret *= pow (help, intervall -> faktor);
                else {
                        fatal_error(46, mutC_STR(intervall -> name));
                        /* unzul. Intervallwert */
                }

        }

        return ret;
}
static int* get_wert_of_argument ( struct argument argument,
struct interpreter_parameter_liste aktuelle_parameter 
) [static]

Definiert in Zeile 257 der Datei TabGen.cpp.

Benutzt argument::argument_typ, fatal_error(), get_cache_konstante(), interpreter_parameter_liste::next, argument::parameter, parameter, argument::u, interpreter_parameter_liste::werte_feld, argument::zahl und zahl.

Wird benutzt von expandiere_umstimmung().

{
        switch (argument->argument_typ)
        {

        case zahl:
                return * get_cache_konstante (argument->u.zahl.zahl);

                /*    break; */

        case parameter: {

                struct interpreter_parameter_liste * lauf;
                int i;

                for (lauf=aktuelle_parameter, i=argument->u.parameter.parameter_nummer;
                                lauf && i;
                                lauf = lauf -> next, i--)
                        ;

                if (lauf)
                        return * lauf->werte_feld;
                else {
                        fatal_error (0, __FILE__, __LINE__);
                        return NULL;
                }
        }

        /*    break; */

        default:
                fatal_error (0, __FILE__, __LINE__);

                return NULL;

                /*    break; */
        }

}
int pascal GetActString ( unsigned char **  box,
int **  l,
char **  s 
)

Definiert in Zeile 160 der Datei GrafKern.cpp.

Benutzt boxAktionen, lAktionen, nAktionen und sAktionen.

Wird benutzt von TakeOverAktions().

{
        int n = nAktionen;
        *box = boxAktionen;
        *l = lAktionen;
        *s = sAktionen;
        nAktionen = 0;
        return n;
}
int GetChannel ( int  box,
int  taste 
)

Definiert in Zeile 554 der Datei Device.cpp.

Benutzt OutDevice::GetChannel(), InDevice::GetDeviceList(), Route::GetNext() und InDevice::GetNext().

Wird benutzt von protokoll_liegende_frequenzen() und MutBoxShape::readDialog().

{
        for (InDevice *In = InDevice::GetDeviceList(); In; In = In->GetNext()) {
                for (Route *R = In->GetRoutes(); R; R = R->GetNext()) {
                        OutDevice * out;
                        if ( R->Box == box && (out = R->GetOutDevice())) {
                                int c = out->GetChannel(taste);

                                if ( c != -1 )
                                        return c;
                        }
                }
        }
        return -1;
}
wxString getContextLocal ( const wxString &  s) [inline]

Definiert in Zeile 197 der Datei Defs.h.

Wird benutzt von MutApp::MakeFileMenu().

{
        wxString ret = s.AfterFirst('|');

        if (ret == wxEmptyString) return s;
        else return ret;
}
int pascal GetErrorLine ( )

Definiert in Zeile 391 der Datei GrafKern.cpp.

Benutzt _() und Fmeldung.

{
#if defined(WX)
        int i = Fmeldung.First(_("line"));
        long l;

        if ( i != -1 && Fmeldung.Mid(i+wxString(_("line")).Length()).ToLong(&l) )
                return l;
        else
                return -1;

#else
        char *s = strstr(Fmeldung, "Zeile");

        if ( !s ) return -1;

        return atol(&(s[5]));

#endif
}
char *pascal GetKeyString ( int  box,
char  asTS 
)
int pascal GetLineNumbers ( )

Definiert in Zeile 384 der Datei GrafKern.cpp.

Benutzt protokoll_ausgabezeile.

char *pascal GetTSString ( int  box,
char  asTS 
)
void GlobalReset ( )
void HARMONIE_analyse ( int  instr,
PATTERNN pattern 
)
void HarmonyAnalysis ( int  box,
PATTERNN pattern 
)

Definiert in Zeile 477 der Datei Execute.cpp.

Benutzt harmonie_ereignis::aktion, TSYS::breite, compare_harmonie(), execute_aktion(), first_harmonie, GET_INDEX, hoechste_taste(), harmonie_ereignis::ist_harmonieform, laufzeit_abstand, laufzeit_zentrum, mut_box, harmonie_ereignis::nachtaste, harmonie_ereignis::next, harmonie_ereignis::pattern, tiefste_taste(), mutabor_box_type::tonesystem und harmonie_ereignis::vortaste.

Wird benutzt von AddKey(), DeleteKey() und execute_aktion().

{

        struct harmonie_ereignis *help;
        tone_system *tonsys = mut_box[box].tonesystem;
        int i;

        for (help = first_harmonie[box]; help; help=help->next ) {
                switch ( help->ist_harmonieform ) {

                case 0: // analysiere auf harmonie
                        if ( help->vortaste>=0 &&
                                        GET_INDEX(tiefste_taste(box),tonsys ) != help->vortaste ) {
                                // failed
                        } else {
                                if ( help->nachtaste>=0 &&
                                                GET_INDEX(hoechste_taste(box),tonsys)!=help->nachtaste ) {
                                        // failed
                                } else {
                                        // teste_harmonie

                                        if ( compare_harmonie(tonsys->breite,0,pattern,help->pattern) ) {
                                                // PASST !!!
                                                execute_aktion(box,help->aktion);
                                                return;
                                        }
                                }
                        }

                        break;

                case 1: // analysiere auf harmonieform
                        for (i=0; i<tonsys->breite; i++) {
                                if ( help->vortaste>=0 &&
                                                GET_INDEX(tiefste_taste(box)-i, tonsys) != help->vortaste ) {
                                        // failed
                                } else {
                                        if ( help->nachtaste>=0 &&
                                                        GET_INDEX(hoechste_taste(box)-i, tonsys) != help->nachtaste ) {
                                                // failed
                                        } else {
                                                // teste_harmonie

                                                if (compare_harmonie(tonsys->breite, i, pattern, help->pattern)) {
                                                        // PASST !!!
                                                        laufzeit_abstand[box] = laufzeit_zentrum[box] = i;
                                                        execute_aktion(box, help->aktion);
                                                        return;
                                                }
                                        }
                                }
                        }

                        break;

                case 2: // default
                        execute_aktion(box, help->aktion);

                        break;
                }
        }
}
int hoechste_taste ( int  box)

Definiert in Zeile 442 der Datei Execute.cpp.

Benutzt liegende_tasten, liegende_tasten_max und max.

Wird benutzt von HarmonyAnalysis().

{
        int i, max = 0;

        for (i = 0; i<liegende_tasten_max[box]; i++)
                if ( liegende_tasten[box][i] > max )
                        max = liegende_tasten[box][i];
        return max;
}
void init_aktions_liste ( void  )

Definiert in Zeile 369 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        list_of_aktionen = NULL;
}
void init_anweisungs_liste ( void  )

Definiert in Zeile 2100 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        tmp_anweisungsliste = NULL;
}
void init_argument_liste ( void  )

Definiert in Zeile 316 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        list_of_argumente = NULL;
}
void init_ausloeser ( void  )

Definiert in Zeile 2030 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        tmp_ausloeser = NULL;
}
void init_integersequenz ( void  )

Definiert in Zeile 223 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        list_of_integers = NULL;
}
void init_komplex_ton_list ( void  )

Definiert in Zeile 413 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        the_komplex_liste = NULL;
}
void init_laufzeit_protokoll ( void  )
int init_laufzeit_speicher ( void  )

Definiert in Zeile 348 der Datei Hilfs.cpp.

Benutzt loesche_laufzeit_speicher().

void init_parameter_liste ( void  )

Definiert in Zeile 255 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        list_of_names = NULL;
}
int init_speicher_total ( void  )
int init_syntax_speicher ( void  )

Definiert in Zeile 276 der Datei Hilfs.cpp.

Benutzt loesche_syntax_speicher().

{
        return loesche_syntax_speicher ();
}
void init_tastenliste ( void  )

Definiert in Zeile 1932 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        tmp_tastenliste = NULL;
}
void init_ton_liste ( void  )

Definiert in Zeile 1149 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        ton_liste = NULL;
}
void init_umstimm_expression_list ( void  )

Definiert in Zeile 1428 der Datei Parser.cpp.

Wird benutzt von yyparse().

{
        tmp_tonliste = NULL;
}
void init_umstimmung ( const char name)

Definiert in Zeile 1234 der Datei Parser.cpp.

Benutzt fatal_error(), mutC_STR, name, umstimmung::next und xmalloc().

Wird benutzt von yyparse().

{

        struct umstimmung * lauf;

        for (lauf= list_of_umstimmungen; lauf; lauf= lauf -> next) {
                if ( ! strcmp (name, lauf -> name)) {
                        fatal_error(13,mutC_STR(name)); /* Umstimmungsname doppelt */
                }
        }

        tmp_umstimmung = (umstimmung*) xmalloc ((size_t) sizeof (struct umstimmung));

        tmp_umstimmung -> name            = name;
        tmp_umstimmung -> parameter_liste = NULL;
        tmp_umstimmung -> next            = NULL;
}
void init_umstimmungs_case_aktions_liste ( void  )
void init_umstimmungs_case_liste ( void  )

Definiert in Zeile 1770 der Datei Parser.cpp.

Wird benutzt von yyparse().

void init_yylex ( void  )

Definiert in Zeile 3142 der Datei mut.cpp.

Benutzt anzahl_eingelesene_zeichen und YYLTYPE::first_line.

Wird benutzt von Compile().

void InitCompDia ( HWND  compDiaLine)

Definiert in Zeile 181 der Datei GrafKern.cpp.

Benutzt CompDiaLine.

Wird benutzt von Compile().

{
        CompDiaLine = compDiaLine;
}
void insert_in_globale_liste ( int  instrument,
struct logik lauf 
)

Definiert in Zeile 823 der Datei TabGen.cpp.

Benutzt midi_ereignis::aktion, keyboard_ereignis::aktion, harmonie_ereignis::aktion, logik::ausloeser, ausloeser::ausloeser_harmonie, ausloeser_harmonie, ausloeser::ausloeser_harmonie_form, ausloeser_harmonie_form, ausloeser::ausloeser_midi_in, ausloeser_midi_in, ausloeser_taste, create_midi_scan_liste(), expand_pattern(), fatal_error(), midi_ereignis::first_pos, harmonie_ereignis::ist_harmonieform, harmonie_ereignis::nachtaste, logik::name, name, midi_ereignis::next, keyboard_ereignis::next, harmonie_ereignis::next, harmonie_ereignis::pattern, midi_ereignis::scan_pos, midi_ereignis::the_logik_to_expand, keyboard_ereignis::the_logik_to_expand, harmonie_ereignis::the_logik_to_expand, ausloeser::u, harmonie_ereignis::vortaste und xmalloc().

Wird benutzt von mutabor_tabellen_generator().

{

        struct harmonie_ereignis ** temp_harmonie;

        struct keyboard_ereignis ** temp_keyboard;

        struct midi_ereignis     ** temp_midi;

        if (lauf->ausloeser)
        {
                switch ((lauf->ausloeser)->ausloeser_typ) {

                case ausloeser_harmonie:
                        if (lauf->ausloeser->u.ausloeser_harmonie.vortaste == -2)
                                /* Dann unmöglicher Harmonieauslöser */
                                break;

                        /* Neuen Eintrag erzeugen */
                        for (temp_harmonie = & first_harmonie[instrument];
                                        *temp_harmonie;
                                        temp_harmonie = & (*temp_harmonie)->next)
                                ;

                        *temp_harmonie = (harmonie_ereignis*) xmalloc( (size_t)sizeof(struct harmonie_ereignis));

                        (*temp_harmonie) -> pattern=expand_pattern ((lauf->ausloeser)->u.ausloeser_harmonie.name) ;

                        (*temp_harmonie) -> ist_harmonieform=0;

                        (*temp_harmonie) -> vortaste=(lauf->ausloeser)->u.ausloeser_harmonie.vortaste ;

                        (*temp_harmonie) -> nachtaste=(lauf->ausloeser)->u.ausloeser_harmonie.nachtaste ;

                        (*temp_harmonie) -> name=lauf->name;

                        (*temp_harmonie) -> aktion=NULL;

                        (*temp_harmonie) -> the_logik_to_expand=lauf;

                        (*temp_harmonie) -> next=NULL;

                        break;

                case ausloeser_harmonie_form:
                        if (lauf->ausloeser->u.ausloeser_harmonie_form.vortaste == -2)
                                /* Dann unmöglicher Harmonieauslöser */
                                break;

                        /* Neuen Eintrag erzeugen */
                        for (temp_harmonie = & first_harmonie[instrument];
                                        *temp_harmonie;
                                        temp_harmonie = & (*temp_harmonie)->next)
                                ;

                        *temp_harmonie  = (harmonie_ereignis*) xmalloc((size_t)sizeof(struct harmonie_ereignis));

                        (*temp_harmonie) -> pattern=expand_pattern ((lauf->ausloeser)->u.ausloeser_harmonie_form.name) ;

                        (*temp_harmonie) -> ist_harmonieform=1;

                        (*temp_harmonie) -> vortaste=(lauf->ausloeser)->u.ausloeser_harmonie_form.vortaste ;

                        (*temp_harmonie) -> nachtaste=(lauf->ausloeser)->u.ausloeser_harmonie_form.nachtaste ;

                        (*temp_harmonie) -> name=lauf->name;

                        (*temp_harmonie) -> aktion=NULL;

                        (*temp_harmonie) -> the_logik_to_expand=lauf;

                        (*temp_harmonie) -> next=NULL;

                        break;

                case ausloeser_taste:
                        /* Neuen Eintrag erzeugen */
                        for (temp_keyboard = & first_keyboard[instrument];
                                        *temp_keyboard;
                                        temp_keyboard = & (*temp_keyboard)->next)
                                ;

                        *temp_keyboard  = (keyboard_ereignis*) xmalloc((size_t)sizeof(struct keyboard_ereignis));

                        (*temp_keyboard) -> taste= (*((lauf->ausloeser)->u.ausloeser_taste.taste)) ;

                        (*temp_keyboard) -> name=lauf->name;

                        (*temp_keyboard) -> aktion=NULL;

                        (*temp_keyboard) -> the_logik_to_expand=lauf;

                        (*temp_keyboard) -> next=NULL;

                        break;

                case ausloeser_midi_in:
                        /* Neuen Eintrag erzeugen */
                        for (temp_midi = & first_midi[instrument];
                                        *temp_midi;
                                        temp_midi = & (*temp_midi)->next)
                                ;

                        *temp_midi  = (midi_ereignis*) xmalloc((size_t)sizeof(struct midi_ereignis));

                        /* Werte eintragen */

                        (*temp_midi) -> first_pos =
                                (*temp_midi) -> scan_pos =
                                        create_midi_scan_liste (lauf->ausloeser->u.ausloeser_midi_in.midi_code);

                        (*temp_midi) -> name = lauf->name;

                        (*temp_midi) -> aktion=NULL;

                        (*temp_midi) -> the_logik_to_expand=lauf;

                        (*temp_midi) -> next = NULL;

                        break;

                default:
                        fatal_error(0, __FILE__, __LINE__);
                }
        }
}
void insert_in_lokale_liste ( int  instrument,
struct anweisung lauf,
const char name_der_logik 
)

Definiert in Zeile 951 der Datei TabGen.cpp.

Benutzt midi_ereignis::aktion, keyboard_ereignis::aktion, anweisung::aktion, harmonie_ereignis::aktion, anweisung::ausloeser, ausloeser_default, ausloeser::ausloeser_harmonie, ausloeser_harmonie, ausloeser::ausloeser_harmonie_form, ausloeser_harmonie_form, ausloeser::ausloeser_midi_in, ausloeser_midi_in, ausloeser_taste, create_midi_scan_liste(), expand_aktions_liste(), expand_pattern(), fatal_error(), midi_ereignis::first_pos, harmonie_ereignis::ist_harmonieform, harmonie_ereignis::nachtaste, name, midi_ereignis::next, keyboard_ereignis::next, harmonie_ereignis::next, harmonie_ereignis::pattern, midi_ereignis::scan_pos, ausloeser::u, harmonie_ereignis::vortaste und xmalloc().

Wird benutzt von mutabor_tabellen_generator().

{

        struct harmonie_ereignis ** temp_harmonie;

        struct keyboard_ereignis ** temp_keyboard;

        struct midi_ereignis     ** temp_midi;

        if (lauf->ausloeser)
        {
                switch ((lauf->ausloeser)->ausloeser_typ) {

                case ausloeser_harmonie:
                        if (lauf->ausloeser->u.ausloeser_harmonie.vortaste == -2)
                                /* Dann unmöglicher Harmonieauslöser */
                                break;

                        /* Neuen Eintrag erzeugen */
                        for (temp_harmonie = & first_lokal_harmonie[instrument];
                                        *temp_harmonie;
                                        temp_harmonie = & (*temp_harmonie)->next)
                                ;

                        *temp_harmonie = (harmonie_ereignis*) xmalloc( (size_t)sizeof(struct harmonie_ereignis));

                        (*temp_harmonie) -> pattern =expand_pattern ((lauf->ausloeser)->u.ausloeser_harmonie.name) ;

                        (*temp_harmonie) -> ist_harmonieform=0;

                        (*temp_harmonie) -> vortaste=(lauf->ausloeser)->u.ausloeser_harmonie.vortaste ;

                        (*temp_harmonie) -> nachtaste=(lauf->ausloeser)->u.ausloeser_harmonie.nachtaste ;

                        (*temp_harmonie) -> name=name_der_logik;

                        (*temp_harmonie) -> aktion=
                                expand_aktions_liste (lauf->aktion, start_parameter_liste);

                        (*temp_harmonie) -> next=NULL;

                        break;

                case ausloeser_harmonie_form:
                        if (lauf->ausloeser->u.ausloeser_harmonie_form.vortaste == -2)
                                /* Dann unmöglicher Harmonieauslöser */
                                break;

                        /* Neuen Eintrag erzeugen */
                        for (temp_harmonie = & first_lokal_harmonie[instrument];
                                        *temp_harmonie;
                                        temp_harmonie = & (*temp_harmonie)->next)
                                ;

                        *temp_harmonie  = (harmonie_ereignis*) xmalloc((size_t)sizeof(struct harmonie_ereignis));

                        (*temp_harmonie) -> pattern=expand_pattern ((lauf->ausloeser)->u.ausloeser_harmonie_form.name) ;

                        (*temp_harmonie) -> ist_harmonieform=1;

                        (*temp_harmonie) -> vortaste=(lauf->ausloeser)->u.ausloeser_harmonie_form.vortaste ;

                        (*temp_harmonie) -> nachtaste=(lauf->ausloeser)->u.ausloeser_harmonie_form.nachtaste ;

                        (*temp_harmonie) -> name=name_der_logik;

                        (*temp_harmonie) -> aktion=
                                expand_aktions_liste (lauf->aktion, start_parameter_liste);

                        (*temp_harmonie) -> next=NULL;

                        break;

                case ausloeser_default:
                        /* Neuen Eintrag erzeugen */
                        for (temp_harmonie = & first_lokal_harmonie[instrument];
                                        *temp_harmonie;
                                        temp_harmonie = & (*temp_harmonie)->next)
                                ;

                        *temp_harmonie  = (harmonie_ereignis*) xmalloc((size_t)sizeof(struct harmonie_ereignis));

                        (*temp_harmonie) -> pattern=NULL ;

                        (*temp_harmonie) -> ist_harmonieform=2;

                        /* 2 als Wert für ANSONSTEN */

                        (*temp_harmonie) -> vortaste=0 ;

                        (*temp_harmonie) -> nachtaste=0 ;

                        (*temp_harmonie) -> name=name_der_logik;

                        (*temp_harmonie) -> aktion=
                                expand_aktions_liste (lauf->aktion, start_parameter_liste);

                        (*temp_harmonie) -> next=NULL;

                        break;

                case ausloeser_taste:
                        /* Neuen Eintrag erzeugen */
                        for (temp_keyboard = & first_lokal_keyboard[instrument];
                                        *temp_keyboard;
                                        temp_keyboard = & (*temp_keyboard)->next)
                                ;

                        *temp_keyboard  = (keyboard_ereignis*) xmalloc((size_t)sizeof(struct keyboard_ereignis));

                        (*temp_keyboard) -> taste= (*((lauf->ausloeser)->u.ausloeser_taste.taste)) ;

                        (*temp_keyboard) -> name=name_der_logik;

                        (*temp_keyboard) -> aktion=
                                expand_aktions_liste (lauf->aktion, start_parameter_liste);

                        (*temp_keyboard) -> next=NULL;

                        break;

                case ausloeser_midi_in:
                        /* Neuen Eintrag erzeugen */
                        for (temp_midi = & first_lokal_midi[instrument];
                                        *temp_midi;
                                        temp_midi = & (*temp_midi)->next)
                                ;

                        *temp_midi  = (midi_ereignis*) xmalloc((size_t)sizeof(struct midi_ereignis));

                        /* Werte eintragen */

                        (*temp_midi) -> first_pos =
                                (*temp_midi) -> scan_pos =
                                        create_midi_scan_liste (lauf->ausloeser->u.ausloeser_midi_in.midi_code);

                        (*temp_midi) -> name=name_der_logik;

                        (*temp_midi) -> aktion=
                                expand_aktions_liste (lauf->aktion, start_parameter_liste);

                        (*temp_midi) -> next = NULL;

                        break;

                default:
                        fatal_error(0, __FILE__, __LINE__);
                }
        }
}
int intern_fgetc ( FILE *  stream)

Definiert in Zeile 45 der Datei Hilfs.cpp.

Benutzt DEBUGLOG2, is_valid und the_character.

Wird benutzt von yylex().

{
        int zeichen;

        if (is_valid) {
                is_valid = 0;
                DEBUGLOG2(other,_T("old character: %x"),the_character);
                return  the_character;
        }

        zeichen = fgetc(stream);

        DEBUGLOG2(other,_T("new character: %x, EOF %d"),zeichen,feof(stream));
        return zeichen;
}
int intern_ungetc ( int  c,
FILE *  stream 
)

Definiert in Zeile 62 der Datei Hilfs.cpp.

Benutzt is_valid, SeRiEnNuMmEr und the_character.

Wird benutzt von yylex().

{
        SeRiEnNuMmEr[0] = the_character;
        is_valid = 1;
        the_character = c;
        return 0;
}
void KEYB_analyse ( int  key)
void keyboard_analyse ( int  taste)
void pascal _export KeyboardAnalyse ( int  box,
int  taste,
char  isLogic 
)

Definiert in Zeile 611 der Datei Execute.cpp.

Benutzt execute_aktion(), first_keyboard und keyboard_ereignis::next.

Wird benutzt von KeyboardIn() und MutLogicWnd::UpDate().

{
        for (struct keyboard_ereignis *help = first_keyboard[box]; help ; help=help->next)
                if ( toupper(taste)==help->taste && isLogic == ( help->the_logik_to_expand != NULL ) ) {
                        execute_aktion(box, help->aktion);
                        return;
                }
}
void pascal _export KeyboardAnalyseSimple ( int  box,
int  taste 
)

Definiert in Zeile 625 der Datei Execute.cpp.

Benutzt execute_aktion(), first_keyboard und keyboard_ereignis::next.

Wird benutzt von keyboard_analyse() und KeyboardIn().

{

        for (struct keyboard_ereignis *help = first_keyboard[box]; help ; help=help->next)
                if ( toupper(taste)==help->taste ) {
                        execute_aktion(box, help->aktion);
                        return;
                }
}
void KeyboardIn ( int  box,
const mutChar *  keys 
)

Definiert in Zeile 567 der Datei Execute.cpp.

Benutzt aktuelle_keyboard_box, KeyboardAnalyse(), KeyboardAnalyseSimple(), mutChar, mutStrLen und mutT.

Wird benutzt von MutaborTag().

{
        aktuelle_keyboard_box = box;
        char TonSystem = 0;

        for (size_t i= 0; i < mutStrLen(keys); i++) {
                mutChar c = keys[i];

                if ( c == mutT('&') ) {
                        TonSystem = 1;
                        continue;
                }

                if ( mutT('0') <= c && c <= mutT('z') ) {
                        if ( TonSystem )
                                KeyboardAnalyse(box, (int) c, 0);
                        else
                                KeyboardAnalyseSimple(box, (int) c);
                }
                TonSystem = 0;
        }
}
void laufzeit_message ( const char Meldung)

Definiert in Zeile 325 der Datei GrafKern.cpp.

Benutzt PROT_MAXCHARS, protokoll_ausgabezeile und protokoll_string.

Wird benutzt von laufzeit_protokoll().

{
        if ( strlen(protokoll_string) + strlen(Meldung) <= PROT_MAXCHARS - 2 ) {
                if ( protokoll_ausgabezeile ) strcat(protokoll_string, "\n");

                strcat(protokoll_string, Meldung);

                protokoll_ausgabezeile++;
        }
}
void laufzeit_protokoll ( const char formatstring,
  ... 
)

Definiert in Zeile 347 der Datei GrafKern.cpp.

Benutzt Fmeldung und laufzeit_message().

Wird benutzt von protokoll_aktuelle_relationen(), protokoll_aktuelles_tonsystem(), protokoll_liegende_frequenzen() und protokoll_liegende_relationen().

{
        char Fmeldung[255];
        va_list arglist;

        va_start(arglist, formatstring); /* hier 0 statt nr */
        vsprintf(Fmeldung, formatstring, arglist );
        laufzeit_message (Fmeldung);
}
int loesche_laufzeit_speicher ( void  )

Definiert in Zeile 353 der Datei Hilfs.cpp.

Benutzt laufzeit_heap, mini_heap::next und mini_heap::pointer.

Wird benutzt von init_laufzeit_speicher().

{

        struct mini_heap * lauf = laufzeit_heap;

        while (lauf) {

                struct mini_heap * help = lauf;
#ifdef ACS_VERSION
                Ax_ifree (lauf -> pointer);
#else
                free (lauf -> pointer);
#endif

                lauf = lauf -> next;

#ifdef ACS_VERSION
                Ax_ifree (help);
#else
                free (help);
#endif

        }

        laufzeit_heap = NULL;

        return 0; /* 0=ok, 1=fehler */
}
int loesche_speicher_total ( void  )
int loesche_syntax_speicher ( void  )

Definiert in Zeile 253 der Datei Hilfs.cpp.

Benutzt heap_element::next und syntax_heap.

Wird benutzt von Compile() und init_syntax_speicher().

{

        struct heap_element * lauf = syntax_heap;

        while (lauf) {

                struct heap_element * help = lauf->next;
#ifdef ACS_VERSION
                Ax_ifree (lauf);
#else
                free (lauf);
#endif
                lauf = help;
        }

        syntax_heap = NULL;

        heap_to_use_syntax = NULL;

        return 0; /* 0=ok, 1=fehler */
}
int logik_list_laenge ( struct logik list)

Definiert in Zeile 110 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von calc_declaration_numbers(), check_konsistenz() und mutabor_tabellen_generator().

{
        if (list) return 1 + logik_list_laenge (list -> next);

        return 0;
}
tone_system* lz_get_tonsystem ( int  instr)
void MAUS_analyse ( int  mx,
int  my 
)
void message_tasten_liste ( void  )
void MIDI_analyse ( int  code)
int midi_list_laenge ( struct midiliste list)

Definiert in Zeile 117 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von create_midi_scan_liste().

{
        if (list) return 1 + midi_list_laenge (list -> next);

        return 0;
}
void MidiAnalysis ( int  box,
BYTE  midiByte 
)

Definiert in Zeile 590 der Datei Execute.cpp.

Benutzt midi_ereignis::aktion, execute_aktion(), first_midi, midi_ereignis::first_pos, midi_ereignis::next und midi_ereignis::scan_pos.

Wird benutzt von InMidiPort::ProceedRoute() und InMidiFile::ProceedRoute().

{
        struct midi_ereignis * lauf;

        if ( midiByte & 0x80 )
                midiByte &= 0xF0;

        for (lauf = first_midi[box]; lauf; lauf=lauf->next) {
                if ( *(lauf->scan_pos) != midiByte )
                        lauf->scan_pos = lauf->first_pos;
                else {
                        lauf->scan_pos++;
                        if ( *(lauf->scan_pos) == -1 )
                                break;
                }
        }

        if ( lauf )
                execute_aktion( box, lauf->aktion);
}
void MidiOut ( int  box,
DWORD  data,
char  n 
)

Definiert in Zeile 536 der Datei Device.cpp.

Benutzt InDevice::GetDeviceList(), Route::GetNext(), InDevice::GetNext() und MidiOut().

Wird benutzt von execute_aktion(), MidiOut() und compat30::SaveRoutes().

{
        for (InDevice *In = InDevice::GetDeviceList(); In; In = In->GetNext()) {
                for (Route *R = In->GetRoutes(); R; R = R->GetNext()) {
                        OutDevice * out;
                        if ( R->Box == box && (out = R->GetOutDevice())) {
                                out -> MidiOut(data, n);
                        }
                }
        }
}
void mutabor_codegenerator ( const char filename)
void mutabor_programm_einlesen ( const wxChar *  filename)

Wird benutzt von Compile().

void mutabor_programm_einlesen ( const mutChar *  filename)

Definiert in Zeile 567 der Datei Parser.cpp.

Benutzt anweisung::aktion, logik::anweisungsliste, argument_liste::argument, aktions_liste::argument_liste, anweisung::ausloeser, logik::ausloeser, berechne_intervalle_absolut(), berechne_toene_absolut(), case_liste::case_label, check_konsistenz(), logik::einstimmungs_name, fatal_error(), get_instrument_dekl(), get_new_intervall(), get_new_ton_absolut(), intervall::intervall_wert, case_liste::is_default, list_of_config_instrumente, instrument::midi_bis, instrument::midi_in, instrument::midi_von, logik::name, aktions_liste::name, parameter_liste::name, umstimmung::name, ton::name, tonsystem::name, intervall::name, instrument::next, anweisung::next, logik::next, harmonie::next, case_liste::next, argument_liste::next, aktions_liste::next, parameter_liste::next, umstimmung::next, tonsystem::next, ton::next, intervall::next, umstimmung::parameter_liste, tonsystem::periode, setze_nummer_von_abstand_und_zentrum(), tonsystem::taste, tonsystem::toene, ton_list_laenge(), umstimmung::u, ton::u, umstimmung::umstimmung_breite_abs, umstimmung_breite_abs, umstimmung::umstimmung_breite_rel, umstimmung_breite_rel, umstimmung::umstimmung_taste_abs, umstimmung_taste_abs, umstimmung::umstimmung_taste_rel, umstimmung_taste_rel, umstimmung_toene_veraendert, umstimmung::umstimmung_umstimmungs_case, umstimmung_umstimmungs_case, umstimmung::umstimmung_umstimmungsbund, umstimmung_umstimmungsbund, umstimmung_wiederholung_abs, umstimmung_wiederholung_rel und yyparse().

{

        if ((quelldatei = wxFopen (filename, _T("r"))) == NULL) {
                fatal_error(3,filename);
        }

        list_of_intervalle            = NULL;

        list_of_toene                 = NULL;
        list_of_tonsysteme            = NULL;
        list_of_umstimmungen          = NULL;
        list_of_harmonien             = NULL;
        list_of_logiken               = NULL;
        list_of_instrumente           = NULL;
        list_of_config_instrumente    = NULL;


#ifdef DEBUG_ANZEIGE
        printf ("\nStart parsing\n");
#endif

        if (yyparse()) {
                fatal_error(1,-999); /* Wird sowieso nie aufgerufen ... */
        }

        fclose (quelldatei);

        // NEU: wenn kein Intervall oder Ton da, dann Speichermangel
        // also evtl. Dummy
        // (das Problem l‰flt sich sicher auch direkt lˆsen ...)

        if ( !list_of_intervalle )
                get_new_intervall("__TopSecret__RK__Intervall__", 1.0);

        berechne_intervalle_absolut (list_of_intervalle);

        if ( !list_of_toene )
                get_new_ton_absolut("__TopSecret__RK__Ton__", 440.0);

        berechne_toene_absolut (list_of_toene);


        /* Falls kein Instrument angegeben ist: Dann 1 -> 1-16 */

        if (list_of_instrumente == NULL &&
                        list_of_config_instrumente == NULL) {
                get_instrument_dekl (1, 1, 16, 0, & list_of_instrumente);
        } else if (list_of_instrumente == NULL) {
                list_of_instrumente = list_of_config_instrumente;
        }


        setze_nummer_von_abstand_und_zentrum ();

        check_konsistenz ();

#ifdef DEBUG_ANZEIGE

        { struct intervall * lauf;
                printf ("\n");

                for (lauf=list_of_intervalle; lauf; lauf=lauf->next) {
                        printf ("Name: %s, Wert: %lf:\n", lauf->name,
                                lauf->intervall_wert );
                }
        }

        { struct ton * lauf;
                printf ("\n");

                for (lauf=list_of_toene; lauf; lauf=lauf->next) {
                        drucke_ton (lauf);

                }
        }

        { struct tonsystem * lauf;
                printf ("\n");

                for (lauf=list_of_tonsysteme; lauf; lauf=lauf->next) {

                        struct ton * help;
                        printf ("Name: %s, Taste: %d, Periode: %s, "
                                "Tonleiter_breite: %d\n",
                                lauf->name,
                                lauf->taste,
                                lauf->periode,
                                ton_list_laenge (lauf->toene));

                        for (help = lauf->toene; help; help = help->next ) {
                                printf ("%s , ", help->name ? help->name : "(NULL)");
                        }

                        printf ("\n");
                }
        }

        printf ("Umstimmungen:\n");

        {

                struct umstimmung * lauf;
                printf ("\n");

                for (lauf=list_of_umstimmungen; lauf; lauf=lauf->next) {

                        struct parameter_liste * help;
                        printf ("\nName: %s, Parameter: ", lauf->name);

                        for (help = lauf->parameter_liste; help; help = help->next ) {
                                printf ("%s , ", help->name ? help->name : "(NULL)");
                        }

                        printf ("\n");

                        switch (lauf -> umstimmung_typ) {

                        case umstimmung_taste_abs :
                                printf ("        umstimmung_taste_abs : ");

                                drucke_argument (
                                        & lauf -> u.umstimmung_taste_abs.argument);

                                printf ("\n");

                                break;

                        case umstimmung_taste_rel :
                                printf ("        umstimmung_taste_rel : ");

                                drucke_argument (
                                        & lauf -> u.umstimmung_taste_rel.argument);

                                printf (" Rechenzeichen: \"%c\"\n",
                                        lauf -> u.umstimmung_taste_rel.rechenzeichen);

                                break;

                        case umstimmung_breite_abs :
                                printf ("        umstimmung_breite_abs : ");

                                drucke_argument (
                                        & lauf -> u.umstimmung_breite_abs.argument);

                                printf ("\n");

                                break;

                        case umstimmung_breite_rel :
                                printf ("        umstimmung_breite_rel : ");

                                drucke_argument (
                                        & lauf -> u.umstimmung_breite_rel.argument);

                                printf (" Rechenzeichen: \"%c\"\n",
                                        lauf -> u.umstimmung_breite_rel.rechenzeichen);

                                break;

                        case umstimmung_toene_veraendert : {

                                struct ton * help;
                                printf ("        umstimmung_toene_veraendert : \n");

                                for (help = lauf -> u.umstimmung_toene_veraendert.tonliste;
                                                help;
                                                help = help -> next) {
                                        printf ("        ");
                                        drucke_ton (help);
                                }

                                break;
                        }

                        case umstimmung_wiederholung_abs :
                                printf ("        umstimmung_wiederholung_abs :");

                                printf ("Name : %s \n",
                                        lauf -> u.umstimmung_wiederholung_abs.name);

                                break;

                        case umstimmung_wiederholung_rel :
                                printf ("        umstimmung_wiederholung_rel : ");

                                drucke_argument (
                                        & lauf -> u.umstimmung_wiederholung_rel.argument);

                                printf (" R-zeichen: \"%c\"\n",
                                        lauf -> u.umstimmung_wiederholung_rel.rechenzeichen);

                                break;

                        case umstimmung_umstimmungsbund : {

                                struct aktions_liste * help_umst;
                                printf ("        umstimmung_umstimmungsbund : \n");
                                print_aktions_liste (lauf->u.umstimmung_umstimmungsbund.aktions_liste);



                                for (help_umst = lauf->u.umstimmung_umstimmungsbund.aktions_liste;
                                                help_umst;
                                                help_umst = help_umst -> next ) {

                                        struct argument_liste * help;
                                        printf ("                Umstimmungs-name: %s, Parameter: ",
                                                help_umst->name ? help_umst->name : "(NULL)");

                                        for (help = help_umst->argument_liste; help; help = help->next ) {
                                                drucke_argument ( & help -> argument );
                                        }

                                        printf ("\n");
                                }



                        }

                        break;

                        case umstimmung_umstimmungs_case : {

                                struct case_liste * help_case;
                                printf ("        umstimmung_umstimmungs_case : \n");
                                drucke_argument (
                                        & lauf -> u.umstimmung_umstimmungs_case.argument);

                                for (help_case = lauf -> u.umstimmung_umstimmungs_case.umstimmungs_case_liste;
                                                help_case;
                                                help_case = help_case -> next) {

                                        struct aufruf_liste * help_umst;

                                        if (help_case->is_default)
                                                printf ("(ANSONSTEN)");
                                        else
                                                printf ("%lf ", help_case->case_label);

                                        for (help_umst = help_case->case_aufruf;
                                                        help_umst;
                                                        help_umst = help_umst -> next ) {

                                                struct argument_liste * help;
                                                printf ("                Aktions-name: %s, Parameter: ",
                                                        help_umst->name ? help_umst->name : "(NULL)");

                                                for (help = help_umst->argument_liste; help; help = help->next ) {
                                                        drucke_argument ( & help->argument);
                                                }

                                                printf ("\n");
                                        }
                                }
                        }

                        break;
                        } /* end of switch */
                }
        }

        printf ("\nHarmonien:\n");

        {

                struct harmonie * lauf;

                for (lauf=list_of_harmonien; lauf; lauf=lauf->next) {
                        printf ("\n");
                        drucke_harmonie (lauf);
                        printf ("\n");
                }
        }

        printf ("\nLogiken:\n");

        {

                struct logik * lauf;

                for (lauf=list_of_logiken; lauf; lauf=lauf->next) {

                        struct anweisung * anw_lauf;
                        print_ausloeser (lauf->ausloeser);
                        printf ("\nName: %s Einstimmung : %s\n",
                                lauf->name,
                                lauf->einstimmungs_name ?
                                lauf->einstimmungs_name :
                                "(NULL)");

                        for (anw_lauf = lauf->anweisungsliste;
                                        anw_lauf;
                                        anw_lauf = anw_lauf -> next) {
                                print_ausloeser (anw_lauf->ausloeser);
                                print_aktion (anw_lauf->aktion);
                        }
                }
        }

        printf ("\nInstrumente:\n");

        {

                struct instrument * lauf;

                for (lauf=list_of_instrumente; lauf; lauf=lauf->next) {
                        printf ("Instrument %d -> %d - %d\n", lauf->midi_in,
                                lauf->midi_von, lauf->midi_bis);
                }
        }


#endif

}
void mutabor_tabellen_generator ( void  )

Definiert in Zeile 1206 der Datei TabGen.cpp.

Benutzt logik::anweisungsliste, expandiere_in_globale_liste(), get_ende_harmonie(), get_ende_keyboard(), get_ende_midi(), insert_in_globale_liste(), insert_in_lokale_liste(), list_of_logiken, logik_list_laenge(), MAX_BOX, logik::name, logik::next, anweisung::next und xcalloc().

Wird benutzt von Compile().

{
        //Neu:  extra Löschungen
        cache_konstanten = NULL;

        /* Ausgabe der Pointer-Setz-Prozeduren */

        struct logik * lauf;

        struct anweisung * lauf_anweisung;
        int i;


        for (i=0; i<MAX_BOX; i++) {
                first_midi     [i] = NULL;
                first_keyboard [i] = NULL;
                first_harmonie [i] = NULL;
        }


        for (i=0;i<MAX_BOX;i++) {

                /* Die globalen Listen werden initialisiert: */

                /* Die globalen Auslöser werden in die vorbereiteten Listen eingetragen: */

                for (lauf = list_of_logiken; lauf; lauf = lauf -> next) {

                        insert_in_globale_liste (i, lauf);
                }

                last_global_harmonie[i]=get_ende_harmonie (& first_harmonie[i]);

                last_global_keyboard[i]=get_ende_keyboard (& first_keyboard[i]);
                last_global_midi[i]=get_ende_midi (& first_midi[i]);
        }

        /* Die lokalen Listen werden erzeugt: */
        /* Es wird ein Array mit Anfangszeigern  auf die lokalen
           Auslöser angelegt. Die Nummer der Logik ist index */

        i = logik_list_laenge (list_of_logiken);

        first_lokal_harmonie = (harmonie_ereignis* *) xcalloc ((size_t)i, sizeof(first_lokal_harmonie[0]));

        first_lokal_keyboard = (keyboard_ereignis* *) xcalloc ((size_t)i, sizeof(first_lokal_keyboard[0]));

        first_lokal_midi     = (midi_ereignis* *) xcalloc ((size_t)i, sizeof(first_lokal_midi[0]));
        
        /* #### Wichtig ist, daß calloc alles auf 0 setzt (NULL)  */

        for (lauf=list_of_logiken, i=0;
                        lauf;
                        lauf=lauf->next, i++ ) {

                for (lauf_anweisung=lauf->anweisungsliste; lauf_anweisung;
                                lauf_anweisung=lauf_anweisung->next) {

                        insert_in_lokale_liste (i, lauf_anweisung, lauf->name);
                }
        }


        expandiere_in_globale_liste ();

} /* end of mutabor_tabellen_generator */
void MutResetKeys ( )

Definiert in Zeile 80 der Datei Execute.cpp.

Benutzt keys_changed, keys_changed_sum, last_global_harmonie, last_global_keyboard, last_global_midi, liegende_tasten_max, logic_changed, MAX_BOX, MAX_BREITE und mut_box.

Wird benutzt von GlobalReset() und Panic().

{
        for (int i = 0; i<MAX_BOX; i++) {
                if ( last_global_harmonie[i] && *last_global_harmonie[i] )
                        *last_global_harmonie[i] = NULL;

                if ( last_global_keyboard[i] && *last_global_keyboard[i] )
                        *last_global_keyboard[i] = NULL;

                if ( last_global_midi[i] && *last_global_midi[i] )
                        *last_global_midi[i]=NULL;

                liegende_tasten_max[i] = 0;

                for (int j = 0; j < MAX_BREITE; j++)
                        mut_box[i].pattern.tonigkeit[j] = 0;

                keys_changed[i] = 0;
                logic_changed[i] = 0;
        }

        keys_changed_sum = 0;
}
void NotesCorrect ( int  box)

Definiert in Zeile 548 der Datei Device.cpp.

Benutzt OutDevice::GetDeviceList() und OutDevice::GetNext().

Wird benutzt von execute_aktion().

{
        for (OutDevice *Out = OutDevice::GetDeviceList(); Out; Out = Out->GetNext())
                Out->NotesCorrect(box);
}
int frac::operator!= ( const frac f)

Definiert in Zeile 236 der Datei Frac.cpp.

Benutzt frac::d und frac::n.

{
        return d * f.n != n * f.d;
}
frac frac::operator* ( const frac  s)

Definiert in Zeile 169 der Datei Frac.cpp.

Benutzt frac::d, frac::frac(), frac::gcd() und frac::n.

{
        long cn = n * s.n;
        long cd = d * s.d;
        long gd = gcd(cd, cn);

        if ( gd != 1 ) {
                cn /= gd;
                cd /= gd;
        }

        return frac(cn, cd);
}
frac & frac::operator*= ( const frac f)

Definiert in Zeile 99 der Datei Frac.cpp.

Benutzt frac::d, frac::gcd() und frac::n.

{
        n *= f.n;
        d *= f.d;
        long gd = gcd(n, d);

        if ( gd != 1 ) {
                n /= gd;
                d /= gd;
        }

        return *this;
}
frac frac::operator+ ( const frac  s)

Definiert in Zeile 129 der Datei Frac.cpp.

Benutzt frac::d, frac::frac(), frac::gcd() und frac::n.

{
        if ( !d  || !s.d ) return frac(1,0);

        long cd = d * (s.d / gcd(d, s.d));

        long cn = n * (cd/d)+ s.n * (cd/s.d);

//  long cd = gcd(d, s.d);
//  long cn = n * (s.d/cd)+ s.n * (d/cd);
        long gd = gcd(cd, cn);

        if ( gd != 1 ) {
                cn /= gd;
                cd /= gd;
        }

        return frac(cn, cd);
}
frac & frac::operator+= ( const frac f)

Definiert in Zeile 51 der Datei Frac.cpp.

Benutzt frac::d, frac::gcd() und frac::n.

{
        if ( !d  || !f.d ) {
                n = 1;
                d = 0;
        } else {
                long cd = d * (f.d / gcd(d, f.d));
                long cn = n * (cd/d)+ f.n * (cd/f.d);
                long gd = gcd(cd, cn);

                if ( gd != 1 ) {
                        cn /= gd;
                        cd /= gd;
                }

                n = cn;

                d = cd;
        }

        return *this;
}
frac frac::operator- ( const frac  s)

Definiert in Zeile 150 der Datei Frac.cpp.

Benutzt frac::d, frac::frac(), frac::gcd() und frac::n.

{
        if ( !d  || !s.d ) return frac(1,0);

        long cd = d * (s.d / gcd(d, s.d));

        long cn = n * (cd/d)- s.n * (cd/s.d);

        long gd = gcd(cd, cn);

        if ( gd != 1 ) {
                cn /= gd;
                cd /= gd;
        }

        return frac(cn, cd);
}
frac & frac::operator-= ( const frac f)

Definiert in Zeile 75 der Datei Frac.cpp.

Benutzt frac::d, frac::gcd() und frac::n.

{
        if ( !d  || !f.d ) {
                n = 1;
                d = 0;
        } else {
                long cd = d * (f.d / gcd(d, f.d));
                long cn = n * (cd/d) - f.n * (cd/f.d);
                long gd = gcd(cd, cn);

                if ( gd != 1 ) {
                        cn /= gd;
                        cd /= gd;
                }

                n = cn;

                d = cd;
        }

        return *this;
}
frac frac::operator/ ( const frac  s)

Definiert in Zeile 184 der Datei Frac.cpp.

Benutzt frac::d, frac::frac(), frac::gcd() und frac::n.

{
        long cn = n * s.d;
        long cd = d * s.n;
        long gd = gcd(cd, cn);

        if ( gd != 1 ) {
                cn /= gd;
                cd /= gd;
        }

        return frac(cn, cd);
}
frac & frac::operator/= ( const frac f)

Definiert in Zeile 114 der Datei Frac.cpp.

Benutzt frac::d, frac::gcd() und frac::n.

{
        n *= f.d;
        d *= f.n;
        long gd = gcd(n, d);

        if ( gd != 1 ) {
                n /= gd;
                d /= gd;
        }

        return *this;
}
int frac::operator< ( const frac f)

Definiert in Zeile 199 der Datei Frac.cpp.

Benutzt frac::d und frac::n.

{
        char s = 0;

        if ( d < 0 ) s++;

        if ( f.d < 0 ) s++;

        if ( s == 1 )
                return n * f.d > d * f.n;
        else
                return n * f.d < d * f.n;
}
int frac::operator<= ( const frac f)

Definiert in Zeile 214 der Datei Frac.cpp.

Benutzt frac::d und frac::n.

{
        char s = 0;

        if ( d < 0 ) s++;

        if ( f.d < 0 ) s++;

        if ( s == 1 )
                return n * f.d >= d * f.n;
        else
                return n * f.d <= d * f.n;
}
frac & frac::operator= ( const frac f)

Definiert in Zeile 43 der Datei Frac.cpp.

Benutzt frac::d und frac::n.

{
        n = f.n;
        d = f.d;
        return *this;
}
frac & frac::operator= ( const int &  i)

Definiert in Zeile 272 der Datei Frac.cpp.

Benutzt frac::d und frac::n.

{
        n = i;
        d = 1;
        return *this;
}
int frac::operator== ( const frac f)

Definiert in Zeile 229 der Datei Frac.cpp.

Benutzt frac::d und frac::n.

{
        return d * f.n == n * f.d;
}
int frac::operator> ( const frac f)

Definiert in Zeile 257 der Datei Frac.cpp.

Benutzt frac::d und frac::n.

{
        char s = 0;

        if ( d < 0 ) s++;

        if ( f.d < 0 ) s++;

        if ( s == 1 )
                return n * f.d < d * f.n;
        else
                return n * f.d > d * f.n;
}
int frac::operator>= ( const frac f)

Definiert in Zeile 242 der Datei Frac.cpp.

Benutzt frac::d und frac::n.

{
        char s = 0;

        if ( d < 0 ) s++;

        if ( f.d < 0 ) s++;

        if ( s == 1 )
                return n * f.d <= d * f.n;
        else
                return n * f.d >= d * f.n;
}
int parameter_list_laenge ( struct parameter_liste list)

Definiert in Zeile 136 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von check_aktionen() und check_konsistenz().

{
        if (list) return 1 + parameter_list_laenge (list -> next);

        return 0;
}
static int parameter_nummer ( int  aktueller_index,
const char such_name,
struct parameter_liste knoten 
) [static]

Definiert in Zeile 284 der Datei Parser.cpp.

Benutzt name und parameter_liste::next.

Wird benutzt von get_umstimmung_breite_abs(), get_umstimmung_breite_rel(), get_umstimmung_taste_abs(), get_umstimmung_taste_rel(), get_umstimmung_umstimm_case_parameter(), get_umstimmung_umstimm_case_zahl() und get_umstimmung_umstimmungs_bund().

{
        if (knoten == NULL) return EOF;

        if ( ! strcmp (such_name, knoten -> name))
                return aktueller_index;

        return parameter_nummer (aktueller_index + 1, such_name,
                                 knoten -> next);
}
struct tonsystem * parser_get_tonsystem ( const char name,
struct tonsystem liste 
) [read]

Definiert in Zeile 175 der Datei Parser.cpp.

Benutzt tonsystem::name und tonsystem::next.

Wird benutzt von check_aktionen(), check_konsistenz(), expandiere_logik() und expandiere_name().

{
        if (liste == NULL) return NULL;

        if ( ! strcmp (name, liste->name)) return liste;

        return parser_get_tonsystem (name, liste->next);
}
void print_argumentliste ( struct argument_liste this_)

Definiert in Zeile 297 der Datei Parser.cpp.

Benutzt argument::argument_typ, parameter_liste::next, argument::parameter, argument::u, argument::zahl und zahl.

{
        if (this_)
        {
                if (this_ -> argument.argument_typ == zahl)
                        printf (" %d ", this_ -> argument.u.zahl.zahl);
                else
                        printf (" %s ", this_ -> argument.u.parameter.parameter_name);

                print_argumentliste (this_ -> next);
        }
}
void print_integersequenz ( struct midiliste this_)

Definiert in Zeile 941 der Datei Parser.cpp.

Benutzt midiliste::midi_code und midiliste::next.

{
        if (this_)
        {
                printf (" %d ",this_->midi_code);
                print_integersequenz (this_->next);
        }
}
void protokoll_aktion ( const char name)
void protokoll_aktuelle_relationen ( int  box)

Definiert in Zeile 697 der Datei Execute.cpp.

Benutzt TSYS::breite, exit_laufzeit_protokoll(), init_laufzeit_protokoll(), laufzeit_protokoll(), LONG_TO_CENT, mut_box, TSYS::ton und mutabor_box_type::tonesystem.

Wird benutzt von GetTSString().

{
        tone_system * tonsys = mut_box[box].tonesystem;
        int i,j;
        init_laufzeit_protokoll();

        for (i=0;i<tonsys->breite && tonsys->ton[i]==0;i++);

        /* sucht erstes Intervall != 0 */
        laufzeit_protokoll("Reference [%d]",i);

        for (j=i+1;j<tonsys->breite; j++) {
                if (tonsys->ton[j]!=0) {
                        laufzeit_protokoll("%2d:%.1f cent",j,
                                           LONG_TO_CENT( tonsys->ton[j] -
                                                         tonsys->ton[i] ) );
                } else {
                        laufzeit_protokoll("%2d:%%",j);
                }
        }

        exit_laufzeit_protokoll( );
}
void protokoll_aktuelles_tonsystem ( int  box)

Definiert in Zeile 637 der Datei Execute.cpp.

Benutzt TSYS::anker, TSYS::breite, exit_laufzeit_protokoll(), init_laufzeit_protokoll(), laufzeit_protokoll(), LONG_TO_CENT, LONG_TO_HERTZ, mut_box, TSYS::periode, TSYS::ton, mutabor_box_type::tonesystem und zugriff.

Wird benutzt von GetTSString().

{
        tone_system * tonsys = mut_box[box].tonesystem;
        long freq;
        unsigned char * zugriff = (unsigned char*) & freq;
        int i;
        init_laufzeit_protokoll();
//  laufzeit_protokoll("Tonsystem: (#%d)",box);
        laufzeit_protokoll("Anker= %d",tonsys->anker);
        laufzeit_protokoll("Breite= %d",tonsys->breite);
        laufzeit_protokoll("Periode= %.1f cent",
                           LONG_TO_CENT(tonsys->periode));

        for (i=0;i<tonsys->breite;i++) {
                if ( (freq=tonsys->ton[i])!=0) {
                        laufzeit_protokoll("%2d : %.1f Hz (%.2f)",
                                           i, LONG_TO_HERTZ(tonsys->ton[i]) ,
                                           (zugriff[3]+(((float)zugriff[2])/256.0)) );
                } else {
                        laufzeit_protokoll("%2d : %%",i);
                }
        }

        exit_laufzeit_protokoll( );
}
void protokoll_liegende_frequenzen ( int  box)

Definiert in Zeile 664 der Datei Execute.cpp.

Benutzt bcopy, exit_laufzeit_protokoll(), GET_FREQ, GetChannel(), init_laufzeit_protokoll(), laufzeit_protokoll(), liegende_tasten, liegende_tasten_max, LONG_TO_HERTZ, mut_box, mutabor_box_type::tonesystem und zugriff.

Wird benutzt von GetKeyString().

{
        tone_system * tonsys = mut_box[box].tonesystem;
        int i, imax, lts[64], lt;
        long freq;
        unsigned char * zugriff = (unsigned char*) & freq;
        imax = liegende_tasten_max[box];
        bcopy(liegende_tasten[box], lts, imax*sizeof(int));
        init_laufzeit_protokoll();

        for (i = 0; i < imax; i++) {
                lt = lts[i];

                if ( (freq=GET_FREQ( lt ,tonsys ))!=0) {
#ifndef SHOW_CHANNEL
                        laufzeit_protokoll("%2d : %8.1f Hz (%6.2f)",
                                           lt,
                                           LONG_TO_HERTZ(freq),
                                           (zugriff[3]+(((float)zugriff[2])/256.0)) );
#else
                        laufzeit_protokoll("%2d : %8.1f Hz (%6.2f)[ch: %d]",
                                           lt,
                                           LONG_TO_HERTZ(freq),
                                           (zugriff[3]+(((float)zugriff[2])/256.0)), GetChannel(box, lt));
#endif
                } else {
                        laufzeit_protokoll("%2d : %%",lt);
                }
        }

        exit_laufzeit_protokoll();
}
void protokoll_liegende_relationen ( int  box)

Definiert in Zeile 721 der Datei Execute.cpp.

Benutzt exit_laufzeit_protokoll(), GET_FREQ, init_laufzeit_protokoll(), laufzeit_protokoll(), liegende_tasten, liegende_tasten_max, LONG_TO_CENT, mut_box und mutabor_box_type::tonesystem.

Wird benutzt von GetKeyString().

{
        tone_system * tonsys = mut_box[box].tonesystem;
        int i;
        init_laufzeit_protokoll();
//  laufzeit_protokoll("Liegende Relationen (#%d):",box);

        for (i=0;i<(liegende_tasten_max[box]-1);i++) {
                if ( (GET_FREQ( liegende_tasten[box][i+1] , tonsys )) !=0 ) {
                        laufzeit_protokoll("%.2f cent",
                                           LONG_TO_CENT( GET_FREQ(liegende_tasten[box][i+1], tonsys ) -
                                                         GET_FREQ(liegende_tasten[box][i], tonsys) ));
                } else {
                        laufzeit_protokoll("  %%");
                }
        }

        exit_laufzeit_protokoll( );
}
void scanner_protokoll ( int  zeichen)
void setze_nummer_von_abstand_und_zentrum ( void  )

Definiert in Zeile 474 der Datei Parser.cpp.

Benutzt anweisung::aktion, aktions_liste::aktion_aufruf, aktion_aufruf, aktions_liste::aktions_typ, logik::anweisungsliste, argument_liste::argument, argument::argument_typ, fatal_error(), mutC_STR, logik::name, argument_liste::next, anweisung::next, logik::next, argument::parameter, parameter, argument::u, aktions_liste::u und zahl.

Wird benutzt von mutabor_programm_einlesen().

{

        struct logik * lauf;

        for (lauf=list_of_logiken; lauf; lauf=lauf->next) {

                struct anweisung * lauf_anw;

                for (lauf_anw=lauf->anweisungsliste; lauf_anw; lauf_anw=lauf_anw->next) {
                        if (lauf_anw->aktion->aktions_typ == aktion_aufruf) {

                                struct argument_liste * lauf_arg;

                                for (lauf_arg=lauf_anw->aktion->u.aktion_aufruf.argument_liste;
                                                lauf_arg;
                                                lauf_arg=lauf_arg->next) {
                                        switch (lauf_arg->argument.argument_typ) {

                                        case zahl:
                                                /* OK */
                                                break;

                                        case parameter:
                                                if ( ! strcmp (lauf_arg->argument.u.parameter.parameter_name,
                                                                "ABSTAND")) {
                                                        lauf_arg->argument.u.parameter.parameter_nummer
                                                        = 0;
                                                } else
                                                        if ( ! strcmp (lauf_arg->argument.u.parameter.parameter_name,
                                                                        "DISTANCE")) {
                                                                lauf_arg->argument.u.parameter.parameter_nummer
                                                                = 0;
                                                        } else
                                                                if ( ! strcmp (lauf_arg->argument.u.parameter.parameter_name,
                                                                                "ZENTRUM")) {
                                                                        lauf_arg->argument.u.parameter.parameter_nummer
                                                                        = 1;
                                                                } else
                                                                        if ( ! strcmp (lauf_arg->argument.u.parameter.parameter_name,
                                                                                        "CENTER")) {
                                                                                lauf_arg->argument.u.parameter.parameter_nummer
                                                                                = 1;
                                                                        } else
                                                                                fatal_error (39,
                                                                                             mutC_STR(lauf_arg->argument.u.parameter.parameter_name),
                                                                                             mutC_STR(lauf_anw->aktion->u.aktion_aufruf.name),
                                                                                             mutC_STR(lauf->name));

                                                break;

                                        default:
                                                fatal_error (0, _T(__FILE__), __LINE__);

                                                break;
                                        }
                                }
                        }
                }
        }
}
void show_line_number ( int  n)

Definiert in Zeile 246 der Datei GrafKern.cpp.

Benutzt CompDiaLine und DEBUGLOG2.

Wird benutzt von yylex().

{
#ifdef WX
#ifdef DEBUG
        std::cerr << "show_line_number(" << n << ") in WX mode " << std::endl;
#endif

        if ( !CompDiaLine ) return;

#ifdef DEBUG
        std::cerr << "setting number ";

#endif
        wxString s = _T("");

        if ( n != -1 ) s << n;

        DEBUGLOG2(other,_T("s = %s"), s.c_str());

        CompDiaLine->SetLabel(s);

        CompDiaLine->Refresh();

#else
#ifdef DEBUG
        std::cerr << "show_line_number(" << n << ") in non-WX mode " << std::endl;

#endif
#ifdef MUTWIN
        if ( !CompDiaLine ) return;

        char s[20] = "---      ";

        if ( n != -1 ) sprintf(s, "%d       ", n);

        ::SetWindowText(CompDiaLine, s);

#endif
#endif
}
static void test_zyklen ( int  startknoten) [static]

Definiert in Zeile 2271 der Datei Parser.cpp.

Benutzt adjazent, anzahl_toene, fatal_error() und mutC_STR.

Wird benutzt von berechne_toene_absolut().

{
        int i;

        for (i=0; i<anzahl_toene; i++) {
                if (adjazent (startknoten, i)) {
                        if (visited [i]) {
                                fatal_error(65,
                                            mutC_STR(toene [startknoten]->name),
                                            mutC_STR(toene [i]->name));
                        }

                        visited [i] = 1;

                        test_zyklen (i);
                        visited [i] = 0;
                }
        }
}
static int test_zyklen_nummer ( const char name) [static]

Definiert in Zeile 2720 der Datei Parser.cpp.

Benutzt anzahl_umstimmungen_und_logiken, fatal_error(), mutC_STR, typ_logik, typ_umstimmung, umst_oder_logik::u und umst_oder_logik::umst_oder_logik_typ.

Wird benutzt von check_konsistenz().

{
        int i;

        for (i=0; i<anzahl_umstimmungen_und_logiken; i++)
                if ( ((zyklen_feld[i].umst_oder_logik_typ == typ_umstimmung) &&
                      (! strcmp (name, zyklen_feld[i].u.umstimmung->name)))
                     ||
                     ((zyklen_feld[i].umst_oder_logik_typ == typ_logik) &&
                      (! strcmp (name, zyklen_feld[i].u.logik->name)))
                   ) return i;

        fatal_error(29,mutC_STR(name)); /* Umst.n.dekl. */

        return 0; /* to prevent warnings */
}
int tiefste_taste ( int  box)

Definiert in Zeile 430 der Datei Execute.cpp.

Benutzt liegende_tasten und liegende_tasten_max.

Wird benutzt von HarmonyAnalysis().

{
        int i, min = 9999;

        for (i = 0; i < liegende_tasten_max[box]; i++)
                if ( liegende_tasten[box][i] < min )
                        min = liegende_tasten[box][i];

        return min;
}
int ton_list_laenge ( struct ton list)

Definiert in Zeile 88 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von berechne_toene_absolut(), calc_declaration_numbers(), expandiere_tonsystem() und mutabor_programm_einlesen().

{
        if (list) return 1 + ton_list_laenge (list -> next);

        return 0;
}
static int ton_nummer ( const char name) [static]

Definiert in Zeile 2259 der Datei Parser.cpp.

Benutzt anzahl_toene, fatal_error() und mutC_STR.

Wird benutzt von berechne_toene_absolut() und berechne_ton_endgueltig().

{
        int i;

        for (i=0; i<anzahl_toene; i++)
                if ( ! strcmp (name, toene[i]->name)) return i;

        fatal_error(27, mutC_STR(name)); /* Ton n.dekl. */

        return 0; /* to prevent warnings */
}
int tonsystem_list_laenge ( struct tonsystem list)

Definiert in Zeile 96 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von calc_declaration_numbers().

{
        if (list) return 1 + tonsystem_list_laenge (list -> next);

        return 0;
}
static void u_test_zyklen ( int  startknoten) [static]
int umstimmungs_list_laenge ( struct umstimmung list)

Definiert in Zeile 103 der Datei Parser.cpp.

Benutzt ton::next.

Wird benutzt von calc_declaration_numbers() und check_konsistenz().

{
        if (list) return 1 + umstimmungs_list_laenge (list -> next);

        return 0;
}
void update_keyboard_liste ( int  instr)
void update_pattern ( int  instr)

Definiert in Zeile 370 der Datei Execute.cpp.

Benutzt TSYS::breite, GET_INDEX, liegende_tasten, liegende_tasten_max, mut_box, mutabor_box_type::pattern, mutabor_box_type::tonesystem und PTRN::tonigkeit.

Wird benutzt von execute_aktion().

{
        PATTERNN * temp_pattern = &(mut_box[box].pattern);
        tone_system * tonsys = mut_box[box].tonesystem;
        int i;

        for (i=0;i<tonsys->breite;i++) temp_pattern->tonigkeit[i]=0;

        for (i=0;i<liegende_tasten_max[box];i++)
                (temp_pattern->tonigkeit[GET_INDEX( liegende_tasten[box][i]
                                                    ,tonsys )])++;
}
void vervollstaendige_logik ( void  )

Definiert in Zeile 2149 der Datei Parser.cpp.

Benutzt logik::anweisungsliste, get_last_anweisungs_liste() und logik::next.

Wird benutzt von yyparse().

{

        struct logik * lauf;

        for (lauf = list_of_logiken; lauf -> next; lauf = lauf->next) {}

        lauf -> anweisungsliste     = get_last_anweisungs_liste ();
}
void write_kompletten_code ( FILE *  zieldatei)
void * xalloca ( size_t  size)

Definiert in Zeile 78 der Datei Hilfs.cpp.

Benutzt DEBUGLOG2, fatal_error() und MUT_ERR_MALLOC_FAILED.

Wird benutzt von berechne_intervalle_absolut(), berechne_toene_absolut() und check_konsistenz().

{
#ifdef ACS_VERSION
        void * help = Ax_malloc (size);
#else
        void * help = malloc (size);
#endif

        if (help == NULL) {
                DEBUGLOG2(other,_T("malloc(%d) failed."),size);
                fatal_error (MUT_ERR_MALLOC_FAILED);
                return NULL;
        }

        return help;
}
void * xcalloc ( size_t  anzahl,
size_t  size 
)

Definiert in Zeile 239 der Datei Hilfs.cpp.

Benutzt DEBUGLOG2, fatal_error() und xmalloc().

Wird benutzt von create_midi_scan_liste() und mutabor_tabellen_generator().

{
        void * help = xmalloc (anzahl * size);

        if (help) {
                memset (help, 0, anzahl * size);
                return help;
        } else {
                DEBUGLOG2(other,_T("xmalloc(%d * %d) failed"),anzahl,size);
                fatal_error (4);
                return NULL;
        }
}
void xde_alloca ( void *  pointer)

Definiert in Zeile 95 der Datei Hilfs.cpp.

Wird benutzt von berechne_intervalle_absolut(), berechne_toene_absolut() und check_konsistenz().

{
#ifdef ACS_VERSION
        Ax_ifree (pointer);
#else
        free (pointer);
#endif
}
void xfree ( void *  pointer)

Definiert in Zeile 131 der Datei Hilfs.cpp.

Wird benutzt von expandiere_umstimmung() und yylex().

{
        /* Nichts, wenn eigene Speicherverwaltung */

        /*   free (pointer); */
}
void * xmalloc ( size_t  size)

Definiert in Zeile 140 der Datei Hilfs.cpp.

Benutzt heap_element::anzahl_belegt, DEBUGLOG2, fatal_error(), HEAP_PORTION_SYNTAX, heap_element::inhalt, heap_element::next, OFFSET und syntax_heap.

Wird benutzt von allgemeine_initialisierungen(), expand_case_liste(), expand_pattern(), expand_tonliste(), expandiere_logik(), expandiere_midi(), expandiere_tonsystem(), expandiere_umstimmung(), gen_parameter_liste(), get_ausloeser_default(), get_ausloeser_harmonie(), get_ausloeser_harmonie_form(), get_ausloeser_midi_in(), get_ausloeser_taste(), get_cache_konstante(), get_instrument_dekl(), get_new_aktion_aufruf_element(), get_new_aktion_midi_out_element(), get_new_anweisung(), get_new_faktor_anteil(), get_new_harmonie(), get_new_integer_in_integersequenz(), get_new_intervall(), get_new_intervall_komplex(), get_new_logik(), get_new_name_in_argument_list(), get_new_name_in_parameterlist(), get_new_number_in_argument_list(), get_new_taste(), get_new_ton_absolut(), get_new_ton_in_tonsystem(), get_new_ton_komplex_negative(), get_new_ton_komplex_positive(), get_new_tonsystem(), get_new_tonsystem_negative(), get_new_umstimm_expression(), get_new_umstimm_expression_negative(), get_new_umstimm_expression_positive(), get_umstimmungs_case_default_element(), get_umstimmungs_case_zahl_element(), init_umstimmung(), insert_in_globale_liste(), insert_in_lokale_liste(), xcalloc(), xrealloc() und yylex().

{
        if (size + OFFSET > HEAP_PORTION_SYNTAX) {
                DEBUGLOG2(other,_T("Error: %d + %d > %d"),size,OFFSET, HEAP_PORTION_SYNTAX);
                fatal_error (4);
                return NULL;
        }

        if (syntax_heap == NULL) {
#ifdef ACS_VERSION

                syntax_heap = Ax_malloc (sizeof (struct heap_element));

                memset(syntax_heap,0,sizeof (struct heap_element));
#else

                syntax_heap = (heap_element*) calloc (1,sizeof (struct heap_element));
#endif

                if (syntax_heap == NULL) {
                        DEBUGLOG2(other,_T("calloc(1,%d) failed"),

                                  sizeof (struct heap_element));
                        fatal_error (4);
                        return NULL;
                }

                heap_to_use_syntax = syntax_heap;

                heap_to_use_syntax -> anzahl_belegt = 0;
                heap_to_use_syntax -> next = NULL;
        }

        /**** Jetzt ist zumindest ein Block da ******/

        if (heap_to_use_syntax -> anzahl_belegt + size + OFFSET
                        < HEAP_PORTION_SYNTAX) {
                void * help = & heap_to_use_syntax ->
                              inhalt [ heap_to_use_syntax -> anzahl_belegt + OFFSET ] ;
                heap_to_use_syntax -> anzahl_belegt += size + OFFSET;
                ((size_t *)help) [ - 1 ] = size;
                return help;
        } else {
#ifdef ACS_VERSION

                heap_to_use_syntax -> next = Ax_malloc (sizeof (struct heap_element));

                memset(heap_to_use_syntax -> next,0,sizeof (struct heap_element));
#else

                heap_to_use_syntax -> next = (heap_element*) calloc (1,sizeof (struct heap_element));
#endif

                if (heap_to_use_syntax -> next == NULL) {
                        DEBUGLOG2(other,_T("heap_to_use_syntax -> nex == NULL"));
                        fatal_error (4);
                        return NULL;
                }

                heap_to_use_syntax = heap_to_use_syntax -> next;

                heap_to_use_syntax -> next = NULL;
                heap_to_use_syntax -> anzahl_belegt = size + OFFSET;
                *(size_t *)&(heap_to_use_syntax -> inhalt [ 0 ]) = size;
                return & heap_to_use_syntax -> inhalt [ OFFSET ] ;
        }
}
void * xrealloc ( void *  block,
size_t  newsize 
)

Definiert in Zeile 208 der Datei Hilfs.cpp.

Benutzt heap_element::anzahl_belegt, DEBUGLOG2, fatal_error(), HEAP_PORTION_SYNTAX, heap_element::inhalt und xmalloc().

Wird benutzt von yylex().

{
        if ( ((size_t *)block) [ - 1 ] + (char*)block
                        == & heap_to_use_syntax ->
                        inhalt [heap_to_use_syntax -> anzahl_belegt]
                        &&
                        (char*)block + newsize <
                        &(heap_to_use_syntax -> inhalt [ HEAP_PORTION_SYNTAX ])) {

                /* Dann war block der vorherige xmalloc und es passt noch rein */

                heap_to_use_syntax -> anzahl_belegt +=
                        newsize - ((size_t *)block) [ - 1 ] ;
                ((size_t *)block) [ - 1 ] = newsize;
                return block;
        } else {
                void * help = xmalloc (newsize);

                if (help) {
                        memmove (help, block, newsize);
                        return help;
                } else {
                        DEBUGLOG2(other,_T("xmalloc (%d) failed"),newsize);
                        fatal_error (4);
                        return NULL;
                }
        }
}
void * ycalloc ( size_t  anzahl,
size_t  size 
)

Definiert in Zeile 338 der Datei Hilfs.cpp.

Benutzt ymalloc().

{
        void * help = ymalloc ( anzahl * size );
        memset (help, 0, anzahl * size);
        return help;
}
void yfree ( void *  pointer)

Definiert in Zeile 297 der Datei Hilfs.cpp.

{
        /* nix */
}
void * ymalloc ( size_t  size)

Definiert in Zeile 304 der Datei Hilfs.cpp.

Benutzt DEBUGLOG2, fatal_error(), laufzeit_heap, mini_heap::next und mini_heap::pointer.

Wird benutzt von ycalloc() und yrealloc().

{
#ifdef ACS_VERSION
        void * help1 = Ax_malloc (size);
#else
        void * help1 = malloc (size);
#endif

        struct mini_heap * help2 = (mini_heap*) malloc (sizeof (struct mini_heap));

        if (help1 == NULL || help2 == NULL) {
                DEBUGLOG2(other,_T("help1 == %x(%d) ; help2 == %x(%d)"),

                          help1,size,help2,sizeof(struct mini_heap));
                fatal_error (4);
                return NULL;
        }

        help2 -> pointer = help1;

        help2 -> next = laufzeit_heap;
        laufzeit_heap = help2;

        return help1;
}
void * yrealloc ( void *  block,
size_t  newsize 
)

Definiert in Zeile 330 der Datei Hilfs.cpp.

Benutzt ymalloc().

{
        void * help = ymalloc (newsize);
        memmove (help, block, newsize);
        return help;
}
void yyerror ( const char )

Definiert in Zeile 3148 der Datei mut.cpp.

Wird benutzt von yyparse().

                            {

/* ignore it ! */

} /* yyerror */
int yylex ( void  )
Noch zu erledigen:
check whether this function is necessary for any system but windows
Noch zu erledigen:
check whether this function is necessary for any system but windows

Definiert in Zeile 2919 der Datei mut.cpp.

Benutzt ANSONSTEN, anzahl_eingelesene_zeichen, DEBUGLOG2, F_NUMBER, YYSTYPE::f_value, fatal_error(), YYLTYPE::first_line, FORM, HARMONIE, IDENTIFIER, YYSTYPE::identifier, INSTRUMENT, INTEGER, YYSTYPE::integer, intern_fgetc(), intern_ungetc(), INTERVALL, LINE_DRAW_QUANTUM, LOGIK, MAX_IDENTIFIER_LEN, MIDI_IN, MIDI_OUT, quelldatei, show_line_number(), TASTE, TON, ton_system, TONSYSTEM, UMSTIMMUNG, WURZEL, xfree(), xmalloc(), xrealloc() und zahl.

{
    int c;

start_lex:

    /* Ignore whitespace, get first nonwhitespace character */
    while ( anzahl_eingelesene_zeichen ++,

            isspace(c = toupper( intern_fgetc(quelldatei) ))) {
        DEBUGLOG2(other,_T("char %x"),c);

      if (c == '\n') {
        DEBUGLOG2(other,_T("New line"));
        if (!(yylloc.first_line ++ % LINE_DRAW_QUANTUM)) 
          show_line_number(yylloc.first_line);
      }
    }
    
    if (c == '"') {
       while (anzahl_eingelesene_zeichen ++,
       
              (c=intern_fgetc(quelldatei)) != '"' && c != EOF )
                    if (c == '\n') yylloc.first_line ++;
        
       goto start_lex;
    }

    if (c == EOF) {
      show_line_number(yylloc.first_line);
        return 0;
    }

        
    /* char starts a number => parse the number. */
    if (isdigit(c)) {

#if 1
        double zahl = 0.0;
        while (isdigit(c)) {
            zahl *= 10;
            zahl += ( c - '0' );
            anzahl_eingelesene_zeichen ++;
            c = intern_fgetc (quelldatei);
        }
        if (c == '.') {    /* dann nachkommastellen */
            double faktor = 1.0;
            while (anzahl_eingelesene_zeichen ++,
                   isdigit (c = intern_fgetc (quelldatei))) {
                faktor /= 10;
                zahl += faktor * ( c - '0' );
            }
            intern_ungetc (c, quelldatei);
            anzahl_eingelesene_zeichen --;
            yylval.f_value = zahl;
            return F_NUMBER;
        }
        else {
            intern_ungetc (c, quelldatei);
            anzahl_eingelesene_zeichen --;
            
            if (zahl > INT_MAX) {
                yylval.f_value = zahl;
                return F_NUMBER;
            }
            else {
                yylval.integer = (int)zahl;
                return INTEGER;
            }
        }
#else

        intern_ungetc (c, quelldatei);
        anzahl_eingelesene_zeichen --;
        fscanf (quelldatei, "%lf", &yylval.f_value);

#endif

/*
 printf("f_number:%lf:\n", yylval.f_value); 
*/
      
    }
    
    /* # starts a HEX-number => parse the number. */
    if (c == '#') {
        int help;
        if (fscanf (quelldatei, "%x", &help) == 0) {
            fatal_error (78, yylloc.first_line + 1);
            exit (1);
        }
        yylval.integer = help;

/* printf("f_number:%lf:\n", yylval.f_value); */

        return INTEGER;
    }
    
    /* Test auf reserved word oder einen Identifier */
    if (isalpha (c) || (c == '_') || (c == '\'') ) {

static struct { 
    const char *word;
    int token;
} reserved_words [] = {
/* German keywords : */
{ "INTERVALL"  , INTERVALL  },
{ "WURZEL"     , WURZEL     },
{ "TON"        , TON        },
{ "TONSYSTEM"  , TONSYSTEM  },
{ "UMSTIMMUNG" , UMSTIMMUNG },
{ "HARMONIE"   , HARMONIE   },
{ "LOGIK"      , LOGIK      },
{ "FORM"       , FORM       },
{ "MIDIKANAL"  , INSTRUMENT },
{ "TASTE"      , TASTE      },
{ "MIDIIN"     , MIDI_IN    },
{ "MIDIOUT"    , MIDI_OUT   },
{ "ANSONSTEN"  , ANSONSTEN  },
/* English keywords : */
{ "INTERVAL"   , INTERVALL  },
{ "ROOT"       , WURZEL     },
{ "TONE"       , TON        },
{ "TONESYSTEM" , TONSYSTEM  },
{ "RETUNING"   , UMSTIMMUNG },
{ "PATTERN"    , HARMONIE   },
{ "LOGIC"      , LOGIK      },
{ "SHIFTED"    , FORM       },
{ "MIDICHANNEL", INSTRUMENT },
{ "KEY"        , TASTE      },
{ "ELSE"       , ANSONSTEN  },
{ NULL         , 0          }
};


#if 0
        char *symbuffer = xmalloc ((size_t)(MAX_IDENTIFIER_LEN + 1));
        int i=0;
        
        do {
            if (c == '\'') c = 'i';
            symbuffer[i++] = c;
            c = toupper(intern_fgetc (quelldatei));
        } while (c != EOF                && 
                 i < MAX_IDENTIFIER_LEN  && 
                 (isalnum (c) || (c == '_') || (c == '\'') ) );
        
        intern_ungetc (c, quelldatei);
        symbuffer[i] = '\0';
#else
        int i = 0;
        int max_identifier_len = 10;
        char *symbuffer = (char*) xmalloc ((size_t) max_identifier_len);

        do {
            if (c == '\'') c = 'i';

            if ( i + 1 == max_identifier_len ) {
                char * help = (char*) xrealloc (symbuffer, (size_t) (max_identifier_len += 10));
                memmove (help, symbuffer, (size_t) max_identifier_len);
                symbuffer = help;
            }

            symbuffer[i++] = c;
            DEBUGLOG2(other,_T("character #%d = %x"),i,c);
            c = intern_fgetc(quelldatei);
            DEBUGLOG2(other,_T("character #%d = %x"),i,c);
            c = toupper(c);
            DEBUGLOG2(other,_T("character #%d = %x"),i,c);
            anzahl_eingelesene_zeichen ++;

        } while ((c != EOF) && 
                 (isalnum (c) || (c == '_') || (c == '\'') ) );
        
        intern_ungetc (c, quelldatei);
        anzahl_eingelesene_zeichen --;
        symbuffer[i] = '\0';

#endif

/* printf("symbuffer:%s:\n", symbuffer); */
        
        for (i=0; reserved_words[i].word; i++) {
            if ( ! strcmp (symbuffer, reserved_words[i].word)) {
                xfree (symbuffer);
                return reserved_words[i].token;
            }
        }
        
        yylval.identifier = symbuffer;
        return IDENTIFIER;
    }
    
    /* Any other character is a token by itself */
    switch (c) {
        case '+':
        case '-':
        case '*':
        case '/':
        case '[':
        case ']':
        case ':':
        case '=':
        case '(':
        case ')':
        case ',':
        case '~':
        case '@':
        case '<':
        case '>':
        case '{':
        case '}':
        case ';':
               return c;
    }

    fatal_error(2,c,yylloc.first_line + 1);
    
    return 0;  /* um Compilerwarnungen zu vermeiden */

    
} /* yylex */
int yyparse ( )

Definiert in Zeile 1517 der Datei mut.cpp.

Benutzt alloca, bcopy, eintrage_parameterliste_in_umstimmung(), YYSTYPE::f_value, fatal_error(), FEHLERZEILE, YYLTYPE::first_column, YYLTYPE::first_line, get_ausloeser_default(), get_ausloeser_harmonie(), get_ausloeser_harmonie_form(), get_ausloeser_midi_in(), get_ausloeser_taste(), get_harmoniebezeichner(), get_instrument_dekl(), get_new_aktion_aufruf_element(), get_new_aktion_midi_out_element(), get_new_anweisung(), get_new_faktor_anteil(), get_new_harmonie(), get_new_integer_in_integersequenz(), get_new_intervall(), get_new_intervall_komplex(), get_new_logik(), get_new_name_in_argument_list(), get_new_name_in_parameterlist(), get_new_number_in_argument_list(), get_new_taste(), get_new_ton_absolut(), get_new_ton_in_tonsystem(), get_new_ton_komplex_negative(), get_new_ton_komplex_positive(), get_new_tonsystem(), get_new_tonsystem_negative(), get_new_umstimm_expression(), get_new_umstimm_expression_negative(), get_new_umstimm_expression_positive(), get_new_umstimmung(), get_umstimmung_breite_abs(), get_umstimmung_breite_rel(), get_umstimmung_midi_out(), get_umstimmung_taste_abs(), get_umstimmung_taste_rel(), get_umstimmung_tonhoehe_veraendert(), get_umstimmung_umstimm_case_parameter(), get_umstimmung_umstimm_case_zahl(), get_umstimmung_umstimmungs_bund(), get_umstimmung_wiederholung_abs(), get_umstimmung_wiederholung_abs_negative(), get_umstimmung_wiederholung_rel_negative(), get_umstimmung_wiederholung_rel_positive(), get_umstimmungs_case_default_element(), get_umstimmungs_case_zahl_element(), init_aktions_liste(), init_anweisungs_liste(), init_argument_liste(), init_ausloeser(), init_integersequenz(), init_komplex_ton_list(), init_parameter_liste(), init_tastenliste(), init_ton_liste(), init_umstimm_expression_list(), init_umstimmung(), init_umstimmungs_case_liste(), YYSTYPE::integer, YYLTYPE::last_column, YYLTYPE::last_line, list_of_instrumente, mutC_STR, parameter, vervollstaendige_logik(), YY_, YY_REDUCE_PRINT, YY_STACK_PRINT, YY_SYMBOL_PRINT, YYABORT, YYACCEPT, yychar, yycheck, yydefact, yydefgoto, yydestruct(), YYDPRINTF, YYEMPTY, YYEOF, yyerror(), YYFINAL, YYFLAG, YYID, YYINITDEPTH, YYLAST, YYLEX, yylloc, YYLLOC_DEFAULT, yylval, YYMAXDEPTH, YYMAXLIMIT, yynerrs, YYNTBASE, YYNTOKENS, yypact, YYPACT_NINF, yypgoto, YYPOPSTACK, yyr1, yyr2, yyrline, YYSIZE_T, YYSTACK_ALLOC, YYSTACK_ALLOC_MAXIMUM, YYSTACK_BYTES, YYSTACK_FREE, YYSTACK_RELOCATE, yytable, YYTABLE_NINF, YYTERROR, yytname, YYTRANSLATE und zahl.

Wird benutzt von mutabor_programm_einlesen().

{
  
  int yystate;
  int yyn;
  int yyresult;
  /* Number of tokens to shift before error messages enabled.  */
  int yyerrstatus;
  /* Look-ahead token as an internal (translated) token number.  */
  int yytoken = 0;
#if YYERROR_VERBOSE
  /* Buffer for error messages, and its allocated size.  */
  char yymsgbuf[128];
  char *yymsg = yymsgbuf;
  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
#endif

  /* Three stacks and their tools:
     `yyss': related to states,
     `yyvs': related to semantic values,
     `yyls': related to locations.

     Refer to the stacks thru separate pointers, to allow yyoverflow
     to reallocate them elsewhere.  */

  /* The state stack.  */
  yytype_int16 yyssa[YYINITDEPTH];
  yytype_int16 *yyss = yyssa;
  yytype_int16 *yyssp;

  /* The semantic value stack.  */
  YYSTYPE yyvsa[YYINITDEPTH];
  YYSTYPE *yyvs = yyvsa;
  YYSTYPE *yyvsp;

  /* The location stack.  */
  YYLTYPE yylsa[YYINITDEPTH];
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;
  /* The locations where the error started and ended.  */
  YYLTYPE yyerror_range[2];

#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))

  YYSIZE_T yystacksize = YYINITDEPTH;

  /* The variables used to return semantic value and location from the
     action routines.  */
  YYSTYPE yyval;
  YYLTYPE yyloc;

  /* The number of symbols on the RHS of the reduced rule.
     Keep to zero when no symbol should be popped.  */
  int yylen = 0;

  YYDPRINTF ((stderr, "Starting parse\n"));

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY;             /* Cause a token to be read.  */

  /* Initialize stack pointers.
     Waste one element of value and location stack
     so that they stay on the same level as the state stack.
     The wasted elements are never initialized.  */

  yyssp = yyss;
  yyvsp = yyvs;
  yylsp = yyls;
#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
  /* Initialize the default location before parsing starts.  */
  yylloc.first_line   = yylloc.last_line   = 1;
  yylloc.first_column = yylloc.last_column = 0;
#endif

  goto yysetstate;

/*------------------------------------------------------------.
| yynewstate -- Push a new state, which is found in yystate.  |
`------------------------------------------------------------*/
 yynewstate:
  /* In all cases, when you get here, the value and location stacks
     have just been pushed.  So pushing a state here evens the stacks.  */
  yyssp++;

 yysetstate:
  *yyssp = yystate;

  if (yyss + yystacksize - 1 <= yyssp)
    {
      /* Get the current used size of the three stacks, in elements.  */
      YYSIZE_T yysize = yyssp - yyss + 1;

#ifdef yyoverflow
      {
        /* Give user a chance to reallocate the stack.  Use copies of
           these so that the &'s don't force the real ones into
           memory.  */
        YYSTYPE *yyvs1 = yyvs;
        yytype_int16 *yyss1 = yyss;
        YYLTYPE *yyls1 = yyls;

        /* Each stack pointer address is followed by the size of the
           data in use in that stack, in bytes.  This used to be a
           conditional around just the two extra args, but that might
           be undefined if yyoverflow is a macro.  */
        yyoverflow (YY_("memory exhausted"),
                    &yyss1, yysize * sizeof (*yyssp),
                    &yyvs1, yysize * sizeof (*yyvsp),
                    &yyls1, yysize * sizeof (*yylsp),
                    &yystacksize);
        yyls = yyls1;
        yyss = yyss1;
        yyvs = yyvs1;
      }
#else /* no yyoverflow */
# ifndef YYSTACK_RELOCATE
      goto yyexhaustedlab;
# else
      /* Extend the stack our own way.  */
      if (YYMAXDEPTH <= yystacksize)
        goto yyexhaustedlab;
      yystacksize *= 2;
      if (YYMAXDEPTH < yystacksize)
        yystacksize = YYMAXDEPTH;

      {
        yytype_int16 *yyss1 = yyss;
        union yyalloc *yyptr =
          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
        if (! yyptr)
          goto yyexhaustedlab;
        YYSTACK_RELOCATE (yyss);
        YYSTACK_RELOCATE (yyvs);
        YYSTACK_RELOCATE (yyls);
#  undef YYSTACK_RELOCATE
        if (yyss1 != yyssa)
          YYSTACK_FREE (yyss1);
      }
# endif
#endif /* no yyoverflow */

      yyssp = yyss + yysize - 1;
      yyvsp = yyvs + yysize - 1;
      yylsp = yyls + yysize - 1;

      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
                  (unsigned long int) yystacksize));

      if (yyss + yystacksize - 1 <= yyssp)
        YYABORT;
    }

  YYDPRINTF ((stderr, "Entering state %d\n", yystate));

  goto yybackup;

/*-----------.
| yybackup.  |
`-----------*/
yybackup:

  /* Do appropriate processing given the current state.  Read a
     look-ahead token if we need one and don't already have one.  */

  /* First try to decide what to do without reference to look-ahead token.  */
  yyn = yypact[yystate];
  if (yyn == YYPACT_NINF)
    goto yydefault;

  /* Not known => get a look-ahead token if don't already have one.  */

  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
  if (yychar == YYEMPTY)
    {
      YYDPRINTF ((stderr, "Reading a token: "));
      yychar = YYLEX;
    }

  if (yychar <= YYEOF)
    {
      yychar = yytoken = YYEOF;
      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }
  else
    {
      yytoken = YYTRANSLATE (yychar);
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
    }

  /* If the proper action on seeing token YYTOKEN is to reduce or to
     detect an error, take that action.  */
  yyn += yytoken;
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
    goto yydefault;
  yyn = yytable[yyn];
  if (yyn <= 0)
    {
      if (yyn == 0 || yyn == YYTABLE_NINF)
        goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Count tokens shifted since error; after three, turn off error
     status.  */
  if (yyerrstatus)
    yyerrstatus--;

  /* Shift the look-ahead token.  */
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);

  /* Discard the shifted token unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  yystate = yyn;
  *++yyvsp = yylval;
  *++yylsp = yylloc;
  goto yynewstate;


/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state.  |
`-----------------------------------------------------------*/
yydefault:
  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;
  goto yyreduce;


/*-----------------------------.
| yyreduce -- Do a reduction.  |
`-----------------------------*/
yyreduce:
  /* yyn is the number of a rule to reduce with.  */
  yylen = yyr2[yyn];

  /* If YYLEN is nonzero, implement the default value of the action:
     `$$ = $1'.

     Otherwise, the following line sets YYVAL to garbage.
     This behavior is undocumented and Bison
     users should not rely upon it.  Assigning to YYVAL
     unconditionally makes the parser a bit smaller, and it avoids a
     GCC warning that YYVAL may be used uninitialized.  */
  yyval = yyvsp[1-yylen];

  /* Default location.  */
  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
  YY_REDUCE_PRINT (yyn);
  switch (yyn)
    {
        case 10:
#line 106 "../mu32/mut.y"
    {  fatal_error(1,FEHLERZEILE); }
    break;

  case 14:
#line 118 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 16:
#line 123 "../mu32/mut.y"
    { if ( fabs((yyvsp[(5) - (5)].f_value)) > 0.001 )
                         get_new_intervall ((yyvsp[(1) - (5)].identifier), (yyvsp[(3) - (5)].f_value) / (yyvsp[(5) - (5)].f_value));
                      else
                        fatal_error (46, mutC_STR((yyvsp[(1) - (5)].identifier)) ); }
    break;

  case 17:
#line 129 "../mu32/mut.y"
    { if ( fabs ((yyvsp[(3) - (5)].f_value)) > 0.001 )
                          get_new_intervall ((yyvsp[(1) - (5)].identifier), pow ((yyvsp[(5) - (5)].f_value), 1 / (yyvsp[(3) - (5)].f_value)));
                      else
                        fatal_error (46, mutC_STR((yyvsp[(1) - (5)].identifier))); }
    break;

  case 18:
#line 138 "../mu32/mut.y"
    { get_new_intervall_komplex ((yyvsp[(1) - (3)].identifier)); }
    break;

  case 19:
#line 139 "../mu32/mut.y"
    { fatal_error(71, mutC_STR((yyvsp[(1) - (3)].identifier))); }
    break;

  case 20:
#line 140 "../mu32/mut.y"
    { fatal_error(70,"'='",FEHLERZEILE); }
    break;

  case 24:
#line 152 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 26:
#line 157 "../mu32/mut.y"
    { get_new_ton_absolut ((yyvsp[(1) - (3)].identifier), (yyvsp[(3) - (3)].f_value)); }
    break;

  case 27:
#line 161 "../mu32/mut.y"
    { get_new_ton_komplex_negative ((yyvsp[(1) - (5)].identifier), (yyvsp[(3) - (5)].identifier)); }
    break;

  case 28:
#line 165 "../mu32/mut.y"
    { get_new_ton_komplex_positive ((yyvsp[(1) - (3)].identifier), (yyvsp[(3) - (3)].identifier)); }
    break;

  case 29:
#line 169 "../mu32/mut.y"
    { get_new_ton_komplex_positive ((yyvsp[(1) - (5)].identifier), (yyvsp[(3) - (5)].identifier)); }
    break;

  case 30:
#line 171 "../mu32/mut.y"
    { fatal_error( 72, mutC_STR((yyvsp[(1) - (3)].identifier)) ); }
    break;

  case 34:
#line 185 "../mu32/mut.y"
    { get_new_faktor_anteil ( (double) 1, (yyvsp[(2) - (2)].identifier)); }
    break;

  case 35:
#line 188 "../mu32/mut.y"
    { get_new_faktor_anteil ( (double) -1, (yyvsp[(2) - (2)].identifier)); }
    break;

  case 36:
#line 191 "../mu32/mut.y"
    { get_new_faktor_anteil ( (yyvsp[(2) - (3)].f_value), (yyvsp[(3) - (3)].identifier)); }
    break;

  case 37:
#line 194 "../mu32/mut.y"
    { get_new_faktor_anteil ( -((yyvsp[(2) - (3)].f_value)), (yyvsp[(3) - (3)].identifier)); }
    break;

  case 38:
#line 197 "../mu32/mut.y"
    { if ( fabs((yyvsp[(3) - (4)].f_value)) > 0.001 )
                       get_new_faktor_anteil ( (double) 1 / ((yyvsp[(3) - (4)].f_value)), (yyvsp[(4) - (4)].identifier));
                     else
                       fatal_error(53, FEHLERZEILE);  }
    break;

  case 39:
#line 203 "../mu32/mut.y"
    { if ( fabs((yyvsp[(3) - (4)].f_value)) > 0.001 )
                       get_new_faktor_anteil ( (double) -1 / ((yyvsp[(3) - (4)].f_value)), (yyvsp[(4) - (4)].identifier));
                     else
                       fatal_error(53, FEHLERZEILE);  }
    break;

  case 40:
#line 209 "../mu32/mut.y"
    { if ( fabs((yyvsp[(4) - (5)].f_value)) > 0.001 )
                       get_new_faktor_anteil ( ((yyvsp[(2) - (5)].f_value)) / ((yyvsp[(4) - (5)].f_value)), (yyvsp[(5) - (5)].identifier));
                     else
                       fatal_error(53, FEHLERZEILE);  }
    break;

  case 41:
#line 215 "../mu32/mut.y"
    { if ( fabs((yyvsp[(4) - (5)].f_value)) > 0.001 )
                       get_new_faktor_anteil ( -((yyvsp[(2) - (5)].f_value)) / ((yyvsp[(4) - (5)].f_value)), (yyvsp[(5) - (5)].identifier));
                     else
                       fatal_error(53, FEHLERZEILE);  }
    break;

  case 42:
#line 236 "../mu32/mut.y"
    { get_new_faktor_anteil ( (double) 1.0 , (yyvsp[(1) - (1)].identifier)); }
    break;

  case 43:
#line 244 "../mu32/mut.y"
    { get_new_faktor_anteil ( (yyvsp[(1) - (2)].f_value), (yyvsp[(2) - (2)].identifier)); }
    break;

  case 44:
#line 247 "../mu32/mut.y"
    { if ( fabs((yyvsp[(2) - (3)].f_value)) > 0.001 )
                       get_new_faktor_anteil ( (double) 1 / ((yyvsp[(2) - (3)].f_value)), (yyvsp[(3) - (3)].identifier));
                     else
                       fatal_error(53, FEHLERZEILE);  }
    break;

  case 45:
#line 253 "../mu32/mut.y"
    { if ( fabs((yyvsp[(3) - (4)].f_value)) > 0.001 )
                       get_new_faktor_anteil ( ((yyvsp[(1) - (4)].f_value)) / ((yyvsp[(3) - (4)].f_value)), (yyvsp[(4) - (4)].identifier));
                     else
                       fatal_error(53, FEHLERZEILE);  }
    break;

  case 49:
#line 286 "../mu32/mut.y"
    { init_ton_liste (); }
    break;

  case 51:
#line 291 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 52:
#line 293 "../mu32/mut.y"
    { get_new_tonsystem ((yyvsp[(1) - (8)].identifier), (yyvsp[(3) - (8)].integer)); }
    break;

  case 53:
#line 295 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 54:
#line 297 "../mu32/mut.y"
    { get_new_tonsystem_negative ((yyvsp[(1) - (9)].identifier), (yyvsp[(3) - (9)].integer)); }
    break;

  case 57:
#line 303 "../mu32/mut.y"
    { get_new_ton_in_tonsystem ((yyvsp[(1) - (1)].identifier)); }
    break;

  case 58:
#line 304 "../mu32/mut.y"
    { get_new_ton_in_tonsystem (NULL); }
    break;

  case 59:
#line 305 "../mu32/mut.y"
    { fatal_error(73,FEHLERZEILE); }
    break;

  case 60:
#line 309 "../mu32/mut.y"
    { get_new_name_in_parameterlist ((yyvsp[(1) - (1)].identifier)); }
    break;

  case 61:
#line 311 "../mu32/mut.y"
    { get_new_name_in_parameterlist ((yyvsp[(3) - (3)].identifier)); }
    break;

  case 62:
#line 312 "../mu32/mut.y"
    { fatal_error(74,FEHLERZEILE); }
    break;

  case 63:
#line 317 "../mu32/mut.y"
    {}
    break;

  case 64:
#line 318 "../mu32/mut.y"
    {}
    break;

  case 65:
#line 319 "../mu32/mut.y"
    { fatal_error(74,FEHLERZEILE); }
    break;

  case 66:
#line 324 "../mu32/mut.y"
    { get_new_name_in_argument_list ((yyvsp[(1) - (1)].identifier)) ;  }
    break;

  case 67:
#line 325 "../mu32/mut.y"
    { get_new_number_in_argument_list ((yyvsp[(1) - (1)].integer)) ;  }
    break;

  case 68:
#line 326 "../mu32/mut.y"
    { get_new_number_in_argument_list (-((yyvsp[(2) - (2)].integer))); }
    break;

  case 72:
#line 341 "../mu32/mut.y"
    { init_umstimmung ((yyvsp[(1) - (1)].identifier));
                      init_parameter_liste (); }
    break;

  case 73:
#line 343 "../mu32/mut.y"
    { eintrage_parameterliste_in_umstimmung (); }
    break;

  case 74:
#line 345 "../mu32/mut.y"
    { get_new_umstimmung (); }
    break;

  case 75:
#line 348 "../mu32/mut.y"
    { init_umstimmung ((yyvsp[(1) - (1)].identifier));
                      init_parameter_liste (); }
    break;

  case 76:
#line 351 "../mu32/mut.y"
    { eintrage_parameterliste_in_umstimmung (); }
    break;

  case 77:
#line 353 "../mu32/mut.y"
    { get_new_umstimmung (); }
    break;

  case 78:
#line 357 "../mu32/mut.y"
    {}
    break;

  case 79:
#line 358 "../mu32/mut.y"
    {}
    break;

  case 80:
#line 359 "../mu32/mut.y"
    {}
    break;

  case 81:
#line 360 "../mu32/mut.y"
    {}
    break;

  case 82:
#line 361 "../mu32/mut.y"
    {}
    break;

  case 83:
#line 362 "../mu32/mut.y"
    {}
    break;

  case 84:
#line 363 "../mu32/mut.y"
    {}
    break;

  case 85:
#line 364 "../mu32/mut.y"
    {}
    break;

  case 86:
#line 365 "../mu32/mut.y"
    {}
    break;

  case 87:
#line 366 "../mu32/mut.y"
    {}
    break;

  case 88:
#line 367 "../mu32/mut.y"
    {fatal_error(75,FEHLERZEILE);}
    break;

  case 89:
#line 373 "../mu32/mut.y"
    { get_umstimmung_taste_abs (zahl, (yyvsp[(1) - (3)].integer), NULL); }
    break;

  case 90:
#line 375 "../mu32/mut.y"
    { get_umstimmung_taste_abs (parameter, 0.0, (yyvsp[(1) - (3)].identifier)); }
    break;

  case 91:
#line 380 "../mu32/mut.y"
    { get_umstimmung_taste_rel (zahl, (yyvsp[(3) - (5)].integer), NULL, '+'); }
    break;

  case 92:
#line 382 "../mu32/mut.y"
    { get_umstimmung_taste_rel (parameter, 0.0, (yyvsp[(3) - (5)].identifier), '+'); }
    break;

  case 93:
#line 384 "../mu32/mut.y"
    { get_umstimmung_taste_rel (zahl, (yyvsp[(3) - (5)].integer), NULL, '-'); }
    break;

  case 94:
#line 386 "../mu32/mut.y"
    { get_umstimmung_taste_rel (parameter, 0.0, (yyvsp[(3) - (5)].identifier), '-'); }
    break;

  case 95:
#line 391 "../mu32/mut.y"
    { get_umstimmung_breite_abs (zahl, (yyvsp[(4) - (7)].integer), NULL); }
    break;

  case 96:
#line 393 "../mu32/mut.y"
    { get_umstimmung_breite_abs (parameter, 0.0, (yyvsp[(4) - (7)].identifier)); }
    break;

  case 97:
#line 398 "../mu32/mut.y"
    { get_umstimmung_breite_rel (zahl, (yyvsp[(6) - (9)].integer), NULL, '+'); }
    break;

  case 98:
#line 400 "../mu32/mut.y"
    { get_umstimmung_breite_rel (parameter, 0.0, (yyvsp[(6) - (9)].identifier), '+'); }
    break;

  case 99:
#line 402 "../mu32/mut.y"
    { get_umstimmung_breite_rel (zahl, (yyvsp[(6) - (9)].integer), NULL, '-'); }
    break;

  case 100:
#line 404 "../mu32/mut.y"
    { get_umstimmung_breite_rel (parameter, 0.0, (yyvsp[(6) - (9)].identifier), '-'); }
    break;

  case 101:
#line 406 "../mu32/mut.y"
    { get_umstimmung_breite_rel (zahl, (yyvsp[(6) - (9)].integer), NULL, '*'); }
    break;

  case 102:
#line 408 "../mu32/mut.y"
    { get_umstimmung_breite_rel (parameter, 0.0, (yyvsp[(6) - (9)].identifier), '*'); }
    break;

  case 103:
#line 410 "../mu32/mut.y"
    { get_umstimmung_breite_rel (zahl, (yyvsp[(6) - (9)].integer), NULL, '/'); }
    break;

  case 104:
#line 412 "../mu32/mut.y"
    { get_umstimmung_breite_rel (parameter, 0.0, (yyvsp[(6) - (9)].identifier), '/'); }
    break;

  case 105:
#line 417 "../mu32/mut.y"
    { init_umstimm_expression_list (); }
    break;

  case 106:
#line 419 "../mu32/mut.y"
    { get_umstimmung_tonhoehe_veraendert (); }
    break;

  case 107:
#line 426 "../mu32/mut.y"
    {}
    break;

  case 108:
#line 427 "../mu32/mut.y"
    {}
    break;

  case 109:
#line 429 "../mu32/mut.y"
    { init_komplex_ton_list();
                     get_new_umstimm_expression (NULL);
                   }
    break;

  case 110:
#line 432 "../mu32/mut.y"
    {}
    break;

  case 111:
#line 436 "../mu32/mut.y"
    {}
    break;

  case 112:
#line 437 "../mu32/mut.y"
    {}
    break;

  case 113:
#line 442 "../mu32/mut.y"
    { init_komplex_ton_list();
                     get_new_umstimm_expression (NULL);
                   }
    break;

  case 115:
#line 450 "../mu32/mut.y"
    { get_new_umstimm_expression ((yyvsp[(1) - (1)].identifier)); }
    break;

  case 116:
#line 451 "../mu32/mut.y"
    { get_new_umstimm_expression ("@"); }
    break;

  case 117:
#line 453 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 118:
#line 455 "../mu32/mut.y"
    { get_new_umstimm_expression_positive ((yyvsp[(1) - (4)].identifier)); }
    break;

  case 119:
#line 456 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 120:
#line 458 "../mu32/mut.y"
    { get_new_umstimm_expression_positive ( "@" ); }
    break;

  case 121:
#line 459 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 122:
#line 461 "../mu32/mut.y"
    { get_new_umstimm_expression_negative ((yyvsp[(1) - (4)].identifier)); }
    break;

  case 123:
#line 462 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 124:
#line 464 "../mu32/mut.y"
    { get_new_umstimm_expression_negative ( "@" ); }
    break;

  case 125:
#line 469 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 126:
#line 471 "../mu32/mut.y"
    { get_umstimmung_wiederholung_abs (); }
    break;

  case 127:
#line 472 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 128:
#line 474 "../mu32/mut.y"
    { get_umstimmung_wiederholung_abs_negative (); }
    break;

  case 129:
#line 478 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 130:
#line 480 "../mu32/mut.y"
    { get_umstimmung_wiederholung_rel_positive (); }
    break;

  case 131:
#line 481 "../mu32/mut.y"
    { init_komplex_ton_list (); }
    break;

  case 132:
#line 483 "../mu32/mut.y"
    { get_umstimmung_wiederholung_rel_negative (); }
    break;

  case 133:
#line 487 "../mu32/mut.y"
    { init_aktions_liste (); }
    break;

  case 134:
#line 489 "../mu32/mut.y"
    { get_umstimmung_umstimmungs_bund (); }
    break;

  case 135:
#line 493 "../mu32/mut.y"
    {}
    break;

  case 136:
#line 494 "../mu32/mut.y"
    {}
    break;

  case 137:
#line 498 "../mu32/mut.y"
    { init_argument_liste (); 
                       get_new_aktion_aufruf_element ((yyvsp[(1) - (1)].identifier)); }
    break;

  case 138:
#line 500 "../mu32/mut.y"
    { init_argument_liste (); }
    break;

  case 139:
#line 502 "../mu32/mut.y"
    { get_new_aktion_aufruf_element ((yyvsp[(1) - (5)].identifier)); }
    break;

  case 140:
#line 504 "../mu32/mut.y"
    { init_integersequenz ();}
    break;

  case 141:
#line 506 "../mu32/mut.y"
    { get_new_aktion_midi_out_element (); }
    break;

  case 142:
#line 510 "../mu32/mut.y"
    { init_umstimmungs_case_liste (); }
    break;

  case 143:
#line 512 "../mu32/mut.y"
    { get_umstimmung_umstimm_case_zahl ((yyvsp[(1) - (5)].integer)); }
    break;

  case 144:
#line 513 "../mu32/mut.y"
    { init_umstimmungs_case_liste (); }
    break;

  case 145:
#line 515 "../mu32/mut.y"
    { get_umstimmung_umstimm_case_parameter ((yyvsp[(1) - (5)].identifier)); }
    break;

  case 146:
#line 519 "../mu32/mut.y"
    {}
    break;

  case 147:
#line 520 "../mu32/mut.y"
    {}
    break;

  case 148:
#line 525 "../mu32/mut.y"
    { init_aktions_liste (); }
    break;

  case 149:
#line 527 "../mu32/mut.y"
    { get_umstimmungs_case_zahl_element ((yyvsp[(1) - (5)].integer)); }
    break;

  case 150:
#line 529 "../mu32/mut.y"
    { init_aktions_liste (); }
    break;

  case 151:
#line 531 "../mu32/mut.y"
    { get_umstimmungs_case_zahl_element (-((yyvsp[(2) - (6)].integer))); }
    break;

  case 152:
#line 533 "../mu32/mut.y"
    { init_aktions_liste (); }
    break;

  case 153:
#line 535 "../mu32/mut.y"
    { get_umstimmungs_case_default_element (); }
    break;

  case 154:
#line 540 "../mu32/mut.y"
    { init_integersequenz ();}
    break;

  case 155:
#line 542 "../mu32/mut.y"
    { get_umstimmung_midi_out (); }
    break;

  case 156:
#line 547 "../mu32/mut.y"
    {}
    break;

  case 157:
#line 551 "../mu32/mut.y"
    {}
    break;

  case 158:
#line 552 "../mu32/mut.y"
    {}
    break;

  case 159:
#line 557 "../mu32/mut.y"
    { init_tastenliste (); }
    break;

  case 160:
#line 559 "../mu32/mut.y"
    { get_new_harmonie ((yyvsp[(1) - (7)].identifier), (yyvsp[(7) - (7)].integer)); }
    break;

  case 161:
#line 561 "../mu32/mut.y"
    { fatal_error(76, mutC_STR((yyvsp[(1) - (3)].identifier))); }
    break;

  case 162:
#line 565 "../mu32/mut.y"
    { (yyval.integer) = -1; }
    break;

  case 163:
#line 566 "../mu32/mut.y"
    { (yyval.integer) = (yyvsp[(2) - (2)].integer); }
    break;

  case 164:
#line 570 "../mu32/mut.y"
    {}
    break;

  case 165:
#line 571 "../mu32/mut.y"
    {}
    break;

  case 166:
#line 575 "../mu32/mut.y"
    { get_new_taste ( (yyvsp[(1) - (1)].integer), '+'); }
    break;

  case 167:
#line 576 "../mu32/mut.y"
    { get_new_taste ( (yyvsp[(2) - (2)].integer), '*'); }
    break;

  case 168:
#line 580 "../mu32/mut.y"
    {}
    break;

  case 169:
#line 584 "../mu32/mut.y"
    {}
    break;

  case 170:
#line 585 "../mu32/mut.y"
    { init_ausloeser ();
                         /* fr die Anfangsausloesung der Logik */
                       }
    break;

  case 171:
#line 588 "../mu32/mut.y"
    {}
    break;

  case 172:
#line 593 "../mu32/mut.y"
    { get_new_logik ((yyvsp[(1) - (4)].identifier), NULL);
                init_anweisungs_liste (); }
    break;

  case 173:
#line 596 "../mu32/mut.y"
    { vervollstaendige_logik (); }
    break;

  case 174:
#line 598 "../mu32/mut.y"
    { get_new_logik ((yyvsp[(1) - (5)].identifier), (yyvsp[(4) - (5)].identifier));
                init_anweisungs_liste (); }
    break;

  case 175:
#line 601 "../mu32/mut.y"
    { vervollstaendige_logik (); }
    break;

  case 176:
#line 605 "../mu32/mut.y"
    {}
    break;

  case 177:
#line 606 "../mu32/mut.y"
    {}
    break;

  case 178:
#line 611 "../mu32/mut.y"
    { init_aktions_liste (); }
    break;

  case 179:
#line 613 "../mu32/mut.y"
    { get_new_anweisung (); }
    break;

  case 180:
#line 615 "../mu32/mut.y"
    { init_aktions_liste (); }
    break;

  case 181:
#line 617 "../mu32/mut.y"
    { get_new_anweisung (); }
    break;

  case 182:
#line 622 "../mu32/mut.y"
    { get_harmoniebezeichner (  (yyvsp[(1) - (5)].integer), (yyvsp[(3) - (5)].identifier),  (yyvsp[(5) - (5)].integer)); }
    break;

  case 183:
#line 624 "../mu32/mut.y"
    { get_harmoniebezeichner (-1, (yyvsp[(1) - (3)].identifier),  (yyvsp[(3) - (3)].integer)); }
    break;

  case 184:
#line 626 "../mu32/mut.y"
    { get_harmoniebezeichner (  (yyvsp[(1) - (3)].integer), (yyvsp[(3) - (3)].identifier), -1); }
    break;

  case 185:
#line 628 "../mu32/mut.y"
    { get_harmoniebezeichner (-1, (yyvsp[(1) - (1)].identifier), -1); }
    break;

  case 186:
#line 632 "../mu32/mut.y"
    { get_ausloeser_default (); }
    break;

  case 187:
#line 633 "../mu32/mut.y"
    { get_ausloeser_harmonie (); }
    break;

  case 188:
#line 634 "../mu32/mut.y"
    { get_ausloeser_harmonie_form (); }
    break;

  case 189:
#line 635 "../mu32/mut.y"
    { get_ausloeser_taste ((yyvsp[(2) - (2)].identifier)); }
    break;

  case 190:
#line 636 "../mu32/mut.y"
    { init_integersequenz (); }
    break;

  case 191:
#line 638 "../mu32/mut.y"
    { get_ausloeser_midi_in (); }
    break;

  case 192:
#line 643 "../mu32/mut.y"
    { get_new_integer_in_integersequenz ((yyvsp[(1) - (1)].integer));}
    break;

  case 193:
#line 645 "../mu32/mut.y"
    { get_new_integer_in_integersequenz ((yyvsp[(3) - (3)].integer));}
    break;

  case 194:
#line 646 "../mu32/mut.y"
    { fatal_error( 77, FEHLERZEILE ); }
    break;

  case 195:
#line 651 "../mu32/mut.y"
    {}
    break;

  case 196:
#line 655 "../mu32/mut.y"
    {}
    break;

  case 197:
#line 656 "../mu32/mut.y"
    {}
    break;

  case 198:
#line 661 "../mu32/mut.y"
    { get_instrument_dekl ((yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(4) - (4)].integer), 0, & list_of_instrumente); }
    break;

  case 199:
#line 663 "../mu32/mut.y"
    { get_instrument_dekl ((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(6) - (6)].integer), 0, & list_of_instrumente); }
    break;

  case 200:
#line 665 "../mu32/mut.y"
    { get_instrument_dekl ((yyvsp[(1) - (6)].integer), 0, 0, (yyvsp[(5) - (6)].integer), & list_of_instrumente); }
    break;

  case 201:
#line 667 "../mu32/mut.y"
    { get_instrument_dekl ((yyvsp[(1) - (7)].integer), (yyvsp[(4) - (7)].integer), (yyvsp[(4) - (7)].integer), (yyvsp[(6) - (7)].integer), & list_of_instrumente); }
    break;

  case 202:
#line 669 "../mu32/mut.y"
    { get_instrument_dekl ((yyvsp[(1) - (9)].integer), (yyvsp[(4) - (9)].integer), (yyvsp[(6) - (9)].integer), (yyvsp[(8) - (9)].integer), & list_of_instrumente); }
    break;

  case 203:
#line 673 "../mu32/mut.y"
    { (yyval.f_value) = (yyvsp[(1) - (1)].f_value) ; }
    break;

  case 204:
#line 674 "../mu32/mut.y"
    { (yyval.f_value) = (double) (yyvsp[(1) - (1)].integer) ; }
    break;


/* Line 1267 of yacc.c.  */
#line 2686 "y.tab.c"
      default: break;
    }
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);

  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);

  *++yyvsp = yyval;
  *++yylsp = yyloc;

  /* Now `shift' the result of the reduction.  Determine what state
     that goes to, based on the state we popped back to and the rule
     number reduced by.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTOKENS];

  goto yynewstate;


/*------------------------------------.
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
  /* If not already recovering from an error, report this error.  */
  if (!yyerrstatus)
    {
      ++yynerrs;
#if ! YYERROR_VERBOSE
      yyerror (YY_("syntax error"));
#else
      {
        YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
        if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
          {
            YYSIZE_T yyalloc = 2 * yysize;
            if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
              yyalloc = YYSTACK_ALLOC_MAXIMUM;
            if (yymsg != yymsgbuf)
              YYSTACK_FREE (yymsg);
            yymsg = (char *) YYSTACK_ALLOC (yyalloc);
            if (yymsg)
              yymsg_alloc = yyalloc;
            else
              {
                yymsg = yymsgbuf;
                yymsg_alloc = sizeof yymsgbuf;
              }
          }

        if (0 < yysize && yysize <= yymsg_alloc)
          {
            (void) yysyntax_error (yymsg, yystate, yychar);
            yyerror (yymsg);
          }
        else
          {
            yyerror (YY_("syntax error"));
            if (yysize != 0)
              goto yyexhaustedlab;
          }
      }
#endif
    }

  yyerror_range[0] = yylloc;

  if (yyerrstatus == 3)
    {
      /* If just tried and failed to reuse look-ahead token after an
         error, discard it.  */

      if (yychar <= YYEOF)
        {
          /* Return failure if at end of input.  */
          if (yychar == YYEOF)
            YYABORT;
        }
      else
        {
          yydestruct ("Error: discarding",
                      yytoken, &yylval, &yylloc);
          yychar = YYEMPTY;
        }
    }

  /* Else will try to reuse look-ahead token after shifting the error
     token.  */
  goto yyerrlab1;


/*---------------------------------------------------.
| yyerrorlab -- error raised explicitly by YYERROR.  |
`---------------------------------------------------*/
yyerrorlab:

  /* Pacify compilers like GCC when the user code never invokes
     YYERROR and the label yyerrorlab therefore never appears in user
     code.  */
  if (/*CONSTCOND*/ 0)
     goto yyerrorlab;

  yyerror_range[0] = yylsp[1-yylen];
  /* Do not reclaim the symbols of the rule which action triggered
     this YYERROR.  */
  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);
  yystate = *yyssp;
  goto yyerrlab1;


/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
`-------------------------------------------------------------*/
yyerrlab1:
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */

  for (;;)
    {
      yyn = yypact[yystate];
      if (yyn != YYPACT_NINF)
        {
          yyn += YYTERROR;
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
            {
              yyn = yytable[yyn];
              if (0 < yyn)
                break;
            }
        }

      /* Pop the current state because it cannot handle the error token.  */
      if (yyssp == yyss)
        YYABORT;

      yyerror_range[0] = *yylsp;
      yydestruct ("Error: popping",
                  yystos[yystate], yyvsp, yylsp);
      YYPOPSTACK (1);
      yystate = *yyssp;
      YY_STACK_PRINT (yyss, yyssp);
    }

  if (yyn == YYFINAL)
    YYACCEPT;

  *++yyvsp = yylval;

  yyerror_range[1] = yylloc;
  /* Using YYLLOC is tempting, but would change the location of
     the look-ahead.  YYLOC is available though.  */
  YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
  *++yylsp = yyloc;

  /* Shift the error token.  */
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);

  yystate = yyn;
  goto yynewstate;


/*-------------------------------------.
| yyacceptlab -- YYACCEPT comes here.  |
`-------------------------------------*/
yyacceptlab:
  yyresult = 0;
  goto yyreturn;

/*-----------------------------------.
| yyabortlab -- YYABORT comes here.  |
`-----------------------------------*/
yyabortlab:
  yyresult = 1;
  goto yyreturn;

#ifndef yyoverflow
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here.  |
`-------------------------------------------------*/
yyexhaustedlab:
  yyerror (YY_("memory exhausted"));
  yyresult = 2;
  /* Fall through.  */
#endif

yyreturn:
  if (yychar != YYEOF && yychar != YYEMPTY)
     yydestruct ("Cleanup: discarding lookahead",
                 yytoken, &yylval, &yylloc);
  /* Do not reclaim the symbols of the rule which action triggered
     this YYABORT or YYACCEPT.  */
  YYPOPSTACK (yylen);
  YY_STACK_PRINT (yyss, yyssp);
  while (yyssp != yyss)
    {
      yydestruct ("Cleanup: popping",
                  yystos[*yyssp], yyvsp, yylsp);
      YYPOPSTACK (1);
    }
#ifndef yyoverflow
  if (yyss != yyssa)
    YYSTACK_FREE (yyss);
#endif
#if YYERROR_VERBOSE
  if (yymsg != yymsgbuf)
    YYSTACK_FREE (yymsg);
#endif
  /* Make sure YYID is used.  */
  return YYID (yyresult);
}

Variablen-Dokumentation

Initialisierung:

Definiert in Zeile 162 der Datei TabGen.cpp.

Definiert in Zeile 84 der Datei GrafKern.cpp.

Definiert in Zeile 28 der Datei box.cpp.

Definiert in Zeile 27 der Datei box.cpp.

Definiert in Zeile 27 der Datei box.cpp.

Definiert in Zeile 63 der Datei TabGen.cpp.

Wird benutzt von calc_declaration_numbers(), init_yylex() und yylex().

Definiert in Zeile 63 der Datei TabGen.cpp.

Wird benutzt von calc_declaration_numbers(), init_yylex() und yylex().

int anzahl_toene [static]

Definiert in Zeile 2232 der Datei Parser.cpp.

Wird benutzt von berechne_toene_absolut(), test_zyklen() und ton_nummer().

Definiert in Zeile 2662 der Datei Parser.cpp.

Wird benutzt von check_konsistenz(), test_zyklen_nummer() und u_test_zyklen().

unsigned char boxAktionen[AKTIONEN_MAX]

Definiert in Zeile 96 der Datei GrafKern.cpp.

Wird benutzt von AktionenMessage() und GetActString().

struct cache_konstanten* cache_konstanten = NULL [static]

Definiert in Zeile 183 der Datei TabGen.cpp.

Definiert in Zeile 79 der Datei GrafKern.cpp.

Wird benutzt von InitCompDia() und show_line_number().

const mutTranslationChar* Error_text[]

Definiert in Zeile 178 der Datei Errors.cpp.

Wird benutzt von fatal_error().

const mutTranslationChar* Error_text[]

Definiert in Zeile 178 der Datei Errors.cpp.

Wird benutzt von fatal_error().

Definiert in Zeile 45 der Datei TabGen.cpp.

Wird benutzt von HarmonyAnalysis().

Definiert in Zeile 45 der Datei TabGen.cpp.

Wird benutzt von HarmonyAnalysis().

Definiert in Zeile 51 der Datei TabGen.cpp.

Wird benutzt von GetMutTag(), IsLogicKey(), KeyboardAnalyse() und KeyboardAnalyseSimple().

Definiert in Zeile 51 der Datei TabGen.cpp.

Wird benutzt von GetMutTag(), IsLogicKey(), KeyboardAnalyse() und KeyboardAnalyseSimple().

Definiert in Zeile 49 der Datei TabGen.cpp.

Definiert in Zeile 49 der Datei TabGen.cpp.

Definiert in Zeile 55 der Datei TabGen.cpp.

Definiert in Zeile 55 der Datei TabGen.cpp.

Definiert in Zeile 61 der Datei TabGen.cpp.

Definiert in Zeile 61 der Datei TabGen.cpp.

struct midi_ereignis* first_midi[MAX_BOX]

Definiert in Zeile 57 der Datei TabGen.cpp.

Wird benutzt von MidiAnalysis().

struct midi_ereignis* first_midi[MAX_BOX]

Definiert in Zeile 57 der Datei TabGen.cpp.

Wird benutzt von MidiAnalysis().

char Fmeldung[255]
char Fmeldung[255]

Definiert in Zeile 23 der Datei box.cpp.

Wird benutzt von change_anker() und GlobalReset().

Definiert in Zeile 23 der Datei box.cpp.

Wird benutzt von change_anker() und GlobalReset().

struct heap_element* heap_to_use_syntax = NULL [static]

Definiert in Zeile 123 der Datei Hilfs.cpp.

int is_valid

Definiert in Zeile 43 der Datei Hilfs.cpp.

Wird benutzt von intern_fgetc() und intern_ungetc().

int keys_changed[MAX_BOX]

Definiert in Zeile 102 der Datei GrafKern.cpp.

Wird benutzt von FlushUpdateUI(), KeyChanged() und MutResetKeys().

int keys_changed[MAX_BOX]

Definiert in Zeile 102 der Datei GrafKern.cpp.

Wird benutzt von FlushUpdateUI(), KeyChanged() und MutResetKeys().

Definiert in Zeile 104 der Datei GrafKern.cpp.

Wird benutzt von FlushUpdateUI() und MutResetKeys().

Definiert in Zeile 104 der Datei GrafKern.cpp.

Wird benutzt von FlushUpdateUI() und MutResetKeys().

int lAktionen[AKTIONEN_MAX]

Definiert in Zeile 98 der Datei GrafKern.cpp.

Wird benutzt von AktionenMessage() und GetActString().

Definiert in Zeile 47 der Datei TabGen.cpp.

Wird benutzt von execute_aktion() und MutResetKeys().

Definiert in Zeile 47 der Datei TabGen.cpp.

Wird benutzt von execute_aktion() und MutResetKeys().

Definiert in Zeile 53 der Datei TabGen.cpp.

Wird benutzt von execute_aktion() und MutResetKeys().

Definiert in Zeile 53 der Datei TabGen.cpp.

Wird benutzt von execute_aktion() und MutResetKeys().

struct midi_ereignis** last_global_midi[MAX_BOX]

Definiert in Zeile 59 der Datei TabGen.cpp.

Wird benutzt von execute_aktion() und MutResetKeys().

struct midi_ereignis** last_global_midi[MAX_BOX]

Definiert in Zeile 59 der Datei TabGen.cpp.

Wird benutzt von execute_aktion() und MutResetKeys().

long last_note_id[MAX_BOX]

Definiert in Zeile 72 der Datei Execute.cpp.

Wird benutzt von AddKey() und DeleteKey().

int laufzeit_abstand[256]

Definiert in Zeile 75 der Datei Execute.cpp.

Wird benutzt von HarmonyAnalysis().

int laufzeit_abstand[MAX_BOX]

Definiert in Zeile 75 der Datei Execute.cpp.

Wird benutzt von HarmonyAnalysis().

struct mini_heap* laufzeit_heap = NULL [static]

Definiert in Zeile 294 der Datei Hilfs.cpp.

Wird benutzt von loesche_laufzeit_speicher() und ymalloc().

Definiert in Zeile 26 der Datei box.cpp.

Definiert in Zeile 26 der Datei box.cpp.

Definiert in Zeile 26 der Datei box.cpp.

int laufzeit_zentrum[256]

Definiert in Zeile 76 der Datei Execute.cpp.

Wird benutzt von change_anker() und HarmonyAnalysis().

int laufzeit_zentrum[MAX_BOX]

Definiert in Zeile 76 der Datei Execute.cpp.

Wird benutzt von change_anker() und HarmonyAnalysis().

int liegende_tasten[MAX_BOX][64]
int liegende_tasten[MAX_BOX][64]
int liegende_tasten_max[MAX_BOX]
int liegende_tasten_max[MAX_BOX]
struct aktions_liste* list_of_aktionen [static]

Definiert in Zeile 367 der Datei Parser.cpp.

Wird benutzt von get_last_aktions_liste().

Definiert in Zeile 314 der Datei Parser.cpp.

Wird benutzt von get_last_argument_liste().

Definiert in Zeile 56 der Datei Parser.cpp.

Wird benutzt von GetChannels(), mutabor_programm_einlesen() und SetChannels().

Definiert in Zeile 56 der Datei Parser.cpp.

Wird benutzt von GetChannels(), mutabor_programm_einlesen() und SetChannels().

Definiert in Zeile 50 der Datei Parser.cpp.

Wird benutzt von expand_pattern().

Definiert in Zeile 50 der Datei Parser.cpp.

Wird benutzt von expand_pattern().

Definiert in Zeile 54 der Datei Parser.cpp.

Wird benutzt von yyparse().

Definiert in Zeile 54 der Datei Parser.cpp.

Wird benutzt von yyparse().

struct midiliste* list_of_integers [static]

Definiert in Zeile 221 der Datei Parser.cpp.

Wird benutzt von get_last_integersequenz().

struct parameter_liste* list_of_names [static]

Definiert in Zeile 253 der Datei Parser.cpp.

Wird benutzt von get_last_parameter_liste().

struct ton* list_of_toene

Definiert in Zeile 44 der Datei Parser.cpp.

Wird benutzt von calc_declaration_numbers(), expandiere_tonsystem() und get_komplex_frequenz().

struct ton* list_of_toene

Definiert in Zeile 44 der Datei Parser.cpp.

Wird benutzt von calc_declaration_numbers(), expandiere_tonsystem() und get_komplex_frequenz().

Definiert in Zeile 46 der Datei Parser.cpp.

Wird benutzt von calc_declaration_numbers(), expandiere_logik() und expandiere_name().

Definiert in Zeile 46 der Datei Parser.cpp.

Wird benutzt von calc_declaration_numbers(), expandiere_logik() und expandiere_name().

Definiert in Zeile 48 der Datei Parser.cpp.

Wird benutzt von calc_declaration_numbers(), expandiere_logik() und expandiere_name().

Definiert in Zeile 48 der Datei Parser.cpp.

Wird benutzt von calc_declaration_numbers(), expandiere_logik() und expandiere_name().

bool logic_changed[MAX_BOX]

Definiert in Zeile 73 der Datei Execute.cpp.

Wird benutzt von execute_aktion(), FlushUpdateUI() und MutResetKeys().

char* matrix [static]

Definiert in Zeile 2240 der Datei Parser.cpp.

int nAktionen = 0

Definiert in Zeile 100 der Datei GrafKern.cpp.

Wird benutzt von AktionenInit(), AktionenMessage() und GetActString().

Definiert in Zeile 83 der Datei GrafKern.cpp.

Wird benutzt von GetLineNumbers(), init_laufzeit_protokoll() und laufzeit_message().

char protokoll_string[PROT_MAXCHARS]

Definiert in Zeile 92 der Datei GrafKern.cpp.

Wird benutzt von GetKeyString(), GetTSString(), init_laufzeit_protokoll() und laufzeit_message().

Definiert in Zeile 51 der Datei Execute.cpp.

Definiert in Zeile 50 der Datei Execute.cpp.

FILE* quelldatei

Definiert in Zeile 565 der Datei Parser.cpp.

Wird benutzt von yylex().

FILE* quelldatei

Definiert in Zeile 565 der Datei Parser.cpp.

Wird benutzt von yylex().

char sAktionen[AKTIONEN_MAX *50]

Definiert in Zeile 94 der Datei GrafKern.cpp.

Wird benutzt von AktionenMessage() und GetActString().

char sd1[100]

Definiert in Zeile 112 der Datei GrafKern.cpp.

Wird benutzt von calc_declaration_numbers() und Compile().

char sd1[100]

Definiert in Zeile 112 der Datei GrafKern.cpp.

Wird benutzt von calc_declaration_numbers() und Compile().

char sd2[100]

Definiert in Zeile 112 der Datei GrafKern.cpp.

Wird benutzt von calc_declaration_numbers() und Compile().

char sd2[100]

Definiert in Zeile 112 der Datei GrafKern.cpp.

Wird benutzt von calc_declaration_numbers() und Compile().

Initialisierung:
 { 4,3,70,2,11,61,
                        127
                      }

Definiert in Zeile 38 der Datei Hilfs.cpp.

Wird benutzt von intern_ungetc().

Initialisierung:

Definiert in Zeile 167 der Datei TabGen.cpp.

struct heap_element* syntax_heap = NULL [static]

Definiert in Zeile 121 der Datei Hilfs.cpp.

Wird benutzt von loesche_syntax_speicher() und xmalloc().

Definiert in Zeile 78 der Datei Execute.cpp.

int the_character [static]

Definiert in Zeile 43 der Datei Hilfs.cpp.

Wird benutzt von intern_fgetc() und intern_ungetc().

Definiert in Zeile 411 der Datei Parser.cpp.

Wird benutzt von get_last_komplex_intervall().

struct anweisung* tmp_anweisungsliste [static]

Definiert in Zeile 2098 der Datei Parser.cpp.

Wird benutzt von get_last_anweisungs_liste().

struct ausloeser* tmp_ausloeser [static]

Definiert in Zeile 2028 der Datei Parser.cpp.

Wird benutzt von get_last_ausloeser().

int tmp_nach_taste [static]

Definiert in Zeile 2017 der Datei Parser.cpp.

Wird benutzt von get_ausloeser_harmonie() und get_ausloeser_harmonie_form().

const char* tmp_name [static]

Definiert in Zeile 2015 der Datei Parser.cpp.

Wird benutzt von get_ausloeser_harmonie() und get_ausloeser_harmonie_form().

struct taste* tmp_tastenliste [static]

Definiert in Zeile 1930 der Datei Parser.cpp.

Wird benutzt von get_new_harmonie().

struct ton* tmp_tonliste [static]

Definiert in Zeile 1426 der Datei Parser.cpp.

Wird benutzt von get_umstimmung_tonhoehe_veraendert().

struct umstimmung* tmp_umstimmung [static]

Definiert in Zeile 1232 der Datei Parser.cpp.

Wird benutzt von get_new_umstimmung().

int tmp_vor_taste [static]

Definiert in Zeile 2013 der Datei Parser.cpp.

Wird benutzt von get_ausloeser_harmonie() und get_ausloeser_harmonie_form().

struct ton** toene [static]

Definiert in Zeile 2234 der Datei Parser.cpp.

Wird benutzt von expandiere_tonsystem(), get_new_tonsystem() und get_new_tonsystem_negative().

struct ton* ton_liste [static]

Definiert in Zeile 1147 der Datei Parser.cpp.

Wird benutzt von get_new_tonsystem() und get_new_tonsystem_negative().

Definiert in Zeile 58 der Datei Parser.cpp.

Initialisierung:
        {60, 1, DOUBLE_TO_LONG(1), { DOUBLE_TO_LONG(60) }}

Definiert in Zeile 66 der Datei Execute.cpp.

Wird benutzt von GlobalReset().

Definiert in Zeile 64 der Datei Execute.cpp.

char* u_matrix [static]

Definiert in Zeile 2686 der Datei Parser.cpp.

char* u_visited [static]

Definiert in Zeile 2684 der Datei Parser.cpp.

char* visited [static]

Definiert in Zeile 2238 der Datei Parser.cpp.

const mutTranslationChar* Warning_text[]
Initialisierung:
        {
                 N_("Undefined compiler warning"),
                N_("MIDI event in logic %s does not start with channel 0 status byte. Value corrected."),
                N_("Non existent harmony event in logic %s"),
                N_("Non well defined event %s in logic %s"),
                N_("Event ELSE is last in %s"),
                 N_("MIDI channels wasted in channel assotiation"),
                N_("No file given, trying test.mut"),
                N_("Invalid configuration file"),
                N_("Intersection of MIDI channels %d und %d"),
                N_("Error in GMN-File %s position(%d, %d): %s")
        }

Definiert in Zeile 279 der Datei Errors.cpp.

Wird benutzt von compiler_warning().

const mutTranslationChar* Warning_text[]

Definiert in Zeile 279 der Datei Errors.cpp.

Wird benutzt von compiler_warning().

Definiert in Zeile 118 der Datei Runtime.cpp.

Wird benutzt von fatal_error().

Definiert in Zeile 52 der Datei Execute.cpp.

Initialisierung:
        {
                & laufzeit_zentrum, NULL
        }

Definiert in Zeile 157 der Datei TabGen.cpp.

struct umst_oder_logik* zyklen_feld [static]

Definiert in Zeile 2680 der Datei Parser.cpp.


Erzeugt am Sun Aug 21 2011 10:52:02 für Mutabor von doxygen 1.7.4