00001
00011 #ifndef _ALPHABET_H_
00012 #define _ALPHABET_H_
00013
00014 #include <string>
00015 #include <map>
00016 using namespace std;
00017
00019 class Alphabet {
00020 public:
00021 virtual string nameof(long var_num) const = 0;
00022 virtual ~Alphabet(){}
00023 };
00025
00030 class AutoAlphabet : public Alphabet {
00031 public:
00033 virtual string nameof(long var_num) const;
00034 };
00035
00037
00061 class SimpleAlphabet : public Alphabet {
00062 protected:
00064 map< long, string > names;
00066
00080 long var_in_use;
00081 public:
00082 SimpleAlphabet();
00084 virtual string nameof(long var_num) const;
00086 long new_variable(const string& thename);
00088 long variables_in_use() const;
00089 };
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103 #endif