source: dev/trunk/abdev/BasicCompiler_Common/include/Symbol.h@ 370

Last change on this file since 370 was 348, checked in by dai_9181, 17 years ago
File size: 2.0 KB
Line 
1#pragma once
2
3#include <vector>
4#include <string>
5
6#include <jenga/include/smoothie/LexicalAnalysis.h>
7
8#include <BoostSerializationSupport.h>
9#include <Namespace.h>
10
11using namespace std;
12
13class Symbol
14{
15 NamespaceScopes namespaceScopes;
16 string name;
17
18 // XMLシリアライズ用
19private:
20 friend class boost::serialization::access;
21 BOOST_SERIALIZATION_SPLIT_MEMBER();
22 template<class Archive> void load(Archive& ar, const unsigned int version)
23 {
24 //trace_for_serialize( "serializing(load) - Symbol" );
25
26 ar & BOOST_SERIALIZATION_NVP( namespaceScopes );
27
28 std::string _name;
29 ar & BOOST_SERIALIZATION_NVP( _name );
30 this->name = Operator_NaturalStringToCalcMarkString( _name );
31 }
32 template<class Archive> void save(Archive& ar, const unsigned int version) const
33 {
34 //trace_for_serialize( "serializing(save) - Symbol" );
35
36 ar & BOOST_SERIALIZATION_NVP( namespaceScopes );
37
38 std::string _name = Operator_CalcMarkStringToNaturalString( name );
39 ar & BOOST_SERIALIZATION_NVP( _name );
40 }
41
42public:
43 bool isTargetObjectModule;
44 Symbol( const NamespaceScopes &namespaceScopes, const string &name )
45 : namespaceScopes( namespaceScopes )
46 , name( name )
47 , isTargetObjectModule( true )
48 {
49 }
50 Symbol( const char *fullName );
51 Symbol( const string &fullName );
52 Symbol( const Symbol &symbol )
53 : namespaceScopes( symbol.namespaceScopes )
54 , name( symbol.name )
55 , isTargetObjectModule( true )
56 {
57 }
58 Symbol()
59 : isTargetObjectModule( true )
60 {
61 }
62
63 virtual const NamespaceScopes &GetNamespaceScopes() const
64 {
65 return namespaceScopes;
66 }
67 const string &GetName() const
68 {
69 return name;
70 }
71 std::string GetFullName() const;
72
73 // シンボル比較
74 bool IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const;
75 bool IsEqualSymbol( const Symbol &symbol ) const;
76 bool IsEqualSymbol( const char *fullName ) const;
77 bool IsEqualSymbol( const string &fullName ) const
78 {
79 return IsEqualSymbol( fullName.c_str() );
80 }
81};
Note: See TracBrowser for help on using the repository browser.