Changeset 622 in dev for trunk


Ignore:
Timestamp:
May 21, 2008, 1:16:21 PM (16 years ago)
Author:
dai_9181
Message:

ResourceManagerクラスを追加。既存のリソース管理モジュールの置き換えを行った。

Location:
trunk/ab5.0
Files:
6 added
1 deleted
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/BasicCompiler_Common/BasicCompiler.h

    r541 r622  
    2525//リソース情報
    2626char ResourceFileName[MAX_PATH];
    27 RESOURCEDATAINFO *pCursorResourceInfo;
    28 int CursorResourceNum;
    29 RESOURCEDATAINFO *pBitmapResourceInfo;
    30 int BitmapResourceNum;
    31 RESOURCEDATAINFO *pIconResourceInfo;
    32 int IconResourceNum;
    33 char szManifestPath[MAX_PATH];
    34 int XPManiResourceNum;
    3527
    3628//デバッグ
  • trunk/ab5.0/abdev/BasicCompiler_Common/MakeExe.cpp

    r605 r622  
    237237    MakeExe();
    238238
    239     //リソース情報を解放
    240     extern RESOURCEDATAINFO *pCursorResourceInfo;
    241     extern RESOURCEDATAINFO *pIconResourceInfo;
    242     extern RESOURCEDATAINFO *pBitmapResourceInfo;
    243     HeapDefaultFree(pCursorResourceInfo);
    244     HeapDefaultFree(pBitmapResourceInfo);
    245     HeapDefaultFree(pIconResourceInfo);
    246 
    247239    //コンパイルダイアログのプログレスバーを上げる
    248240    StepCompileProgress();
  • trunk/ab5.0/abdev/BasicCompiler_Common/RSrcSection.cpp

    r467 r622  
    6161
    6262    //カーソルリソース
    63     extern RESOURCEDATAINFO *pCursorResourceInfo;
    64     extern int CursorResourceNum;
    6563    int CursorNum;
    6664    CURSORDIR *pCursorDir;
     
    6967    CursorNum=0;
    7068
    71     //ビットマップリソース
    72     extern RESOURCEDATAINFO *pBitmapResourceInfo;
    73     extern int BitmapResourceNum;
    74 
    7569    //アイコンリソース
    76     extern RESOURCEDATAINFO *pIconResourceInfo;
    77     extern int IconResourceNum;
    7870    int IconNum;
    7971    ICONDIR *pIconDir;
     
    8274    IconNum=0;
    8375
    84     //XPManifestリソース
    85     extern char szManifestPath[MAX_PATH];
    86     extern int XPManiResourceNum;
    87 
    8876    BufSize=8192*2;
    8977    buffer=(char *)HeapAlloc(hHeap,0,BufSize);
     
    9785    *pLen=0;
    9886
    99     if(CursorResourceNum==0&&
    100         BitmapResourceNum==0&&
    101         IconResourceNum==0&&
    102         XPManiResourceNum==0) return buffer;
     87    if( compiler.resourceManager.cursorResources.empty()
     88        && compiler.resourceManager.bitmapResources.empty()
     89        && compiler.resourceManager.iconResources.empty()
     90        && compiler.resourceManager.manifestFilePath.empty() )
     91    {
     92        return buffer;
     93    }
    10394
    10495    sw=0;
    10596
    10697    //カーソルの枚数を計算(CursorNumに格納)
    107     for(i3=0;i3<CursorResourceNum;i3++){
    108         hFile=CreateFile(pCursorResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
     98    for(i3=0;i3<compiler.resourceManager.cursorResources.size();i3++){
     99        hFile=CreateFile(compiler.resourceManager.cursorResources[i3].filepath.c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    109100        if(hFile==INVALID_HANDLE_VALUE){
    110             compiler.errorMessenger.Output(23,pCursorResourceInfo[i3].FileName,-1);
     101            compiler.errorMessenger.Output(23,compiler.resourceManager.cursorResources[i3].filepath.c_str(),-1);
    111102            sw=1;
    112103            continue;
     
    124115
    125116    //ビットマップのファイルの有無を確認
    126     for(i3=0;i3<BitmapResourceNum;i3++){
    127         hFile=CreateFile(pBitmapResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
     117    for(i3=0;i3<compiler.resourceManager.bitmapResources.size();i3++){
     118        hFile=CreateFile(compiler.resourceManager.bitmapResources[i3].filepath.c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    128119        if(hFile==INVALID_HANDLE_VALUE){
    129             compiler.errorMessenger.Output(23,pBitmapResourceInfo[i3].FileName,-1);
     120            compiler.errorMessenger.Output(23,compiler.resourceManager.bitmapResources[i3].filepath.c_str(),-1);
    130121            sw=1;
    131122            continue;
     
    135126
    136127    //アイコンの枚数を計算(IconNumに格納)
    137     for(i3=0;i3<IconResourceNum;i3++){
    138         hFile=CreateFile(pIconResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
     128    for(i3=0;i3<compiler.resourceManager.iconResources.size();i3++){
     129        hFile=CreateFile(compiler.resourceManager.iconResources[i3].filepath.c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    139130        if(hFile==INVALID_HANDLE_VALUE){
    140             compiler.errorMessenger.Output(23,pIconResourceInfo[i3].FileName,-1);
     131            compiler.errorMessenger.Output(23,compiler.resourceManager.iconResources[i3].filepath.c_str(),-1);
    141132            sw=1;
    142133            continue;
     
    161152    /////////////////////////
    162153    TypeNum=0;
    163     if(CursorResourceNum) TypeNum+=2;
    164     if(BitmapResourceNum) TypeNum++;
    165     if(IconResourceNum) TypeNum+=2;
    166     if(XPManiResourceNum) TypeNum++;
     154    if( !compiler.resourceManager.cursorResources.empty() ) TypeNum+=2;
     155    if( !compiler.resourceManager.bitmapResources.empty() ) TypeNum++;
     156    if( !compiler.resourceManager.iconResources.empty() ) TypeNum+=2;
     157    if( !compiler.resourceManager.manifestFilePath.empty() ) TypeNum++;
    167158
    168159    NextBase=sizeof(IMAGE_RESOURCE_DIRECTORY)+
     
    193184                sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)*CursorNum;
    194185    }
    195     if(BitmapResourceNum){
     186    if( !compiler.resourceManager.bitmapResources.empty() ){
    196187        //RT_BITMAP
    197188        ImgDirEntry.Name=(DWORD)(LONG_PTR)RT_BITMAP;
     
    202193        //2階層のサイズ
    203194        i6+=    sizeof(IMAGE_RESOURCE_DIRECTORY)+
    204                 sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)*BitmapResourceNum;
     195                sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY) * compiler.resourceManager.bitmapResources.size();
    205196    }
    206197    if(IconNum){
     
    215206                sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)*IconNum;
    216207    }
    217     if(CursorResourceNum){
     208    if( !compiler.resourceManager.cursorResources.empty() )
     209    {
    218210        //RT_GROUP_CURSOR
    219211        ImgDirEntry.Name=(DWORD)(LONG_PTR)RT_GROUP_CURSOR;
     
    226218                sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)*CursorNum;
    227219    }
    228     if(IconResourceNum){
     220    if( !compiler.resourceManager.iconResources.empty() )
     221    {
    229222        //RT_GROUP_ICON
    230223        ImgDirEntry.Name=(DWORD)(LONG_PTR)RT_GROUP_ICON;
     
    235228        //2階層のサイズ
    236229        i6+=    sizeof(IMAGE_RESOURCE_DIRECTORY)+
    237                 sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)*IconResourceNum;
    238     }
    239     if(XPManiResourceNum){
     230                sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY) * compiler.resourceManager.iconResources.size();
     231    }
     232    if( !compiler.resourceManager.manifestFilePath.empty() )
     233    {
    240234        //RT_MANIFEST
    241235        ImgDirEntry.Name=(DWORD)(LONG_PTR)RT_MANIFEST;
     
    246240        //2階層のサイズ
    247241        i6+=    sizeof(IMAGE_RESOURCE_DIRECTORY)+
    248                 sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)*XPManiResourceNum;
     242                sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY) * 1/*XPManiResourceNum*/ ;
    249243    }
    250244
     
    279273            sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))*CursorNum;
    280274    }
    281     if(BitmapResourceNum){
     275    if( !compiler.resourceManager.bitmapResources.empty() ){
    282276        //RT_BITMAP
    283277        ImgResDir.Characteristics=0;
     
    286280        ImgResDir.MinorVersion=0;
    287281        ImgResDir.NumberOfNamedEntries=0;
    288         ImgResDir.NumberOfIdEntries=BitmapResourceNum;
     282        ImgResDir.NumberOfIdEntries = compiler.resourceManager.bitmapResources.size();
    289283        memcpy(buffer+i2,&ImgResDir,sizeof(IMAGE_RESOURCE_DIRECTORY));
    290284        i2+=sizeof(IMAGE_RESOURCE_DIRECTORY);
    291285
    292         for(i3=0;i3<BitmapResourceNum;i3++){
    293             ImgDirEntry.Name=pBitmapResourceInfo[i3].dwId;
     286        for(i3=0;i3<compiler.resourceManager.bitmapResources.size();i3++)
     287        {
     288            ImgDirEntry.Name = compiler.GetObjectModule().meta.GetGlobalConsts().GetWholeData(
     289                ActiveBasic::Compiler::LexicalAnalyzer::FullNameToSymbol(
     290                    compiler.resourceManager.bitmapResources[i3].idName
     291                )
     292            );
    294293            ImgDirEntry.OffsetToData=(NextBase+i6+
    295294                (sizeof(IMAGE_RESOURCE_DIRECTORY)+
     
    301300
    302301        i6+=(sizeof(IMAGE_RESOURCE_DIRECTORY)+
    303             sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))*BitmapResourceNum;
     302            sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)) * compiler.resourceManager.bitmapResources.size();
    304303    }
    305304    if(IconNum){
     
    328327            sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))*IconNum;
    329328    }
    330     if(CursorResourceNum){
     329    if( !compiler.resourceManager.cursorResources.empty() )
     330    {
    331331        //RT_GROUP_CURSOR
    332332        ImgResDir.Characteristics=0;
     
    335335        ImgResDir.MinorVersion=0;
    336336        ImgResDir.NumberOfNamedEntries=0;
    337         ImgResDir.NumberOfIdEntries=CursorResourceNum;
     337        ImgResDir.NumberOfIdEntries = compiler.resourceManager.cursorResources.size();
    338338        memcpy(buffer+i2,&ImgResDir,sizeof(IMAGE_RESOURCE_DIRECTORY));
    339339        i2+=sizeof(IMAGE_RESOURCE_DIRECTORY);
    340340
    341         for(i3=0;i3<CursorResourceNum;i3++){
    342             ImgDirEntry.Name=pCursorResourceInfo[i3].dwId;
     341        for(i3=0;i3<compiler.resourceManager.cursorResources.size();i3++){
     342            ImgDirEntry.Name = compiler.GetObjectModule().meta.GetGlobalConsts().GetWholeData(
     343                ActiveBasic::Compiler::LexicalAnalyzer::FullNameToSymbol(
     344                    compiler.resourceManager.cursorResources[i3].idName
     345                )
     346            );
    343347            ImgDirEntry.OffsetToData=(NextBase+i6+
    344348                (sizeof(IMAGE_RESOURCE_DIRECTORY)+
     
    351355        //3階層のサイズ
    352356        i6+=(sizeof(IMAGE_RESOURCE_DIRECTORY)+
    353             sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))*CursorResourceNum;
    354     }
    355     if(IconResourceNum){
     357            sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)) * compiler.resourceManager.cursorResources.size();
     358    }
     359    if( !compiler.resourceManager.iconResources.empty() )
     360    {
    356361        //RT_GROUP_ICON
    357362        ImgResDir.Characteristics=0;
     
    360365        ImgResDir.MinorVersion=0;
    361366        ImgResDir.NumberOfNamedEntries=0;
    362         ImgResDir.NumberOfIdEntries=IconResourceNum;
     367        ImgResDir.NumberOfIdEntries = compiler.resourceManager.iconResources.size();
    363368        memcpy(buffer+i2,&ImgResDir,sizeof(IMAGE_RESOURCE_DIRECTORY));
    364369        i2+=sizeof(IMAGE_RESOURCE_DIRECTORY);
    365370
    366         for(i3=0;i3<IconResourceNum;i3++){
    367             ImgDirEntry.Name=pIconResourceInfo[i3].dwId;
     371        for(i3=0;i3<compiler.resourceManager.iconResources.size();i3++){
     372            ImgDirEntry.Name = compiler.GetObjectModule().meta.GetGlobalConsts().GetWholeData(
     373                ActiveBasic::Compiler::LexicalAnalyzer::FullNameToSymbol(
     374                    compiler.resourceManager.iconResources[i3].idName
     375                )
     376            );
    368377            ImgDirEntry.OffsetToData=(NextBase+i6+
    369378                (sizeof(IMAGE_RESOURCE_DIRECTORY)+
     
    376385        //3階層のサイズ
    377386        i6+=(sizeof(IMAGE_RESOURCE_DIRECTORY)+
    378             sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))*IconResourceNum;
    379     }
    380     if(XPManiResourceNum){
     387            sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)) * compiler.resourceManager.iconResources.size();
     388    }
     389    if( !compiler.resourceManager.manifestFilePath.empty() )
     390    {
    381391        //RT_MANIFEST
    382392        ImgResDir.Characteristics=0;
     
    385395        ImgResDir.MinorVersion=0;
    386396        ImgResDir.NumberOfNamedEntries=0;
    387         ImgResDir.NumberOfIdEntries=XPManiResourceNum;
     397        ImgResDir.NumberOfIdEntries = 1 /*XPManiResourceNum*/ ;
    388398        memcpy(buffer+i2,&ImgResDir,sizeof(IMAGE_RESOURCE_DIRECTORY));
    389399        i2+=sizeof(IMAGE_RESOURCE_DIRECTORY);
    390400
    391         for(i3=0;i3<XPManiResourceNum;i3++){
     401        i3 = 0;
     402        {
    392403            ImgDirEntry.Name=i3+1;
    393404            ImgDirEntry.OffsetToData=(NextBase+i6+
     
    400411
    401412        i6+=(sizeof(IMAGE_RESOURCE_DIRECTORY)+
    402             sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))*XPManiResourceNum;
     413            sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)) * 1 /*XPManiResourceNum*/ ;
    403414    }
    404415
     
    434445        i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY)*CursorNum;
    435446    }
    436     if(BitmapResourceNum){
     447    if( !compiler.resourceManager.bitmapResources.empty() ){
    437448        //RT_BITMAP
    438         for(i3=0;i3<BitmapResourceNum;i3++){
     449        for(i3=0;i3<compiler.resourceManager.bitmapResources.size();i3++){
    439450            ImgResDir.Characteristics=0;
    440451            ImgResDir.TimeDateStamp=0;
     
    453464        }
    454465
    455         i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY)*BitmapResourceNum;
     466        i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY) * compiler.resourceManager.bitmapResources.size();
    456467    }
    457468    if(IconNum){
     
    476487        i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY)*IconNum;
    477488    }
    478     if(CursorResourceNum){
     489    if( !compiler.resourceManager.cursorResources.empty() )
     490    {
    479491        //RT_GROUP_CURSOR
    480         for(i3=0;i3<CursorResourceNum;i3++){
     492        for(i3=0;i3<compiler.resourceManager.cursorResources.size();i3++){
    481493            ImgResDir.Characteristics=0;
    482494            ImgResDir.TimeDateStamp=0;
     
    495507        }
    496508
    497         i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY)*CursorResourceNum;
    498     }
    499     if(IconResourceNum){
     509        i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY) * compiler.resourceManager.cursorResources.size();
     510    }
     511    if( !compiler.resourceManager.iconResources.empty() )
     512    {
    500513        //RT_GROUP_ICON
    501         for(i3=0;i3<IconResourceNum;i3++){
     514        for(i3=0;i3<compiler.resourceManager.iconResources.size();i3++){
    502515            ImgResDir.Characteristics=0;
    503516            ImgResDir.TimeDateStamp=0;
     
    516529        }
    517530
    518         i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY)*IconResourceNum;
    519     }
    520     if(XPManiResourceNum){
     531        i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY)*compiler.resourceManager.iconResources.size();
     532    }
     533    if( !compiler.resourceManager.manifestFilePath.empty() ){
    521534        //RT_MANIFEST
    522         for(i3=0;i3<XPManiResourceNum;i3++){
     535        i3 = 0;
     536        {
    523537            ImgResDir.Characteristics=0;
    524538            ImgResDir.TimeDateStamp=0;
     
    537551        }
    538552
    539         i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY)*XPManiResourceNum;
     553        i6+=sizeof(IMAGE_RESOURCE_DATA_ENTRY) * 1 /*XPManiResourceNum*/ ;
    540554    }
    541555
     
    576590    //RT_BITMAP
    577591    BitmapEntryBase=DataEntryScheduleNum;
    578     for(i3=0;i3<BitmapResourceNum;i3++){
     592    for(i3=0;i3<compiler.resourceManager.bitmapResources.size();i3++){
    579593        dwDataEntrySchedule[DataEntryScheduleNum]=i2;
    580594        DataEntryScheduleNum++;
     
    594608    //RT_GROUP_CURSOR
    595609    CursorGroupEntryBase=DataEntryScheduleNum;
    596     for(i3=0;i3<CursorResourceNum;i3++){
     610    for(i3=0;i3<compiler.resourceManager.cursorResources.size();i3++){
    597611        dwDataEntrySchedule[DataEntryScheduleNum]=i2;
    598612        DataEntryScheduleNum++;
     
    603617    //RT_GROUP_ICON
    604618    IconGroupEntryBase=DataEntryScheduleNum;
    605     for(i3=0;i3<IconResourceNum;i3++){
     619    for(i3=0;i3<compiler.resourceManager.iconResources.size();i3++){
    606620        dwDataEntrySchedule[DataEntryScheduleNum]=i2;
    607621        DataEntryScheduleNum++;
     
    613627    int XPManiEntryBase;
    614628    XPManiEntryBase=DataEntryScheduleNum;
    615     for(i3=0;i3<XPManiResourceNum;i3++){
     629    i3 = 0;
     630    {
    616631        dwDataEntrySchedule[DataEntryScheduleNum]=i2;
    617632        DataEntryScheduleNum++;
     
    642657
    643658    //カーソルリソース
    644     for(i3=0,i6=0;i3<CursorResourceNum;i3++){
    645         hFile=CreateFile(pCursorResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
     659    for(i3=0,i6=0;i3<compiler.resourceManager.cursorResources.size();i3++){
     660        hFile=CreateFile(compiler.resourceManager.cursorResources[i3].filepath.c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    646661        if(hFile==INVALID_HANDLE_VALUE){
    647             compiler.errorMessenger.Output(23,pCursorResourceInfo[i3].FileName,-1);
     662            compiler.errorMessenger.Output(23,compiler.resourceManager.cursorResources[i3].filepath.c_str(),-1);
    648663            return buffer;
    649664        }
     
    722737
    723738    //ビットマップリソース
    724     for(i3=0;i3<BitmapResourceNum;i3++){
    725         hFile=CreateFile(pBitmapResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
     739    for(i3=0;i3<compiler.resourceManager.bitmapResources.size();i3++){
     740        hFile=CreateFile(compiler.resourceManager.bitmapResources[i3].filepath.c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    726741        if(hFile==INVALID_HANDLE_VALUE){
    727             compiler.errorMessenger.Output(23,pBitmapResourceInfo[i3].FileName,-1);
     742            compiler.errorMessenger.Output(23,compiler.resourceManager.bitmapResources[i3].filepath.c_str(),-1);
    728743            return buffer;
    729744        }
     
    750765
    751766    //アイコンリソース
    752     for(i3=0,i6=0;i3<IconResourceNum;i3++){
    753         hFile=CreateFile(pIconResourceInfo[i3].FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
     767    for(i3=0,i6=0;i3<compiler.resourceManager.iconResources.size();i3++){
     768        hFile=CreateFile(compiler.resourceManager.iconResources[i3].filepath.c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    754769        if(hFile==INVALID_HANDLE_VALUE){
    755             compiler.errorMessenger.Output(23,pIconResourceInfo[i3].FileName,-1);
     770            compiler.errorMessenger.Output(23,compiler.resourceManager.iconResources[i3].filepath.c_str(),-1);
    756771            return buffer;
    757772        }
     
    831846
    832847    //XPManifestリソース
    833     for(i3=0;i3<XPManiResourceNum;i3++){
    834         extern char BasicCurDir[MAX_PATH];
    835         extern char szManifestPath[MAX_PATH];
    836         char temp2[MAX_PATH];
    837         lstrcpy(temp2,szManifestPath);
    838         GetFullPath(temp2,BasicCurDir);
    839         hFile=CreateFile(temp2,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
     848    i3 = 0;
     849    if( !compiler.resourceManager.manifestFilePath.empty() )
     850    {
     851        hFile=CreateFile(compiler.resourceManager.manifestFilePath.c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    840852        if(hFile==INVALID_HANDLE_VALUE){
    841             compiler.errorMessenger.Output(59,temp2,-1);
     853            compiler.errorMessenger.Output(59,compiler.resourceManager.manifestFilePath.c_str(),-1);
    842854            return buffer;
    843855        }
     
    857869        //アプリケーション名をセット
    858870        char szAppliName[MAX_PATH];
     871        char temp2[MAX_PATH];
    859872        _splitpath( program.GetOutputFilePath().c_str(),NULL,NULL,szAppliName,temp2);
    860873        lstrcat(szAppliName,temp2);
  • trunk/ab5.0/abdev/BasicCompiler_Common/common.h

    r605 r622  
    294294//preprocessor.cpp
    295295char *OpenBasicFile(char *FileName);
    296 
    297 //Resource.cpp
    298 void GetResourceData(char *FileName);
    299296
    300297//CommandFormat.cpp
  • trunk/ab5.0/abdev/BasicCompiler_Common/include/Compiler.h

    r608 r622  
    9494    Linker linker;
    9595
     96    // リソースマネージャ
     97    ActiveBasic::Common::ResourceManager resourceManager;
     98
    9699    // 静的リンクするオブジェクトファイル
    97100    std::vector<std::string> staticLibraryFilePaths;
  • trunk/ab5.0/abdev/ab_common/ab_common.vcproj

    r605 r622  
    428428                </File>
    429429            </Filter>
     430            <Filter
     431                Name="ResourceManager"
     432                >
     433                <File
     434                    RelativePath=".\src\ResourceManager\ResourceManager.cpp"
     435                    >
     436                </File>
     437            </Filter>
    430438        </Filter>
    431439        <Filter
     
    535543                <File
    536544                    RelativePath=".\include\Lexical\Variable.h"
     545                    >
     546                </File>
     547            </Filter>
     548            <Filter
     549                Name="ResourceManager"
     550                >
     551                <File
     552                    RelativePath=".\include\ResourceManager\ResourceManager.h"
    537553                    >
    538554                </File>
  • trunk/ab5.0/abdev/ab_common/include/ab_common.h

    r603 r622  
    2929#include "Lexical/DataTable.h"
    3030#include "Lexical/ObjectModule.h"
     31
     32#include "ResourceManager/ResourceManager.h"
  • trunk/ab5.0/abdev/abdev/Common.h

    r620 r622  
    664664char *ReadBuffer( const std::string &path );
    665665char *ReadBuffer_NonErrMsg( const std::string &path );
    666 _int8 WriteBuffer(char *path,char *buffer,int length, bool isEnableError = true);
    667 _int8 WriteBuffer_NonErrMsg(char *path,char *buffer,int length);
     666_int8 WriteBuffer(const std::string &path,char *buffer,int length, bool isEnableError = true);
     667_int8 WriteBuffer_NonErrMsg(const std::string &path,char *buffer,int length);
    668668void GetRelationalPath(char *path,char *dir);
    669669void GetFullPath(char *path,const char *dir);
  • trunk/ab5.0/abdev/abdev/FileOperation.cpp

    r621 r622  
    5757    return buffer;
    5858}
    59 _int8 WriteBuffer(char *path,char *buffer,int length, bool isEnableError){
     59_int8 WriteBuffer(const std::string &path,char *buffer,int length, bool isEnableError){
    6060    HANDLE hFile;
    6161    DWORD dw;
    62     hFile=CreateFile(path,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
     62    hFile=CreateFile(path.c_str(),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    6363    if(hFile==INVALID_HANDLE_VALUE){
    6464        char temporary[MAX_PATH];
     
    7575    return 1;
    7676}
    77 _int8 WriteBuffer_NonErrMsg(char *path,char *buffer,int length){
     77_int8 WriteBuffer_NonErrMsg(const std::string &path,char *buffer,int length){
    7878    return WriteBuffer( path, buffer, length, false );
    7979}
  • trunk/ab5.0/abdev/abdev/Resource.cpp

    r620 r622  
    1717    HANDLE hFile;
    1818
    19     lstrcpy(temporary,projectInfo.ResourceFileName);
    20     lstrcpy( temporary, projectInfo.GetWorkDir().GetFullPath( temporary ).c_str() );
    21 
    22     hFile=CreateFile(temporary,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
     19    hFile=CreateFile( projectInfo.GetResourceFileFullPath().c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    2320    if(hFile==INVALID_HANDLE_VALUE) return;
    2421    i2=GetFileSize(hFile,NULL);
     
    123120    }
    124121
    125     //リソースが空の場合
    126     if(projectInfo.res.NumberOfCursorRes==0&&
    127         projectInfo.res.NumberOfBitmapRes==0&&
    128         projectInfo.res.NumberOfIconRes==0)
    129         projectInfo.ResourceFileName[0]=0;
    130 
    131122    HeapDefaultFree(buffer);
    132123}
     
    137128    int i2,i3;
    138129    char temporary[MAX_PATH];
    139 
    140     if(!projectInfo.ResourceFileName[0])
    141         sprintf(projectInfo.ResourceFileName,"%s.rc",projectInfo.GetName().c_str());
    142130
    143131    //"カーソル ファイルを指定してください"
     
    242230    char temporary[MAX_PATH];
    243231
    244     if(!projectInfo.ResourceFileName[0])
    245         sprintf(projectInfo.ResourceFileName,"%s.rc",projectInfo.GetName().c_str());
    246 
    247232    //"ビットマップ ファイルを指定してください"
    248233    if(!GetFilePathDialog(hOwner,temporary,BitmapFileFilter,STRING_FILEOPENTITLE_BITMAP,TRUE)) return;
     
    355340    int i2,i3;
    356341    char temporary[MAX_PATH];
    357 
    358     if(!projectInfo.ResourceFileName[0])
    359         sprintf(projectInfo.ResourceFileName,"%s.rc",projectInfo.GetName().c_str());
    360342
    361343    //"アイコン ファイルを指定してください"
  • trunk/ab5.0/abdev/abdev/include/ProjectManager/ProjectManager.h

    r621 r622  
    2727    }
    2828
     29    const std::string GetResourceFileFullPath() const
     30    {
     31        return this->GetWorkDir().GetFullPath( this->GetName() + ".rc" );
     32    }
     33
    2934    bool IsOpened() const
    3035    {
     
    4045
    4146    CDBFileInfo *pobj_DBFileInfo;
    42 
    43     char ResourceFileName[MAX_PATH];
    4447
    4548    int NumberOfMenu;
  • trunk/ab5.0/abdev/abdev/src/ProjectManager/ProjectManager.cpp

    r621 r622  
    196196                    temporary[i2]=buffer[i];
    197197                }
    198                 if(temporary[0]!='\0'&&(!(temporary[0]=='0'&&temporary[1]=='\0'))){
    199                     lstrcpy(this->ResourceFileName,temporary);
    200                     GetResourceData();
    201                 }
    202                 else{
    203                     sprintf(this->ResourceFileName,"%s.rc",this->GetName().c_str());
    204                 }
     198
     199                // このパラメータは使用しなくなった
    205200            }
    206201            else if(lstrcmpi(temporary,"SOURCE")==0&&buffer[i]=='\r'&&buffer[i+1]=='\n'){
     
    244239        }
    245240        sprintf(this->lpszOutput_Debug,".\\%s_debug.exe",this->GetName().c_str());
     241    }
     242
     243    // リソースを読み込む
     244    Jenga::Common::Path resourcePath( projectInfo.GetResourceFileFullPath() );
     245    if( resourcePath.IsExistFile() )
     246    {
     247        GetResourceData();
    246248    }
    247249
     
    347349    sprintf(buffer+i2,"#DEBUG_EXE_PATH=%s\r\n\r\n",this->szExePath);
    348350    i2+=lstrlen(buffer+i2);
    349     if(this->ResourceFileName[0]){
    350         sprintf(buffer+i2,"#RESOURCE=%s\r\n\r\n",this->ResourceFileName);
    351         i2+=lstrlen(buffer+i2);
    352     }
    353     else{
    354         lstrcpy(buffer+i2,"#RESOURCE=0\r\n\r\n");
    355         i2+=lstrlen(buffer+i2);
    356     }
    357351    sprintf(buffer+i2,"#SOURCE\r\n");
    358352    i2+=lstrlen(buffer+i2);
     
    369363    //////////////////////////////////
    370364    // リソースファイル(*.rc、resource.ab)を作成
    371     if(this->ResourceFileName[0]){
     365    {
    372366        i2=0;
    373367        i3=101;
     
    392386
    393387        //保存(resource.ab)
    394         lstrcpy(temporary,"resource.ab");
    395         lstrcpy( temporary, this->GetWorkDir().GetFullPath( temporary ).c_str() );
    396         WriteBuffer(temporary,buffer,i2);
     388        WriteBuffer(this->GetWorkDir().GetFullPath( "resource.ab" ),buffer,i2);
    397389
    398390        i2=0;
     
    424416
    425417        //保存
    426         lstrcpy(temporary,this->ResourceFileName);
    427         lstrcpy( temporary, this->GetWorkDir().GetFullPath( temporary ).c_str() );
    428         WriteBuffer(temporary,buffer,i2);
     418        WriteBuffer(this->GetResourceFileFullPath(),buffer,i2);
    429419    }
    430420
     
    498488        i2+=lstrlen(buffer+i2);
    499489    }
    500     if(this->ResourceFileName[0]){
    501         //リソースファイルが含まれる場合
    502         lstrcpy(buffer+i2,"\r\n");
    503         i2+=lstrlen(buffer+i2);
    504         lstrcpy(buffer+i2,"'リソースファイル\r\n");
    505         i2+=lstrlen(buffer+i2);
    506         lstrcpy(buffer+i2,"#include \"resource.ab\"\r\n");
    507         i2+=lstrlen(buffer+i2);
    508         sprintf(buffer+i2,"#resource \"%s.rc\"\r\n",this->GetName().c_str());
    509         i2+=lstrlen(buffer+i2);
    510     }
     490
     491    //リソースファイル
     492    lstrcpy(buffer+i2,"\r\n");
     493    i2+=lstrlen(buffer+i2);
     494    lstrcpy(buffer+i2,"'リソースファイル\r\n");
     495    i2+=lstrlen(buffer+i2);
     496    lstrcpy(buffer+i2,"#include \"resource.ab\"\r\n");
     497    i2+=lstrlen(buffer+i2);
     498    sprintf(buffer+i2,"#resource \"%s.rc\"\r\n",this->GetName().c_str());
     499    i2+=lstrlen(buffer+i2);
    511500
    512501    //保存
  • trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp

    r608 r622  
    595595    /////////////////////////////
    596596    extern char ResourceFileName[MAX_PATH];
    597     GetResourceData(ResourceFileName);
     597    compiler.resourceManager.Load( ResourceFileName );
    598598
    599599
  • trunk/ab5.0/abdev/compiler_x86/compiler_x86.vcproj

    r603 r622  
    573573                        </FileConfiguration>
    574574                    </File>
    575                     <File
    576                         RelativePath="..\BasicCompiler_Common\Resource.cpp"
    577                         >
    578                         <FileConfiguration
    579                             Name="Debug|Win32"
    580                             >
    581                             <Tool
    582                                 Name="VCCLCompilerTool"
    583                                 PreprocessorDefinitions=""
    584                             />
    585                         </FileConfiguration>
    586                         <FileConfiguration
    587                             Name="Release|Win32"
    588                             >
    589                             <Tool
    590                                 Name="VCCLCompilerTool"
    591                                 PreprocessorDefinitions=""
    592                             />
    593                         </FileConfiguration>
    594                     </File>
    595575                </Filter>
    596576                <Filter
  • trunk/ab5.0/jenga/include/common/String.h

    r607 r622  
    1414std::wstring ToWString( const std::string &str );
    1515
     16bool IsIdentifierTopChar( char c );
     17bool IsIdentifierChar( char c );
    1618
    1719}
  • trunk/ab5.0/jenga/include/jenga.h

    r532 r622  
    55#include "common/CmdLine.h"
    66#include "common/Directory.h"
     7#include "common/EasyToken.h"
    78#include "common/Environment.h"
    89#include "common/Exception.h"
  • trunk/ab5.0/jenga/projects/jenga/jenga.vcproj

    r529 r622  
    287287            <File
    288288                RelativePath="..\..\src\common\Directory.cpp"
     289                >
     290            </File>
     291            <File
     292                RelativePath="..\..\src\common\EasyToken.cpp"
    289293                >
    290294            </File>
     
    360364            </File>
    361365            <File
     366                RelativePath="..\..\include\common\EasyToken.h"
     367                >
     368            </File>
     369            <File
    362370                RelativePath="..\..\include\common\Environment.h"
    363371                >
  • trunk/ab5.0/jenga/src/common/String.cpp

    r607 r622  
    5555    return wstr;
    5656}
     57
     58bool Jenga::Common::IsIdentifierTopChar( char c )
     59{
     60    return ( isalpha( c ) || c == '_' );
     61}
     62
     63bool Jenga::Common::IsIdentifierChar( char c )
     64{
     65    return ( IsIdentifierTopChar( c ) || isdigit( c ) );
     66}
Note: See TracChangeset for help on using the changeset viewer.