Changeset 128 in dev for BasicCompiler_Common/Type.h


Ignore:
Timestamp:
May 18, 2007, 4:42:36 AM (17 years ago)
Author:
dai_9181
Message:

Blittable型を導入した。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Type.h

    r114 r128  
    130130    static bool StringToType( const string &typeName, Type &type );
    131131};
     132
     133class BlittableType
     134{
     135    Type basicType;
     136    CClass *pClass;
     137public:
     138    BlittableType( const Type &basicType, CClass *pClass )
     139        : basicType( basicType )
     140        , pClass( pClass )
     141    {
     142    }
     143    BlittableType(){}
     144    const Type &GetBasicType() const
     145    {
     146        return basicType;
     147    }
     148    const CClass *GetClassPtr() const
     149    {
     150        return pClass;
     151    }
     152    const string GetCreateStaticMethodFullName() const;
     153};
     154class BlittableTypes : public vector<BlittableType>
     155{
     156public:
     157    bool IsExist( Type type ) const
     158    {
     159        const BlittableTypes &blittableTypes = *this;
     160        BOOST_FOREACH( const BlittableType &blittableType, blittableTypes ){
     161            if( blittableType.GetBasicType().Equals( type ) ){
     162                return true;
     163            }
     164        }
     165        return false;
     166    }
     167    const BlittableType &Find( const Type &type ) const
     168    {
     169        const BlittableTypes &blittableTypes = *this;
     170        BOOST_FOREACH( const BlittableType &blittableType, blittableTypes ){
     171            if( blittableType.GetBasicType().Equals( type ) ){
     172                return blittableType;
     173            }
     174        }
     175        throw "Blittable型ではない";
     176    }
     177    const CClass *GetClassPtr( const Type &type ) const
     178    {
     179        const BlittableTypes &blittableTypes = *this;
     180        BOOST_FOREACH( const BlittableType &blittableType, blittableTypes ){
     181            if( blittableType.GetBasicType().Equals( type ) ){
     182                return blittableType.GetClassPtr();
     183            }
     184        }
     185        return NULL;
     186    }
     187    const CClass &GetClass( const Type &type ) const
     188    {
     189        return *GetClassPtr( type );
     190    }
     191};
Note: See TracChangeset for help on using the changeset viewer.