source: trunk/src/symtab.h @ 184

Last change on this file since 184 was 184, checked in by cameron, 11 years ago

Create stringpool.h

File size: 1.5 KB
RevLine 
[124]1/*  symtab.h - XML Symbol Table Module
2    Copyright (c) 2008 Robert D. Cameron
3    Licensed to the public under the Open Software License 3.0.
4    Licensed to International Characters, Inc., under the Academic
5    Free License 3.0.
6*/
7
8#ifndef SYMTAB_H
9#define SYMTAB_H
10
11#include "namechars.h"
[184]12#include "stringpool.h"
[124]13
[135]14struct eqstr
15{
16  bool operator()(const char* s1, const char* s2) const
17  {
18    return strcmp(s1, s2) == 0;
19  }
20};
[139]21
22struct Name_Data
23{
24        char * name_string;
25        int        lgth;
26};
[135]27       
28char * predefined[] = {"lt", "gt", "amp", "quot", "apos"};
[124]29
[160]30
31class Symbol_Table {
32public:
[135]33        Symbol_Table();
[160]34
35
[141]36        int Insert_Name(char * name, int lgth);
[174]37        int ASCII_Lookup_or_Insert_Name(char * name, int lgth); 
38        int UTF8_Lookup_or_Insert_Name(char * name, int lgth);
39        int ASCII_Lookup_or_Insert_Nmtoken(char * name, int lgth);     
40        int UTF8_Lookup_or_Insert_Nmtoken(char * name, int lgth);
[160]41
[135]42        char * Get_UTF8_name(int nameID);
[139]43        int Get_UTF8_lgth(int nameID);
[174]44
45        char * Get_UTF8_nmtoken(int nmtokenID);
46        int Get_UTF8_nmtoken_lgth(int nmtokenID);
[160]47       
48        char * ReserveSymbolSpace(int u8_lgth);
49        int LookupOrInsertReserved();
[174]50        int LookupOrInsertReserved_nmtoken();
[160]51       
[169]52        XML_version version;
[173]53        vector<Name_Data> UTF8NameTable;
[174]54        vector<Name_Data> UTF8NmtokenTable;
[135]55private:
56        hash_map<const char *, int, hash<const char *>, eqstr > UTF8NameMap;
[174]57        hash_map<const char *, int, hash<const char *>, eqstr > UTF8NmtokenMap;
[135]58        int globalNameCount;
[174]59        int globalNmtokenCount;
[139]60//      vector<char *> UTF8NameTable;
[173]61
[160]62        char * reserved;
63        int reserved_lgth;
[184]64        StringPool<4096,100> pool;
[135]65};
[124]66
67
[160]68
[124]69#endif
Note: See TracBrowser for help on using the repository browser.