Ignore:
Timestamp:
Jun 11, 2008, 10:10:26 PM (16 years ago)
Author:
dai_9181
Message:

リンカの依存関係解決モジュールを製作中

Location:
trunk/ab5.0/abdev/BasicCompiler_Common
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/BasicCompiler_Common/BreakPoint.cpp

    r636 r637  
    104104            int i3;
    105105            for(i3=0;i3<(int)oldSourceLines.size()-1;i3++){
    106                 if(oldSourceLines[i3].GetSourceCodePos()==tempCp) break;
     106                if(oldSourceLines[i3].GetSourceCodePosition().GetPos()==tempCp) break;
    107107            }
    108108            if(i3==oldSourceLines.size()-1){
  • trunk/ab5.0/abdev/BasicCompiler_Common/Compile.cpp

    r636 r637  
    747747            }
    748748
    749             compiler.codeGenerator.NextSourceLine( compiler.GetCurrentRelationalObjectModuleIndexForSource() );
     749            compiler.codeGenerator.NextSourceLine( SourceCodePosition( compiler.GetCurrentRelationalObjectModuleIndexForSource(), cp ) );
    750750
    751751            if(Command[0]==1){
  • trunk/ab5.0/abdev/BasicCompiler_Common/Debug.cpp

    r636 r637  
    121121            int i3;
    122122            for(i3=0;i3<(int)oldSourceLines.size()-1;i3++){
    123                 if(oldSourceLines[i3].GetSourceCodePos()==tempCp) break;
     123                if(oldSourceLines[i3].GetSourceCodePosition().GetPos()==tempCp) break;
    124124            }
    125125            if(i3==oldSourceLines.size()-1){
  • trunk/ab5.0/abdev/BasicCompiler_Common/DebugMiddleFile.cpp

    r636 r637  
    141141    BOOST_FOREACH( const SourceLine &sourceLine, oldSourceLines )
    142142    {
    143         *(long *)(buffer+i2) = sourceLine.GetLineNum();
    144         i2+=sizeof(long);
    145 
    146143        *(long *)(buffer+i2) = sourceLine.GetNativeCodePos();
    147144        i2+=sizeof(long);
    148145
    149         *(long *)(buffer+i2) = sourceLine.GetRelationalObjectModuleIndex();
    150         i2+=sizeof(long);
    151 
    152         *(long *)(buffer+i2) = sourceLine.GetSourceCodePos();
    153         i2+=sizeof(long);
    154 
    155146        *(long *)(buffer+i2) = sourceLine.GetCodeType();
     147        i2+=sizeof(long);
     148
     149        *(long *)(buffer+i2) = sourceLine.GetSourceCodePosition().GetRelationalObjectModuleIndex();
     150        i2+=sizeof(long);
     151
     152        *(long *)(buffer+i2) = sourceLine.GetSourceCodePosition().GetPos();
    156153        i2+=sizeof(long);
    157154
     
    245242    i2+=sizeof(long);
    246243    for(i3=0;i3<maxLineInfoNum;i3++){
    247         int lineNum = *(long *)(buffer+i2);
    248         i2+=sizeof(long);
    249 
    250244        int nativeCodePos = *(long *)(buffer+i2);
    251245        i2+=sizeof(long);
    252246
    253         int sourceIndex = *(long *)(buffer+i2);
     247        DWORD sourceLineType = *(DWORD *)(buffer+i2);
     248        i2+=sizeof(long);
     249
     250        int relationalObjectModuleIndex = *(long *)(buffer+i2);
    254251        i2+=sizeof(long);
    255252
    256253        int sourceCodePos = *(long *)(buffer+i2);
    257         i2+=sizeof(long);
    258 
    259         DWORD sourceLineType = *(DWORD *)(buffer+i2);
    260254        i2+=sizeof(long);
    261255
    262256        _oldSourceLines.push_back(
    263257            SourceLine(
    264                 lineNum,
    265258                nativeCodePos,
    266                 sourceIndex,
    267                 sourceCodePos,
    268                 sourceLineType
     259                sourceLineType,
     260                SourceCodePosition( relationalObjectModuleIndex, sourceCodePos )
    269261            )
    270262        );
  • trunk/ab5.0/abdev/BasicCompiler_Common/VarList.cpp

    r636 r637  
    620620        else
    621621        {
    622             pobj_dti->lpdwCp[i3]=oldSourceLines[i2].GetSourceCodePos();
    623             pobj_dti->relationalObjectModuleIndexes[i3]=oldSourceLines[i2].GetRelationalObjectModuleIndex();
     622            pobj_dti->lpdwCp[i3]=oldSourceLines[i2].GetSourceCodePosition().GetPos();
     623            pobj_dti->relationalObjectModuleIndexes[i3]=oldSourceLines[i2].GetSourceCodePosition().GetRelationalObjectModuleIndex();
    624624        }
    625625    }
  • trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp

    r632 r637  
    962962
    963963    Variable *pVar = new Variable(
    964         compiler.GetNamespaceSupporter().GetLivingNamespaceScopes(),
    965         name,
     964        Symbol( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes(), name ),
    966965        type,
    967966        isConst,
  • trunk/ab5.0/abdev/BasicCompiler_Common/include/CodeGenerator.h

    r597 r637  
    241241    }
    242242
    243     void NextSourceLine( int currentSourceIndex )
    244     {
    245         extern int cp;
    246         pNativeCode->NextSourceLine( currentSourceIndex, cp );
     243    void NextSourceLine( const SourceCodePosition &sourceCodePosition )
     244    {
     245        pNativeCode->NextSourceLine( sourceCodePosition );
    247246    }
    248247
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp

    r636 r637  
    5050
    5151        // メタ情報
    52         this->GetObjectModule().StaticLink( *pStaticLibrary );
     52        this->GetObjectModule().StaticLink( *pStaticLibrary, this->IsSll() );
    5353    }
    5454}
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp

    r632 r637  
    117117
    118118            //クラスを追加
    119             CClass *pClass = new CClass( namespaceScopes, importedNamespaces, temporary );
     119            CClass *pClass = new CClass( Symbol( namespaceScopes, temporary ), importedNamespaces );
    120120            if( classes.IsExist( pClass ) )
    121121            {
     
    575575        //関数ハッシュへ登録
    576576        UserProc *pUserProc = new UserProc(
    577             NamespaceScopes(),
     577            Symbol( NamespaceScopes(), methodName ),
    578578            NamespaceScopesCollection(),
    579             methodName,
    580579            Procedure::Function,
    581580            false,
     
    14341433    // クラスをコピー
    14351434    CClass *pNewClass = new CClass(
    1436         _class.GetNamespaceScopes(),
     1435        _class,
    14371436        _class.GetImportedNamespaces(),
    1438         _class.GetName(),
    14391437        _class.GetClassType(),
    14401438        _class.GetFormalGenericTypes(),
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Const.cpp

    r600 r637  
    7474
    7575        //定数を追加
    76         consts.Add( namespaceScopes, temporary, NextValue);
     76        consts.Add( Symbol( namespaceScopes, temporary ), NextValue);
    7777    }
    7878}
     
    178178                    if( StaticCalculation(false, expression, 0, &i64data, resultType) )
    179179                    {
    180                         consts.Add( namespaceScopes, name, i64data, resultType );
     180                        consts.Add( Symbol( namespaceScopes, name ), i64data, resultType );
    181181                    }
    182182                }
     
    185185                    // 定数マクロ
    186186                    const char *params = temporary + i2;
    187                     if( !constMacros.Add( namespaceScopes, name, params ) )
     187                    if( !constMacros.Add( Symbol( namespaceScopes, name ), params ) )
    188188                    {
    189189                        compiler.errorMessenger.Output( 1, NULL, i );
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Delegate.cpp

    r625 r637  
    115115            }
    116116
    117             delegates.Put( new Delegate( namespaceScopes, importedNamespaces, name, procKind, paramStr, returnTypeName, nowLine ) );
     117            delegates.Put( new Delegate( Symbol( namespaceScopes, name ), importedNamespaces, procKind, paramStr, returnTypeName, nowLine ) );
    118118        }
    119119    }
     
    131131        const Delegate &dg = *delegates.Iterator_GetNext();
    132132
    133         if( !dg.isTargetObjectModule )
     133        if( dg.IsExternal() )
    134134        {
    135135            // 静的リンクライブラリの場合は飛ばす(既にインスタンスが定義済みであるため)
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp

    r632 r637  
    156156
    157157    //ソースコードの位置
    158     userProc.SetSourceCodePosition( SourceCodePosition( compiler.GetObjectModule().GetName(), nowLine ) );
     158    userProc.SetSourceCodePosition( SourceCodePosition( compiler.GetCurrentRelationalObjectModuleIndexForSource(), nowLine ) );
    159159
    160160    //パラメータ
     
    286286
    287287    //ソースコードの位置
    288     pProc->SetSourceCodePosition( SourceCodePosition( compiler.GetObjectModule().GetName(), nowLine ) );
     288    pProc->SetSourceCodePosition( SourceCodePosition( compiler.GetCurrentRelationalObjectModuleIndexForSource(), nowLine ) );
    289289
    290290    //パラメータ
     
    615615    }
    616616
    617     UserProc *pUserProc = new UserProc( namespaceScopes, importedNamespaces, temporary, kind, isMacro, isCdecl, isExport );
     617    UserProc *pUserProc = new UserProc( Symbol( namespaceScopes, temporary ), importedNamespaces, kind, isMacro, isCdecl, isExport );
    618618    pUserProc->SetParentClass( pobj_c );
    619619
     
    737737
    738738    // オブジェクトを生成
    739     DllProc *pDllProc = new DllProc( namespaceScopes, procName, kind, isCdecl, dllFileName, alias );
     739    DllProc *pDllProc = new DllProc( Symbol( namespaceScopes, procName ), kind, isCdecl, dllFileName, alias );
    740740
    741741    // パラメータを解析
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_TypeDef.cpp

    r546 r637  
    7575    typeDefs.push_back(
    7676        TypeDef(
    77             namespaceScopes,
    78             temporary,
     77            Symbol( namespaceScopes, temporary ),
    7978            pTemp,
    8079            baseType
     
    176175                typeDefs.push_back(
    177176                    TypeDef(
    178                         namespaceScopes,
    179                         temporary,
     177                        Symbol( namespaceScopes, temporary ),
    180178                        "Long",
    181179                        baseType
  • trunk/ab5.0/abdev/BasicCompiler_Common/src/ProcedureGenerator.cpp

    r589 r637  
    2121    while(classes.Iterator_HasNext()){
    2222        CClass &objClass = *classes.Iterator_GetNext();
    23         if( objClass.isTargetObjectModule == false )
     23        if( objClass.IsExternal() )
    2424        {
    2525            // 静的リンクライブラリの場合は飛ばす(既にインスタンスが定義済みであるため)
Note: See TracChangeset for help on using the changeset viewer.