abc プロジェクト
14.3.3. Exec メンバ関数説明

メンバ関数名 Exec
定義ファイル名pass5.cpp
定義行 131
所属名 TPass5
アクセス属性 public
宣言形式 void Exec ( )
概要 パス5の実行
TureResionListを参照して、複数のチューニングリージョンに対応したソースコー
ドを出力する。
戻り値
パラメタ説明
機能説明
備考

呼出し元関数一覧表
名称 定義ファイル名 定義行
1 TMainF::FormActivate main.cpp 299

呼出し先関数一覧表
名称 定義ファイル名 定義行
1 TMainF::err main.cpp 271
2 TPass5::MakeControlCode pass5.cpp 211
3 TPass5::MakeFunctionCode pass5.cpp 570
4 TTuneRegion::OutputExecCode TuneRegion.cpp 2253
5 TMainF::printNoLog main.cpp 244
6 IntToStr

7 Length

8 Pos

参照外部変数一覧表
名称 定義ファイル名 定義行
1 MainF main.cpp 26

参照メンバ変数一覧表
名称 定義ファイル名 定義行
1 TPass5::FittingF pass5.h 44
2 TPass5::fpOutDynamic pass5.h 41
3 TPass5::fpOutInstall pass5.h 39
4 TPass5::fpOutStatic pass5.h 40
5 TPass5::TuneRegionList pass5.h 36

参照先一覧表
名称 種別 定義ファイル名 定義行
1 TTuneRegion クラス TuneRegion.h 88

関数論理チャート

        |  +----------------------+ 
   131  +--+ void TPass5::Exec()  | 
   132     | {                    | 
           +--+-------------------+ 
   133        +--- int i,j;
   134        +--- TTuneRegion *TuneRegion;
   135        +--- AnsiString s,s1,s2;
   136        |    
   137        +--- FittingF = false;   // Fittingありの場合の変数定義追加用
              |  +------------------------------------------------+ 
   138        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   139        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
              |     |  +------------------------------------------+ 
   140        |     +--+ if(TuneRegion->TuneGroup == tgInstall){  | 
              |     |  +--+---------------------------------------+ 
              |     |     |  +------------------------------------+ 
   141        |     |     +--+ if(TuneRegion->FittingType != 0){  | 
              |     |     |  +--+---------------------------------+ 
   142        |     |     |     +--- FittingF = true;    // Fittingありの場合の変数定義追加用
              |     |     |   +-+---+ 
   143        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
   144        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   145        |   |  }  | 
              |   +-----+ 
   146        +--- //
   147        |    // TRの名前の重複をチェックする。                                          
   148        |    // もし、あいまいな場合には、エラーとする。                                
   149        |    // 例えば、ABC と ABC2 は、あいまいとなる。(index関数で検索しているため)  
   150        |    // .Pos()で検索して、2箇所存在する場合にエラーとなる。                    
   151        |    //                                                                         
              |  +------------------------------------------------+ 
   152        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   153        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
   154        |     +--- s1 = TuneRegion->Name;  // TRの名前
              |     |  +------------------------------------------------+ 
   155        |     +--+ for(j = 0 ; j < TuneRegionList->Count ; j++){  | 
              |     |  +--+---------------------------------------------+ 
              |     |     |  +--------------+ 
   156        |     |     +--+ if(j == i){  | 
              |     |     |  +--+-----------+ 
              |     |     |     |  +------------+ 
   157        |     |     |     +--+ continue;  | 
              |     |     |     |  +------------+ 
              |     |     |   +-+---+ 
   158        |     |     |   |  }  | 
              |     |     |   +-----+ 
   159        |     |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[j];
   160        |     |     +--- s2 = TuneRegion->Name;
              |     |     |  +------------------------------------------------+ 
   161        |     |     +--+ if(s2.Pos(s1) != 0){    // 重複する文字列あり  | 
              |     |     |  +--+---------------------------------------------+ 
   162        |     |     |     +--- s = "名前の一部が重複しています。( "+ s1+" , "+s2+" )";
   163        |     |     |     +--- MainF->err(s);
              |     |     |     |  +--------+ 
   164        |     |     |     +--+ break; | 
              |     |     |     |  +--------+ 
              |     |     |   +-+---+ 
   165        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
   166        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   167        |   |  }  | 
              |   +-----+ 
   168        +--- // 文字列の長さを決定する。(全てのTRの名前+,の長さとする)
              |  +------------------------------------------------+ 
   169        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   170        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
   171        |     +--- s += TuneRegion->Name + ",";
              |   +-+---+ 
   172        |   |  }  | 
              |   +-----+ 
   173        +--- MainF->CharMaxLen = s.Length()-1;
   174        |    
   175        +--- MakeControlCode();  // ABCLib/ABCLib_ControlRoutines.f 作成
   176        |                                                                 
              |  +------------------------------------------------+ 
   177        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   178        |     +--- MainF->printNoLog("TuneRegion = "+IntToStr(i+1)+"/"+IntToStr(TuneRegionList->Count));
   179        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
              |     |  +------------------------------------------+ 
   180        |     +--+ if(TuneRegion->TuneGroup == tgInstall){  | 
              |     |  +--+---------------------------------------+ 
   181        |     |     +--- TuneRegion->OutputExecCode(fpOutInstall);
              |     |   +-+---+ 
   182        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+---------------------------------------------+ 
   182        |     |   |  else if(TuneRegion->TuneGroup == tgStatic){  | 
              |     |   +-+---------------------------------------------+ 
   183        |     |     +--- TuneRegion->OutputExecCode(fpOutStatic);
              |     |   +-+---+ 
   184        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+---------------------------------------------+ 
   184        |     |   |  else if(TuneRegion->TuneGroup == tgDynamic){ | 
              |     |   +-+---------------------------------------------+ 
   185        |     |     +--- TuneRegion->OutputExecCode(fpOutDynamic);
              |     |   +-+---+ 
   186        |     |   |  }  | 
              |     |   +-----+ 
              |     |  +------------------------+ 
   187        |     +--+ if(MainF->CloseReqF){  | 
              |     |  +--+---------------------+ 
              |     |     |  +----------+ 
   188        |     |     +--+ return;  | 
              |     |     |  +----------+ 
              |     |   +-+---+ 
   189        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   190        |   |  }  | 
              |   +-----+ 
   191        |    
   192        +--- MakeFunctionCode(); // ABCLib/ABCLib_(元のソースファイル名).f 作成
            +-+---+ 
   193      |  }  | 
            +-----+