Changeset 266 in dev for trunk/abdev/BasicCompiler_Common


Ignore:
Timestamp:
Aug 7, 2007, 4:14:06 AM (17 years ago)
Author:
dai_9181
Message:

BasicSourceのシリアライズがうまくいっていない

Location:
trunk/abdev/BasicCompiler_Common
Files:
2 added
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/BasicCompiler.cpp

    r232 r266  
    44
    55#include <Program.h>
     6#include <Compiler.h>
    67
    78#include "BasicCompiler.h"
     
    306307}
    307308void MakeMessageText(char *buffer,char *msg,int flag){
    308     extern BOOL bDll;
    309309    char temporary[MAX_PATH];
    310310    if(bClipCompileView){
     
    321321        //日本語
    322322        if(flag==0){
    323             if(bDll) sprintf(buffer,"DLLファイル \"%s\"     [ %s ]",temporary,msg);
     323            if(compiler.IsDll())
     324            {
     325                sprintf(buffer,"DLLファイル \"%s\"     [ %s ]",temporary,msg);
     326            }
    324327            else sprintf(buffer,"実行ファイル \"%s\"     [ %s ]",temporary,msg);
    325328        }
     
    329332        //英語
    330333        if(flag==0){
    331             if(bDll) sprintf(buffer,"DLL file \"%s\"     [ %s ]",temporary,msg);
     334            if(compiler.IsDll()) sprintf(buffer,"DLL file \"%s\"     [ %s ]",temporary,msg);
    332335            else sprintf(buffer,"Execution file \"%s\"     [ %s ]",temporary,msg);
    333336        }
     
    563566    //_Test();
    564567
    565     //MessageBox(0,"starting compiler/debugger","ActiveBasic",MB_OK);
     568    MessageBox(0,"starting compiler/debugger","ActiveBasic",MB_OK);
    566569    trace( "Start ActiveBasic Compiler!" );
    567570
     
    608611
    609612    BOOL bFromEditor=0;
    610     bDll=0;
    611613    OutputFileName[0]=0;
    612614    if(lpCmdLine[i]&&lpCmdLine[i]!='/'){
     
    711713
    712714        //DLL生成
    713         else if(lstrcmp(temp2,"dll")==0) bDll=1;
     715        else if(lstrcmp(temp2,"dll")==0)
     716        {
     717            compiler.SetTargetModuleType( Compiler::Dll );
     718        }
     719
     720        // StaticLibrary生成
     721        else if( lstrcmp( temp2, "static_library" ) ==0 )
     722        {
     723            compiler.SetTargetModuleType( Compiler::StaticLibrary );
     724        }
    714725
    715726        //Unicode
     
    752763    GetFullPath(szIncludeDir,(Jenga::Common::Environment::GetAppDir()+"\\").c_str());
    753764
    754     if(bDll){
     765    if( compiler.IsDll() ){
    755766        //DLLファイル名を取得
    756767        _splitpath(OutputFileName,NULL,NULL,szDllName,temporary);
  • trunk/abdev/BasicCompiler_Common/BasicCompiler.h

    r263 r266  
    2222BOOL bStrict;
    2323DWORD ImageBase;
    24 INCLUDEFILEINFO IncludeFileInfo;
    2524
    2625ERRORINFO *pErrorInfo;
     
    6867int cp;
    6968
    70 BOOL bDll;
    7169int typeOfPtrChar = MAKE_PTR_TYPE(DEF_SBYTE,1);
    7270int typeOfPtrUChar = MAKE_PTR_TYPE(DEF_BYTE,1);
  • trunk/abdev/BasicCompiler_Common/BreakPoint.cpp

    r263 r266  
    22
    33#include <jenga/include/common/Environment.h>
    4 #include <jenga/include/smoothie/Source.h>
    54
     5#include <Source.h>
    66#include <Compiler.h>
    77
  • trunk/abdev/BasicCompiler_Common/Debug.cpp

    r265 r266  
    350350    char temporary[1024];
    351351
    352     extern BOOL bDll;
    353352    char ExeFilePathForDll[MAX_PATH];
    354     if(bDll){
     353    if( compiler.IsDll() ){
    355354        //DLLをデバッグする場合
    356355        extern char szDebugExeForDll[1024];
     
    428427        memset(&si,0,sizeof(STARTUPINFO));
    429428        si.cb=sizeof(STARTUPINFO);
    430         if(!bDll){
     429        if( !compiler.IsDll() ){
    431430            //EXEファイルをデバッグ
    432431            CreateProcess(OutputFileName,szDebugCmdLine,NULL,NULL,0,NORMAL_PRIORITY_CLASS|DEBUG_ONLY_THIS_PROCESS,NULL,NULL,&si,&pi);
  • trunk/abdev/BasicCompiler_Common/DebugMiddleFile.cpp

    r265 r266  
    8484
    8585        // サイズ
    86         *(long *)(buffer+i2) = textString.size();
     86        *(long *)(buffer+i2) = (long)textString.size();
    8787        i2+=sizeof(long);
    8888
     
    9999        // バッファ
    100100        memcpy( buffer+i2, textString.c_str(), textString.size() );
    101         i2 += textString.size();
     101        i2 += (int)textString.size();
    102102    }
    103103
     
    111111        i2+=lstrlen(buffer+i2)+1;
    112112    }
    113     buffer[i2++]=0;
    114113    for(i3=0;;i3++){
    115114        buffer[i2++]=(char)IncludeFileInfo.LineOfFile[i3];
     
    122121        }
    123122    }
    124 
    125     //ソースコード
    126     {
    127         //バッファが足りない場合は再確保
    128         int bufferLen = lstrlen( basbuf );
    129         if(BufferSize<i2+(int)bufferLen+32768){
    130             while( BufferSize<i2+(int)bufferLen+32768 )
    131             {
    132                 BufferSize+=32768;
    133             }
    134 
    135             buffer=(char *)HeapReAlloc(hHeap,0,buffer,BufferSize);
    136         }
    137     }
    138     lstrcpy(buffer+i2,basbuf);
    139     i2+=lstrlen( buffer + i2 )+1;
    140123
    141124
     
    246229        if(_IncludeFileInfo.LineOfFile[i3]==-1) break;
    247230    }
    248 
    249     //ソースコード
    250     i2++;
    251     source.SetBuffer( buffer + i2 );
    252     i2+=lstrlen(buffer+i2)+1;
    253231
    254232    //コードと行番号の関係
     
    416394    IncludeFileInfo=this->_IncludeFileInfo;
    417395
    418     //ソースコード
    419     Smoothie::Lexical::source = source;
    420 
    421396    //コードと行番号の関係
    422397    extern SourceLines oldSourceLines;
  • trunk/abdev/BasicCompiler_Common/DebugSection.h

    r265 r266  
    11#pragma once
    22
    3 #include <jenga/include/smoothie/Source.h>
    4 
     3#include <Source.h>
    54#include <Compiler.h>
    65
     
    3130    //インクルード情報
    3231    INCLUDEFILEINFO _IncludeFileInfo;
    33 
    34     //ソースコード
    35     BasicSource source;
    3632
    3733    //コードと行番号の関係
  • trunk/abdev/BasicCompiler_Common/Enum.cpp

    r215 r266  
    115115    iEnumParentNum=0;
    116116
    117     const char *source = Smoothie::Lexical::source.GetBuffer();
     117    const char *source = compiler.GetObjectModule().source.GetBuffer();
    118118
    119119    // 名前空間管理
  • trunk/abdev/BasicCompiler_Common/MakeExe.cpp

    r265 r266  
    2424
    2525    //最後尾に貼り付け
    26     Smoothie::Lexical::source.Addition( temp );
     26    compiler.GetObjectModule().source.Addition( temp );
    2727
    2828    HeapDefaultFree(temp);
     
    3838    char temp2[MAX_PATH];
    3939
     40    // 開始時刻を記録
     41    DWORD beforeTickCount = GetTickCount();
     42
    4043    //プログレスバーの設定
    4144    PostMessage(GetDlgItem(hMainDlg,IDC_PROGRESS),PBM_SETRANGE,0,MAKELPARAM(0,6));
     
    5457    //プログラムをファイルから読み込む
    5558    extern char SourceFileName[MAX_PATH];
    56     if( !Smoothie::Lexical::source.ReadFile( SourceFileName ) ){
     59    if( !compiler.GetObjectModule().source.ReadFile( SourceFileName ) ){
    5760        SetError(201,SourceFileName,-1);
    5861        goto EndCompile;
     
    6164    //イメージベースの設定
    6265    extern DWORD ImageBase;
    63     extern BOOL bDll;
    64     if(bDll) ImageBase=0x10000000;
     66    if(compiler.IsDll()) ImageBase=0x10000000;
    6567    else ImageBase=0x00400000;
    6668
     
    179181        if(bError==0){
    180182            //"コンパイルは正常に完了しました(エラー:%d、警告:%d)"
    181             sprintf(temp2,STRING_COMPILE_SUCCESS,ErrorNum-CompileMsgNum-WarningNum,WarningNum);
     183            sprintf(temp2,
     184                STRING_COMPILE_SUCCESS,
     185                ErrorNum-CompileMsgNum-WarningNum,
     186                WarningNum,
     187                ((double)(GetTickCount() - beforeTickCount))/1000
     188            );
    182189        }
    183190        else{
  • trunk/abdev/BasicCompiler_Common/PESchedule.cpp

    r253 r266  
    11#include "stdafx.h"
     2
     3#include <Compiler.h>
    24
    35#include "../BasicCompiler_Common/common.h"
     
    5557
    5658void CReloc::AddSchedule_CodeSection(DWORD addr){
    57     extern BOOL bDll;
    58     if(!bDll) return;
     59    if( !compiler.IsDll() ) return;
    5960
    6061    codeSectionAddresses.push_back( addr );
    6162}
    6263void CReloc::AddSchedule_DataSection(DWORD addr){
    63     extern BOOL bDll;
    64     if(!bDll) return;
     64    if( !compiler.IsDll() ) return;
    6565
    6666    dataSectionAddresses.push_back( addr );
     
    6868
    6969void CReloc::__add(DWORD addr){
    70     extern BOOL bDll;
    71     if(!bDll) return;
     70    if( !compiler.IsDll() ) return;
    7271
    7372    BOOL sw;
  • trunk/abdev/BasicCompiler_Common/StrOperation.cpp

    r206 r266  
    22
    33#include <jenga/include/smoothie/LexicalAnalysis.h>
    4 #include <jenga/include/smoothie/Source.h>
     4
     5#include <Source.h>
    56
    67#include "../BasicCompiler_Common/common.h"
  • trunk/abdev/BasicCompiler_Common/common_msg_jpn.h

    r232 r266  
    3232
    3333#define STRING_COMPILE_STOP                 "コンパイルはユーザーにより中断されました。"
    34 #define STRING_COMPILE_SUCCESS              "コンパイルは正常に完了しました(エラー:%d、警告:%d)。"
     34#define STRING_COMPILE_SUCCESS              "コンパイルは正常に完了しました(エラー:%d、警告:%d、所要時間:%.2fsec)。"
    3535#define STRING_COMPILE_ERROR                "コンパイルは中断されました(エラー:%d、警告:%d)。"
    3636
  • trunk/abdev/BasicCompiler_Common/include/Class.h

    r232 r266  
    66#include <Method.h>
    77#include <Member.h>
     8#include <Source.h>
    89
    910class UserProc;
  • trunk/abdev/BasicCompiler_Common/include/Compiler.h

    r265 r266  
    2222        : pObjectModule( new ObjectModule )
    2323        , pNowObjectModule( pObjectModule )
     24        , targetModuleType( Exe )
    2425    {
    2526    }
     
    4041    Linker linker;
    4142
     43    // オブジェクトモジュール
    4244    ObjectModule &GetObjectModule()
    4345    {
     
    4951    }
    5052
     53
     54    // ターゲット
     55    enum TargetModuleType
     56    {
     57        Exe,
     58        Dll,
     59        StaticLibrary,
     60    };
     61
     62    TargetModuleType targetModuleType;
     63
     64    bool IsExe() const
     65    {
     66        if( targetModuleType == Exe )
     67        {
     68            return true;
     69        }
     70        return false;
     71    }
     72    bool IsDll() const
     73    {
     74        if( targetModuleType == Dll )
     75        {
     76            return true;
     77        }
     78        return false;
     79    }
     80    bool IsStaticLibrary() const
     81    {
     82        if( targetModuleType == StaticLibrary )
     83        {
     84            return true;
     85        }
     86        return false;
     87    }
     88    void SetTargetModuleType( TargetModuleType targetModuleType )
     89    {
     90        this->targetModuleType = targetModuleType;
     91    }
     92
     93
     94
    5195    static bool StringToType( const std::string &typeName, Type &type );
    5296    static const std::string TypeToString( const Type &type );
  • trunk/abdev/BasicCompiler_Common/include/Linker.h

    r263 r266  
    1212    // データテーブル
    1313    DataTable dataTable;
     14
     15    // ソースコード
     16    BasicSource source;
    1417
    1518    // XMLシリアライズ用
     
    2730        ar & BOOST_SERIALIZATION_NVP( globalNativeCode );
    2831        ar & BOOST_SERIALIZATION_NVP( dataTable );
     32        ar & BOOST_SERIALIZATION_NVP( source );
    2933    }
    3034};
  • trunk/abdev/BasicCompiler_Common/include/Member.h

    r206 r266  
    33#include <string>
    44#include <vector>
    5 
    6 #include <jenga/include/smoothie/Source.h>
    75
    86#include <option.h>
  • trunk/abdev/BasicCompiler_Common/include/Procedure.h

    r259 r266  
    11#pragma once
    2 
    3 #include <jenga/include/smoothie/Source.h>
    42
    53#include <Hashmap.h>
     
    1210#include <Variable.h>
    1311#include <CodeGenerator.h>
     12#include <Source.h>
    1413
    1514class CClass;
     
    4342
    4443    // XMLシリアライズ用
    45 private:
    4644private:
    4745    friend class boost::serialization::access;
  • trunk/abdev/BasicCompiler_Common/src/Class.cpp

    r265 r266  
    22
    33#include <jenga/include/smoothie/Smoothie.h>
    4 #include <jenga/include/smoothie/Source.h>
    54#include <jenga/include/smoothie/SmoothieException.h>
    65#include <jenga/include/smoothie/LexicalAnalysis.h>
    76
     7#include <Source.h>
    88#include <Class.h>
    99#include <Compiler.h>
Note: See TracChangeset for help on using the changeset viewer.