Ignore:
Timestamp:
Oct 21, 2007, 3:37:31 PM (17 years ago)
Author:
dai_9181
Message:

インターフェイス実装周りの仕様整備

Location:
trunk/abdev/BasicCompiler_Common/include
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/include/Class.h

    r350 r353  
    7777    mutable LONG_PTR vtblOffset;
    7878
     79    // XMLシリアライズ用
     80private:
     81    friend class boost::serialization::access;
     82    template<class Archive> void serialize(Archive& ar, const unsigned int version)
     83    {
     84        trace_for_serialize( "serializing - Interface" );
     85
     86        ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( DynamicMethodsPrototype );
     87        ar & boost::serialization::make_nvp("pInterfaceClass", const_cast<CClass *&>(pInterfaceClass) );
     88        ar & BOOST_SERIALIZATION_NVP( vtblOffset );
     89    }
     90
    7991public:
    8092    Interface( const CClass *pInterfaceClass );
     
    8395        , pInterfaceClass( objInterface.pInterfaceClass )
    8496        , vtblOffset( objInterface.vtblOffset )
     97    {
     98    }
     99    Interface()
    85100    {
    86101    }
     
    151166
    152167    // XMLシリアライズ用
    153     // TODO: xml未完成
    154168private:
    155169    friend class boost::serialization::access;
     
    165179        ar & BOOST_SERIALIZATION_NVP( superClassActualTypeParameters );
    166180        ar & BOOST_SERIALIZATION_NVP( blittableType );
    167         //ar & BOOST_SERIALIZATION_NVP( interfaces );
     181        ar & BOOST_SERIALIZATION_NVP( interfaces );
    168182        ar & BOOST_SERIALIZATION_NVP( dynamicMembers );
    169183        ar & BOOST_SERIALIZATION_NVP( staticMembers );
  • trunk/abdev/BasicCompiler_Common/include/Method.h

    r352 r353  
    11#pragma once
    2 
    3 #include <string>
    4 #include <vector>
    5 
    6 #include <option.h>
    7 #include <Program.h>
    8 #include <Class.h>
    9 #include <Procedure.h>
    10 
    11 #include <windows.h>
    122
    133using namespace std;
  • trunk/abdev/BasicCompiler_Common/include/Procedure.h

    r351 r353  
    1313
    1414class CClass;
     15class Interface;
    1516class CMethod;
    1617
     
    122123    // 親クラスと対応するメソッド
    123124    const CClass *pParentClass;
     125    const Interface *pInterface;
    124126    CMethod *pMethod;
    125127
     
    160162        ar & BOOST_SERIALIZATION_NVP( importedNamespaces );
    161163        ar & boost::serialization::make_nvp("pParentClass", const_cast<CClass *&>(pParentClass) );
     164        ar & boost::serialization::make_nvp("pInterface", const_cast<Interface *&>(pInterface) );
    162165        ar & BOOST_SERIALIZATION_NVP( pMethod );
    163166        ar & BOOST_SERIALIZATION_NVP( isMacro );
     
    182185        , importedNamespaces( importedNamespaces )
    183186        , pParentClass( NULL )
     187        , pInterface( NULL )
    184188        , pMethod( NULL )
    185189        , isMacro( isMacro )
     
    211215    {
    212216        if( this->GetParentClassPtr() == pUserProc->GetParentClassPtr() // 親クラスが等しい
     217            && this->pInterface == pUserProc->pInterface                // インターフェイスが等しい
    213218            && pUserProc->IsEqualSymbol( *this )                        // 名前空間及び名前が等しい
    214219            && this->Params().Equals( pUserProc->Params() )             // パラメータが等しい
     
    358363        return ( pParentClass == NULL );
    359364    }
     365    void SetInterface( const Interface *pInterface )
     366    {
     367        this->pInterface = pInterface;
     368    }
    360369    void SetMethod( CMethod *pMethod ){
    361370        this->pMethod = pMethod;
     
    417426    bool Insert( UserProc *pUserProc, int nowLine );
    418427
    419     UserProc *Add( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, char *buffer,int nowLine,bool isVirtual,CClass *pobj_c, bool isStatic);
     428    UserProc *AddUserProc( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, char *buffer,int nowLine,bool isVirtual,CClass *pobj_c, bool isStatic, char *interfaceName = NULL );
    420429
    421430    void EnumGlobalProcs( const char *simpleName, const char *localName, std::vector<const UserProc *> &subs );
  • trunk/abdev/BasicCompiler_Common/include/option.h

    r350 r353  
    1414    #define USE_TRACE
    1515#else
    16     //#define USE_TRACE
     16    #define USE_TRACE
    1717#endif
    1818
     
    2828
    2929    // ソースコードステップに関するログを生成する
    30     //#define USE_TRACE_FOR_SOURCECODESTEP
     30    #define USE_TRACE_FOR_SOURCECODESTEP
    3131#endif
    3232
  • trunk/abdev/BasicCompiler_Common/include/ver.h

    r350 r353  
    66// バージョン付加文字列
    77#ifdef _AMD64_
    8 #define VER_INFO        "(x64) (rev.356)"
     8#define VER_INFO        "(x64) (rev.357)"
    99#else
    10 #define VER_INFO        "(rev.356)"
     10#define VER_INFO        "(rev.357)"
    1111#endif
Note: See TracChangeset for help on using the changeset viewer.