Annotation of 42BSD/ucb/dbx/languages.c, revision 1.1.1.1

1.1       root        1: /* Copyright (c) 1982 Regents of the University of California */
                      2: 
                      3: static char sccsid[] = "@(#)languages.c 1.3 5/18/83";
                      4: 
                      5: /*
                      6:  * Language management.
                      7:  */
                      8: 
                      9: #include "defs.h"
                     10: #include "languages.h"
                     11: #include "c.h"
                     12: #include "pascal.h"
                     13: #include "asm.h"
                     14: 
                     15: #ifndef public
                     16: typedef struct Language *Language;
                     17: 
                     18: typedef enum {
                     19:     L_PRINTDECL, L_PRINTVAL, L_TYPEMATCH, L_BUILDAREF, L_EVALAREF
                     20: } LanguageOp;
                     21: 
                     22: typedef LanguageOperation();
                     23: #endif
                     24: 
                     25: struct Language {
                     26:     String name;
                     27:     String suffix;
                     28:     LanguageOperation *op[10];
                     29:     Language next;
                     30: };
                     31: 
                     32: private Language head;
                     33: 
                     34: /*
                     35:  * Initialize language information.
                     36:  *
                     37:  * The last language initialized will be the default one
                     38:  * for otherwise indistinguised symbols.
                     39:  */
                     40: 
                     41: public language_init()
                     42: {
                     43:     c_init();
                     44:     fortran_init();
                     45:     pascal_init();
                     46:     asm_init();
                     47: }
                     48: 
                     49: public Language findlanguage(suffix)
                     50: String suffix;
                     51: {
                     52:     Language lang;
                     53: 
                     54:     lang = head;
                     55:     if (suffix != nil) {
                     56:        while (lang != nil and not streq(lang->suffix, suffix)) {
                     57:            lang = lang->next;
                     58:        }
                     59:        if (lang == nil) {
                     60:            lang = head;
                     61:        }
                     62:     }
                     63:     return lang;
                     64: }
                     65: 
                     66: public String language_name(lang)
                     67: Language lang;
                     68: {
                     69:     return (lang == nil) ? "(nil)" : lang->name;
                     70: }
                     71: 
                     72: public Language language_define(name, suffix)
                     73: String name;
                     74: String suffix;
                     75: {
                     76:     Language p;
                     77: 
                     78:     p = new(Language);
                     79:     p->name = name;
                     80:     p->suffix = suffix;
                     81:     p->next = head;
                     82:     head = p;
                     83:     return p;
                     84: }
                     85: 
                     86: public language_setop(lang, op, operation)
                     87: Language lang;
                     88: LanguageOp op;
                     89: LanguageOperation *operation;
                     90: {
                     91:     checkref(lang);
                     92:     assert(ord(op) <= ord(L_EVALAREF));
                     93:     lang->op[ord(op)] = operation;
                     94: }
                     95: 
                     96: public LanguageOperation *language_op(lang, op)
                     97: Language lang;
                     98: LanguageOp op;
                     99: {
                    100:     LanguageOperation *o;
                    101: 
                    102:     checkref(lang);
                    103:     o = lang->op[ord(op)];
                    104:     checkref(o);
                    105:     return o;
                    106: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.