Changeset 412 in dev


Ignore:
Timestamp:
Mar 3, 2008, 10:11:34 PM (17 years ago)
Author:
dai_9181
Message:

CClass::GetStaticDefiningStringAsMemberOffsetsメソッドを追加。
エラーコード142を追加。

Location:
trunk/abdev
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/NumOpe.cpp

    r403 r412  
    407407
    408408    if(lstrcmpi(termFull,"This")==0 && isProcedureCallOnly == false ){
     409        if( compiler.pCompilingClass == NULL )
     410        {
     411            SetError(142,NULL,cp);
     412            return false;
     413        }
     414
    409415        //Thisオブジェクト
    410416        resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
  • trunk/abdev/BasicCompiler_Common/NumOpe_GetType.cpp

    r402 r412  
    438438
    439439    if(lstrcmpi(termFull,"This")==0){
     440        if( compiler.pCompilingClass == NULL )
     441        {
     442            return false;
     443        }
     444
    440445        //Thisオブジェクト
    441446        resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
  • trunk/abdev/BasicCompiler_Common/error.cpp

    r409 r412  
    213213    if(num==140) lstrcpy(msg,"Align修飾子を構造体以外の型に指定することはできません。");
    214214    if(num==141) lstrcpy(msg,"Blittable修飾子をクラス以外の型に指定することはできません。");
     215    if(num==142) lstrcpy(msg,"不正なThis参照です。");
    215216
    216217    //Enum関連
  • trunk/abdev/BasicCompiler_Common/include/Class.h

    r409 r412  
    564564    std::string GetStaticDefiningStringAsMemberNames() const;
    565565    std::string GetStaticDefiningStringAsMemberTypeInfoNames() const;
     566    std::string GetStaticDefiningStringAsMemberOffsets() const;
    566567
    567568
  • trunk/abdev/BasicCompiler_Common/src/Class.cpp

    r409 r412  
    13821382                sprintf(
    13831383                    temporary,
    1384                     "tempType.SetMembers([%s],[%s],%d)",
     1384                    "tempType.SetMembers([%s],[%s],[%s],%d)",
    13851385                    objClass.GetStaticDefiningStringAsMemberNames().c_str(),
    13861386                    objClass.GetStaticDefiningStringAsMemberTypeInfoNames().c_str(),
     1387                    objClass.GetStaticDefiningStringAsMemberOffsets().c_str(),
    13871388                    objClass.GetDynamicMembers().size()
    13881389                );
     
    15551556    return result;
    15561557}
    1557 
     1558std::string CClass::GetStaticDefiningStringAsMemberOffsets() const
     1559{
     1560    std::string result;
     1561
     1562    BOOST_FOREACH( const CMember *pMember, dynamicMembers )
     1563    {
     1564        if( result.size() )
     1565        {
     1566            result += ",";
     1567        }
     1568
     1569        int offset = this->GetMemberOffset( pMember->GetName().c_str() );
     1570
     1571        char temporary[255];
     1572        itoa( offset, temporary, 16 );
     1573
     1574        result += (std::string)"&H" + temporary;
     1575    }
     1576
     1577    return result;
     1578}
Note: See TracChangeset for help on using the changeset viewer.