Ignore:
Timestamp:
Jun 5, 2008, 10:04:39 PM (16 years ago)
Author:
dai_9181
Message:

ジェネリッククラスの型パラメータに値型が指定されたときに限り、テンプレート展開を行うようにした。

TODO: libファイルを跨ってテンプレート展開ができていないため、ソースコード管理部分に手を加える必要あり。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/ab_common/src/Lexical/Class.cpp

    r603 r632  
    11#include "stdafx.h"
     2
     3
     4CClass::CClass( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const std::string &name )
     5    : ClassPrototype( namespaceScopes, name )
     6    , importedNamespaces( importedNamespaces )
     7    , classType( Class )
     8    , pSuperClass( NULL )
     9    , blittableType( Type() )
     10    , isReady( false )
     11    , fixedAlignment( 0 )
     12    , ConstructorMemberSubIndex( -1 )
     13    , DestructorMemberSubIndex( -1 )
     14    , vtblNum( 0 )
     15    , vtbl_offset( -1 )
     16    , comVtblOffset( 0 )
     17    , isCompilingConstructor( false )
     18    , isCompilingDestructor( false )
     19    , cacheSize( 0 )
     20{
     21}
     22
     23CClass::CClass( const NamespaceScopes &namespaceScopes,
     24    const NamespaceScopesCollection &importedNamespaces,
     25    const std::string &name,
     26    ClassType classType,
     27    const GenericTypes &formalGenericTypes,
     28    const Types &superClassActualTypeParameters,
     29    int ConstructorMemberSubIndex,
     30    int DestructorMemberSubIndex,
     31    int vtblNum,
     32    int fixedAlignment )
     33    : ClassPrototype( namespaceScopes, name )
     34    , importedNamespaces( importedNamespaces )
     35    , classType( classType )
     36    , formalGenericTypes( formalGenericTypes )
     37    , pSuperClass( NULL )
     38    , superClassActualTypeParameters( superClassActualTypeParameters )
     39    , blittableType( Type() )
     40    , isReady( false )
     41    , ConstructorMemberSubIndex( ConstructorMemberSubIndex )
     42    , DestructorMemberSubIndex( DestructorMemberSubIndex )
     43    , vtblNum( vtblNum )
     44    , fixedAlignment( fixedAlignment )
     45    , vtbl_offset( -1 )
     46    , comVtblOffset( 0 )
     47    , isCompilingConstructor( false )
     48    , isCompilingDestructor( false )
     49    , cacheSize( 0 )
     50{
     51}
     52
     53CClass::CClass()
     54    : ClassPrototype()
     55    , importedNamespaces()
     56    , classType()
     57    , pSuperClass( NULL )
     58    , blittableType( Type() )
     59    , isReady( false )
     60    , fixedAlignment( 0 )
     61    , ConstructorMemberSubIndex( -1 )
     62    , DestructorMemberSubIndex( -1 )
     63    , vtblNum( 0 )
     64    , vtbl_offset( -1 )
     65    , comVtblOffset( 0 )
     66    , isCompilingConstructor( false )
     67    , isCompilingDestructor( false )
     68    , cacheSize( 0 )
     69{
     70}
     71
     72CClass::~CClass()
     73{
     74    // 動的メンバ
     75    BOOST_FOREACH( Member *member, dynamicMembers )
     76    {
     77        delete member;
     78    }
     79
     80    // 静的メンバ
     81    BOOST_FOREACH( Member *member, staticMembers )
     82    {
     83        delete member;
     84    }
     85
     86    // インターフェイス
     87    BOOST_FOREACH( ::Interface *pInterface, interfaces )
     88    {
     89        delete pInterface;
     90    }
     91
     92    // テンプレート展開済みのクラス
     93    BOOST_FOREACH( ExpandedTemplateClass *pExpandedTemplateClass, expandedTemplateClasses )
     94    {
     95        delete pExpandedTemplateClass;
     96    }
     97}
    298
    399void CClass::Using() const
Note: See TracChangeset for help on using the changeset viewer.