source: dev/trunk/ab5.0/abdev/ab_common/include/Lexical/Template.h@ 638

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
3class CClass;
4
5namespace ActiveBasic{ namespace Common{ namespace Lexical{
6
7
8class ExpandedTemplateClass
9{
10 CClass *pClass;
11 Types actualTypes;
12
13 // XMLシリアライズ用
14private:
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
23public:
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
50typedef std::vector<ExpandedTemplateClass *> ExpandedTemplateClasses;
51
52
53}}}
Note: See TracBrowser for help on using the repository browser.