source: trunk/symtab/symtab.cxx @ 1776

Last change on this file since 1776 was 1229, checked in by vla24, 8 years ago

Reorganized SymbolTable? library

File size: 853 bytes
Line 
1#include "symtab.h"
2
3SymbolTable::SymbolTable() {
4        globalNameCount = 0;
5        Name_Data name_data;
6        name_data.name_string = NULL;
7        name_data.lgth = 0;
8        NameTable.push_back(name_data);
9}
10
11int SymbolTable::Insert_Name(char * name, int lgth) {
12        char * s = pool.Insert(name,lgth);
13        NameMap[s]=++(globalNameCount);
14        Name_Data name_data;
15        name_data.name_string = s;
16        name_data.lgth = lgth;
17        NameTable.push_back(name_data);
18        return globalNameCount;
19}
20
21int SymbolTable::Lookup_or_Insert_Name(char * name, int lgth) {
22
23        char delim = name[lgth];
24        name[lgth] = '\0';
25        int nameID = NameMap[name];
26        name[lgth] = delim;
27       
28        if(nameID == 0){
29                char * s = pool.Insert(name,lgth);
30                NameMap[s]=++(globalNameCount);
31                nameID = globalNameCount;
32                Name_Data name_data;
33                name_data.name_string = s;
34                name_data.lgth = lgth;
35                NameTable.push_back(name_data);
36        }
37        return nameID;
38}
39
Note: See TracBrowser for help on using the repository browser.