Changeset 632 in dev for trunk/ab5.0/abdev/compiler_x86


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

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

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

Location:
trunk/ab5.0/abdev/compiler_x86
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp

    r603 r632  
    289289    }
    290290
    291     trace_for_sourcecodestep( "★★★ " << pUserProc->GetFullName() << "のコンパイルを開始" );
     291    trace_for_sourcecodestep( "★★★ " << FormatEscapeSequenceStringToDefaultString( pUserProc->GetFullName() ) << "のコンパイルを開始" );
    292292
    293293    pUserProc->CompleteCompile();
     
    330330    if( !pUserProc->IsAutoGeneration() )
    331331    {
    332         cp=pUserProc->GetCodePos();
     332        cp=pUserProc->GetSourceCodePosition().GetPos();
    333333        for(;;cp++){
    334334            if(IsCommandDelimitation(basbuf[cp])) break;
  • trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp

    r603 r632  
    540540            }
    541541
    542             int typeDefIndex = compiler.GetObjectModule().meta.GetTypeDefs().GetIndex(
     542            const TypeDef *pTypeDef = compiler.GetObjectModule().meta.GetTypeDefs().Find(
    543543                LexicalAnalyzer::FullNameToSymbol( VarName )
    544544            );
    545             if( typeDefIndex != -1 ){
     545            if( pTypeDef )
     546            {
    546547                // TypeDef後の型名だったとき
    547                 lstrcpy( VarName, compiler.GetObjectModule().meta.GetTypeDefs()[typeDefIndex].GetBaseName().c_str() );
     548                lstrcpy( VarName, pTypeDef->GetBaseName().c_str() );
    548549            }
    549550
  • trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp

    r622 r632  
    576576
    577577            if(!hLib){
    578                 compiler.errorMessenger.Output(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetCodePos());
     578                compiler.errorMessenger.Output(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetSourceCodePosition().GetPos());
    579579            }
    580580        }
     
    583583            if(!GetProcAddress(hLib,pDllProc->GetAlias().c_str())){
    584584                FreeLibrary(hLib);
    585                 compiler.errorMessenger.Output(-107,pDllProc->GetAlias(),pDllProc->GetCodePos());
     585                compiler.errorMessenger.Output(-107,pDllProc->GetAlias(),pDllProc->GetSourceCodePosition().GetPos());
    586586            }
    587587            FreeLibrary(hLib);
  • trunk/ab5.0/abdev/compiler_x86/NumOpe.cpp

    r600 r632  
    10321032                        isNothing_stack[sp] = true;
    10331033
    1034                         type_stack[sp] = DEF_OBJECT;
    10351034                        if( baseType.IsObject() ){
     1035                            type_stack[sp] = DEF_OBJECT;
    10361036                            index_stack[sp] = baseType.GetIndex();
    10371037                        }
    10381038                        else{
    1039                             index_stack[sp] = (LONG_PTR)compiler.GetObjectModule().meta.GetClasses().GetObjectClassPtr();
     1039                            type_stack[sp] = baseType.GetBasicType();
     1040                            index_stack[sp] = baseType.GetIndex();
    10401041                        }
    10411042
Note: See TracChangeset for help on using the changeset viewer.