00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __loaded__data_token_cpp__
00021 #define __loaded__data_token_cpp__
00022 using namespace std;
00023 #line 1 "data-token.c++"
00024 #include "data-token.h"
00025 #include "data-visitor.h"
00026
00027
00028
00029
00030 Token::Token()
00031 {
00032 content = new TokenContent();
00033 };
00034
00035 Token::Token(const Token& dc) : DataClass()
00036 {
00037 content = dc.content;
00038 content -> refcount++;
00039 }
00040
00041 Token::~Token()
00042 {
00043 if (--content->refcount==0)
00044 delete content;
00045 }
00046
00047 Token& Token::operator = (const Token& dc)
00048 {
00049 if (content!=dc.content)
00050 {
00051 if(--content->refcount==0)
00052 delete content;
00053 content = dc.content;
00054 content->refcount++;
00055 }
00056 return *this;
00057 };
00058
00059 vector<Symbol> Token::keys() const
00060 {
00061 vector<Symbol> result;
00062 map<Symbol, Data, symbolLesser>::const_iterator cur = content->content.begin();
00063 while(cur!=content->content.end())
00064 {
00065 pair<Symbol,Data> v=*cur;
00066 result.push_back(v.first);
00067 cur++;
00068 }
00069 return result;
00070 };
00071
00072 void Token::visit(DataVisitor&v)
00073 {
00074 v.visit(*this);
00075 }
00076
00077 #endif // __loaded__data_token_cpp__