Ignore -L flag so can get passed to rlogin
[unix-history] / usr / src / old / dbx / languages.c
CommitLineData
86d66dd9
ML
1/* Copyright (c) 1982 Regents of the University of California */
2
0022c355
ML
3static char sccsid[] = "@(#)languages.c 1.5 (Berkeley) %G%";
4
5static char rcsid[] = "$Header: languages.c,v 1.5 84/12/26 10:39:49 linton Exp $";
86d66dd9
ML
6
7/*
8 * Language management.
9 */
10
11#include "defs.h"
12#include "languages.h"
13#include "c.h"
14#include "pascal.h"
2fd0f574 15#include "modula-2.h"
86d66dd9
ML
16#include "asm.h"
17
18#ifndef public
2fd0f574 19
86d66dd9
ML
20typedef struct Language *Language;
21
22typedef enum {
2fd0f574
SL
23 L_PRINTDECL, L_PRINTVAL, L_TYPEMATCH, L_BUILDAREF, L_EVALAREF,
24 L_MODINIT, L_HASMODULES, L_PASSADDR,
25 L_ENDOP
86d66dd9
ML
26} LanguageOp;
27
28typedef LanguageOperation();
2fd0f574
SL
29
30Language primlang;
31
86d66dd9
ML
32#endif
33
34struct Language {
35 String name;
36 String suffix;
2fd0f574 37 LanguageOperation *op[20];
86d66dd9
ML
38 Language next;
39};
40
41private Language head;
42
43/*
44 * Initialize language information.
45 *
46 * The last language initialized will be the default one
47 * for otherwise indistinguised symbols.
48 */
49
50public language_init()
51{
2fd0f574 52 primlang = language_define("$builtin symbols", ".?");
86d66dd9 53 c_init();
1c6133da 54 fortran_init();
86d66dd9 55 pascal_init();
2fd0f574 56 modula2_init();
86d66dd9
ML
57 asm_init();
58}
59
60public Language findlanguage(suffix)
61String suffix;
62{
63 Language lang;
64
65 lang = head;
66 if (suffix != nil) {
67 while (lang != nil and not streq(lang->suffix, suffix)) {
68 lang = lang->next;
69 }
70 if (lang == nil) {
71 lang = head;
72 }
73 }
74 return lang;
75}
76
77public String language_name(lang)
78Language lang;
79{
80 return (lang == nil) ? "(nil)" : lang->name;
81}
82
83public Language language_define(name, suffix)
84String name;
85String suffix;
86{
87 Language p;
88
89 p = new(Language);
90 p->name = name;
91 p->suffix = suffix;
92 p->next = head;
93 head = p;
94 return p;
95}
96
97public language_setop(lang, op, operation)
98Language lang;
99LanguageOp op;
100LanguageOperation *operation;
101{
102 checkref(lang);
2fd0f574 103 assert(ord(op) < ord(L_ENDOP));
86d66dd9
ML
104 lang->op[ord(op)] = operation;
105}
106
107public LanguageOperation *language_op(lang, op)
108Language lang;
109LanguageOp op;
110{
111 LanguageOperation *o;
112
113 checkref(lang);
114 o = lang->op[ord(op)];
115 checkref(o);
116 return o;
117}