Last change
on this file since 638 was 632, checked in by dai_9181, 16 years ago |
ジェネリッククラスの型パラメータに値型が指定されたときに限り、テンプレート展開を行うようにした。
TODO: libファイルを跨ってテンプレート展開ができていないため、ソースコード管理部分に手を加える必要あり。
|
File size:
922 bytes
|
Line | |
---|
1 | #pragma once
|
---|
2 |
|
---|
3 | class CClass;
|
---|
4 |
|
---|
5 | namespace ActiveBasic{ namespace Common{ namespace Lexical{
|
---|
6 |
|
---|
7 |
|
---|
8 | class ExpandedTemplateClass
|
---|
9 | {
|
---|
10 | CClass *pClass;
|
---|
11 | Types actualTypes;
|
---|
12 |
|
---|
13 | // XMLシリアライズ用
|
---|
14 | private:
|
---|
15 | friend class boost::serialization::access;
|
---|
16 | template<class Archive> void serialize(Archive& ar, const unsigned int version)
|
---|
17 | {
|
---|
18 | ar & BOOST_SERIALIZATION_NVP( pClass );
|
---|
19 | ar & BOOST_SERIALIZATION_NVP( actualTypes );
|
---|
20 | }
|
---|
21 |
|
---|
22 |
|
---|
23 | public:
|
---|
24 | ExpandedTemplateClass( CClass *pClass, const Types &actualTypes )
|
---|
25 | : pClass( pClass )
|
---|
26 | , actualTypes( actualTypes )
|
---|
27 | {
|
---|
28 | }
|
---|
29 | ExpandedTemplateClass()
|
---|
30 | : pClass( NULL )
|
---|
31 | {
|
---|
32 | }
|
---|
33 | ~ExpandedTemplateClass();
|
---|
34 |
|
---|
35 | const CClass &GetClass() const
|
---|
36 | {
|
---|
37 | return *pClass;
|
---|
38 | }
|
---|
39 | CClass &GetClass()
|
---|
40 | {
|
---|
41 | return *pClass;
|
---|
42 | }
|
---|
43 |
|
---|
44 | const Types &GetActualTypes() const
|
---|
45 | {
|
---|
46 | return actualTypes;
|
---|
47 | }
|
---|
48 | };
|
---|
49 |
|
---|
50 | typedef std::vector<ExpandedTemplateClass *> ExpandedTemplateClasses;
|
---|
51 |
|
---|
52 |
|
---|
53 | }}}
|
---|
Note:
See
TracBrowser
for help on using the repository browser.