abc プロジェクト
14.8.24. OutputSrcCode メンバ関数説明

メンバ関数名 OutputSrcCode
定義ファイル名TuneRegion.cpp
定義行 3938
所属名 TTuneRegion
アクセス属性 public
宣言形式 void OutputSrcCode ( FILE * fp , AnsiString IndentStr , int OutMode )
概要 置き換えコードを出力
Call SetParam()
Call xxxx()
コメントに置き換える。

Modeの設定で、出力対象(範囲)を変える。 Add 2004/09/14

OutMode=0 : SetParam + Call Func() + Comment
OutMode=1 : SetParam + Call Func()
OutMode=2 : SetParam
OutMode=3 : Call Func() + Comment
戻り値
パラメタ説明 fp 出力先ファイルポインタ
IndentStr インデント文字列
OutMode 出力モード
機能説明
備考

呼出し元関数一覧表
名称 定義ファイル名 定義行
1 TPass5::MakeFunctionCode pass5.cpp 570
2 TTuneRegion::OutputReplaceSrc TuneRegion.cpp 4123

呼出し先関数一覧表
名称 定義ファイル名 定義行
1 TTuneRegion::GetPrePostSubregionStr TuneRegion.cpp 4337
2 TTuneRegion::SepLongStr TuneRegion.cpp 4274
3 c_str

4 CompareText

5 fprintf

6 Insert

7 IntToStr

8 Pos

9 TrimRight

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

参照メンバ変数一覧表
名称 定義ファイル名 定義行
1 TTuneRegion::ArgValList TuneRegion.h 140
2 TTuneRegion::BaseValList TuneRegion.h 148
3 TTuneRegion::FuncName TuneRegion.h 126
4 TTuneRegion::Name TuneRegion.h 125
5 TTuneRegion::TokenEndPos TuneRegion.h 123
6 TTuneRegion::TokenList TuneRegion.h 120
7 TTuneRegion::TokenStartPos TuneRegion.h 122
8 TTuneRegion::TuneGroup TuneRegion.h 128
9 TTuneRegion::TuneGroupName TuneRegion.h 129

参照先一覧表
名称 種別 定義ファイル名 定義行
1 TScript クラス pass3.h 151
2 TScValData クラス pass3.h 112
3 TToken クラス pass1.h 216
4 TValData クラス pass2.h 42

関数論理チャート

        |  +----------------------------------------------------------------------------+ 
  3938  +--+ void TTuneRegion::OutputSrcCode(FILE *fp,AnsiString IndentStr,int OutMode) | 
  3939     | {                                                                          | 
           +--+-------------------------------------------------------------------------+ 
  3940        +--- int i,j,k;
  3941        +--- TToken *Token;
  3942        +--- TValData *ValData;
  3943        +--- AnsiString s,s2;
  3944        +--- TScript *Script;
  3945        +--- AnsiString BaseValName;
  3946        |    
  3947        +--- BaseValName = BaseValList->Strings[0];
  3948        +--- // Param ABCLIB_INSTALL = 1  が ABCScript.h にあるが、
  3949        |    // モジュールが異なるため、参照できてないので、値自体をセットしている  
  3950        |    // 2004/05/28                                                          
              |  +--------------------+ 
  3951        +--+ if(OutMode != 3){  | 
              |  +--+-----------------+ 
  3952        |     +--- s = IndentStr+"      call ABCLib_SetParm("+ IntToStr(TuneGroup+1);
  3953        |     +--- //      s = IndentStr+"      call ABCLib_SetParm("+ "ABCLib_"+UpperCase(TuneGroupName);
  3954        |     +--- s += ",'"+ Name + "',";
  3955        |     +--- //      s += PROB_VALN;
  3956        |     +--- s += BaseValName;
  3957        |     +--- s += ", iusw1_"+Name+")\n"; // 複数変数対応の unrollとなる。
  3958        |     +--- s = SepLongStr(s);
  3959        |     +--- fprintf(fp,"%s",s.c_str());
              |   +-+---+ 
  3960        |   |  }  | 
              |   +-----+ 
              |  +--------------------+ 
  3961        +--+ if(OutMode != 2){  | 
              |  +--+-----------------+ 
  3962        |     +--- s = GetPrePostSubregionStr(0);
  3963        |     +--- fprintf(fp,"%s",s.c_str());
  3964        |     |    
  3965        |     +--- s = IndentStr+"      call " + FuncName + "(";
              |     |  +--------------------------------------------+ 
  3966        |     +--+ for(i = 0 ; i < ArgValList->Count ; i++){  | 
              |     |  +--+-----------------------------------------+ 
              |     |     |  +------------------------------------+ 
  3967        |     |     +--+ if(ArgValList->Strings[i] == ""){  | 
              |     |     |  +--+---------------------------------+ 
              |     |     |     |  +------------+ 
  3968        |     |     |     +--+ continue;  | 
              |     |     |     |  +------------+ 
              |     |     |   +-+---+ 
  3969        |     |     |   |  }  | 
              |     |     |   +-----+ 
  3970        |     |     +--- ValData = (TValData *)ArgValList->Objects[i];
  3971        |     |     +--- s += ValData->Str + ",";
              |     |   +-+---+ 
  3972        |     |   |  }  | 
              |     |   +-----+ 
  3973        |     +--- s += "iusw1_"+Name+")\n";   // 当面は1変数だけの unrollとなる。
  3974        |     +--- s = SepLongStr(s);
  3975        |     +--- fprintf(fp,"%s",s.c_str());
  3976        |     |    
  3977        |     +--- s = GetPrePostSubregionStr(1);
  3978        |     +--- fprintf(fp,"%s",s.c_str());
              |   +-+---+ 
  3979        |   |  }  | 
              |   +-----+ 
  3980        |    
  3981        +--- //
  3982        |    // 対象ブロックをコメントにして出力する。    
  3983        |    // case()内の場合,SetParamだけの場合は、Skip 
  3984        |    //                                           
              |  +--------------------------------------+ 
  3985        +--+ if((OutMode != 0)&&(OutMode != 3)){  | 
              |  +--+-----------------------------------+ 
              |     |  +----------+ 
  3986        |     +--+ return;  | 
              |     |  +----------+ 
              |   +-+---+ 
  3987        |   |  }  | 
              |   +-----+ 
  3988        +--- s = "";
              |  +--------------------------------------------------+ 
  3989        +--+ for(i = TokenStartPos ; i <= TokenEndPos ; i++){ | 
              |  +--+-----------------------------------------------+ 
  3990        |     +--- Token = (TToken *)TokenList->Items[i];
              |     |  +----------------------------+ 
  3991        |     +--+ if(Token->Script != NULL){ | 
              |     |  +--+-------------------------+ 
  3992        |     |     +--- Script = (TScript *)Token->Script;
  3993        |     |     +--- /*
  3994        |     |     |                if((Script->ScRegion == scr_start)&&(i != TokenStartPos)){ 
  3995        |     |     |                    // NestしたTuneRegionあり                              
  3996        |     |     |                    TTuneRegion *TuneRegion;                               
  3997        |     |     |                                                                           
  3998        |     |     |                    TuneRegion = (TTuneRegion *)Script->TuneRegion;        
  3999        |     |     |                    TuneRegion->OutputSrcCode(fp,"",false);                
  4000        |     |     |                    i = TuneRegion->TokenEndPos;                           
  4001        |     |     |                }                                                          
  4002        |     |     |    */                                                                     
  4002        |     |     +--- s = Token->OrgStr;
  4003        |     |     +--- //          fprintf(fp,"%s",s.c_str());
  4004        |     |     +--- s = TrimRight(s);
  4005        |     |     +--- fprintf(fp,"%s\n",s.c_str());
  4006        |     |     +--- #if 1
  4007        |     |     +--- //
  4008        |     |     |    // !ABCLib$ debug() スクリプトの処理  
  4009        |     |     |    //                                     
              |     |     |  +------------------------------------------------+ 
  4010        |     |     +--+ if(Script->ScType == sct_debug){    // number  | 
              |     |     |  +--+---------------------------------------------+ 
  4011        |     |     |     +--- AnsiString cs;
  4012        |     |     |     |    
              |     |     |     |  +--------------------+ 
  4013        |     |     |     +--+ if(MainF->DebugF){ | 
              |     |     |     |  +--+-----------------+ 
  4014        |     |     |     |     +--- s = IndentStr+"      ";
  4015        |     |     |     |     +--- cs = "";
              |     |     |     |   +-+---+ 
  4016        |     |     |     |   |  }  | 
              |     |     |     |   +-+---+ 
              |     |     |     |   +-+-------+ 
  4016        |     |     |     |   |  else{  | 
              |     |     |     |   +-+-------+ 
  4017        |     |     |     |     +--- s = "c" + IndentStr+"      ";
  4018        |     |     |     |     +--- cs = "c";
              |     |     |     |   +-+---+ 
  4019        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
  4020        |     |     |     +--- s2 = s+"if(ABCLib_DEBUG .ge. 1)then";
  4021        |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
  4022        |     |     |     +--- s2 = s+"  print *, \"myid: \",myid";
  4023        |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
  4024        |     |     |     +--- s2 = s+"  print *, \""+TuneGroupName+" Routine: \",\""+Name+"\"";
  4025        |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
  4026        |     |     |     |    
              |     |     |     |  +------------------------------------+ 
  4027        |     |     |     +--+ if(Script->ScValDataList != NULL){ | 
              |     |     |     |  +--+---------------------------------+ 
              |     |     |     |     |  +----------------------------------------------------------+ 
  4028        |     |     |     |     +--+ for(int k = 0 ; k < Script->ScValDataList->Count ; k++){ | 
              |     |     |     |     |  +--+-------------------------------------------------------+ 
  4029        |     |     |     |     |     +--- TScValData *ScValData;
  4030        |     |     |     |     |     +--- ScValData = (TScValData *)Script->ScValDataList->Items[k];
              |     |     |     |     |     |  +--------------------------------------------+ 
  4031        |     |     |     |     |     +--+ if(CompareText(ScValData->Str,"bp") == 0){ | 
              |     |     |     |     |     |  +--+-----------------------------------------+ 
  4032        |     |     |     |     |     |     +--- s2 = s+ "  print *, \"ABCLib_STARTTUNESIZE: \",";
  4033        |     |     |     |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
  4034        |     |     |     |     |     |     +--- s2 = cs + "     &      ABCLib_STARTTUNESIZE";
  4035        |     |     |     |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
  4036        |     |     |     |     |     |     +--- s2 = s+"  print *, \"ABCLib_ENDTUNESIZE: \",";
  4037        |     |     |     |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
  4038        |     |     |     |     |     |     +--- s2 = cs + "     &      ABCLib_ENDTUNESIZE";
  4039        |     |     |     |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
  4040        |     |     |     |     |     |     +--- s2 = s+"  print *, \"ABCLib_SAMPDIST: \",";
  4041        |     |     |     |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
  4042        |     |     |     |     |     |     +--- s2 = cs + "     &      ABCLib_SAMPDIST";
  4043        |     |     |     |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
              |     |     |     |     |     |   +-+---+ 
  4044        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-+---+ 
              |     |     |     |     |     |   +-+-------------------------------------------------+ 
  4044        |     |     |     |     |     |   |  else if(CompareText(ScValData->Str,"pp") == 0){  | 
              |     |     |     |     |     |   +-+-------------------------------------------------+ 
  4045        |     |     |     |     |     |     +--- //
  4046        |     |     |     |     |     |     |    // Change iusw1 to iusw1_+Name 2005/02/28                          
  4047        |     |     |     |     |     |     |    //                          s2 = s+"  print *, \"iusw1: \",iusw1"; 
  4048        |     |     |     |     |     |     |                                                                       
  4049        |     |     |     |     |     |     +--- s2 = s+"  print *, \"iusw1: \",iusw1_"+Name;
  4050        |     |     |     |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
              |     |     |     |     |     |   +-+---+ 
  4051        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-+---+ 
              |     |     |     |     |     |   +-+-------+ 
  4051        |     |     |     |     |     |   |  else{  | 
              |     |     |     |     |     |   +-+-------+ 
              |     |     |     |     |     |     |  +----------------------------------------+ 
  4052        |     |     |     |     |     |     +--+ if(ScValData->Str.Pos("ABCLib") != 0){ | 
              |     |     |     |     |     |     |  +--+-------------------------------------+ 
  4053        |     |     |     |     |     |     |     +--- s2 = s+"  print *, \""+ScValData->Str+": \",";
  4054        |     |     |     |     |     |     |     +--- fprintf(fp,"%s\n", s2.c_str());
  4055        |     |     |     |     |     |     |     +--- s2 = cs+"     &      "+ScValData->Str;
  4056        |     |     |     |     |     |     |     +--- fprintf(fp,"%s\n", s2.c_str());
              |     |     |     |     |     |     |   +-+---+ 
  4057        |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |   +-+---+ 
              |     |     |     |     |     |     |   +-+-------+ 
  4057        |     |     |     |     |     |     |   |  else{  | 
              |     |     |     |     |     |     |   +-+-------+ 
  4058        |     |     |     |     |     |     |     +--- s2 = s+"  print *, \"Error! : "+ScValData->Str + " \"";
  4059        |     |     |     |     |     |     |     +--- fprintf(fp,"%s\n", s2.c_str());
  4060        |     |     |     |     |     |     |     +--- s2 = s+"  print *, \"You can only specify the system parameters\"";
  4061        |     |     |     |     |     |     |     +--- fprintf(fp,"%s\n", s2.c_str());
  4062        |     |     |     |     |     |     |     +--- s2 = s+"  print *, \"   in the co-operator of debug. \"";
  4063        |     |     |     |     |     |     |     +--- fprintf(fp,"%s\n", s2.c_str());
              |     |     |     |     |     |     |   +-+---+ 
  4064        |     |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |     |   +-----+ 
              |     |     |     |     |     |   +-+---+ 
  4065        |     |     |     |     |     |   |  }  | 
              |     |     |     |     |     |   +-----+ 
              |     |     |     |     |   +-+---+ 
  4066        |     |     |     |     |   |  }  | 
              |     |     |     |     |   +-----+ 
  4067        |     |     |     |     +--- s2 = s+"endif";
  4068        |     |     |     |     +--- fprintf(fp,"%s\n",s2.c_str());
              |     |     |     |   +-+---+ 
  4069        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
  4070        |     |     |   |  }  | 
              |     |     |   +-----+ 
  4071        |     |     +--- #endif
              |     |   +-+---+ 
  4072        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+---------------------------------------+ 
  4072        |     |   |  else if(Token->TokId == tid_LineEnd){  | 
              |     |   +-+---------------------------------------+ 
  4073        |     |     +--- s = Token->OrgStr;
  4074        |     |     +--- fprintf(fp,"%s",s.c_str());
  4075        |     |     +--- s = "\n";
              |     |   +-+---+ 
  4076        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------+ 
  4076        |     |   |  else{  | 
              |     |   +-+-------+ 
              |     |     |  +------------------------+ 
  4077        |     |     +--+ if(s.Pos("\n") != 0){  | 
              |     |     |  +--+---------------------+ 
  4078        |     |     |     +--- s = Token->OrgStr;
  4079        |     |     |     +--- //              if(s[1] == ' '){
              |     |     |     |  +------------------------------------------------------+ 
  4080        |     |     |     +--+ if(s[1] <= ' '){ // 先頭が\nの場合に対応 2009/02/21  | 
              |     |     |     |  +--+---------------------------------------------------+ 
  4081        |     |     |     |     +--- s[1] = 'c';
              |     |     |     |   +-+---+ 
  4082        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
  4083        |     |     |     +--- fprintf(fp,"%s",s.c_str());
              |     |     |   +-+---+ 
  4084        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-------+ 
  4084        |     |     |   |  else{  | 
              |     |     |   +-+-------+ 
  4085        |     |     |     +--- s = Token->OrgStr;
  4086        |     |     |     +--- //
  4087        |     |     |     |    //  "\n     & の継続行をコメントにする。 
  4088        |     |     |     |    //                                       
              |     |     |     |  +------------------------+ 
  4089        |     |     |     +--+ if(s.Pos("\n") != 0){  | 
              |     |     |     |  +--+---------------------+ 
  4090        |     |     |     |     +--- //                  MainF->print("**");
  4091        |     |     |     |     +--- s.Insert("c",s.Pos("\n")+1);
  4092        |     |     |     |     +--- fprintf(fp,"%s",s.c_str());
  4093        |     |     |     |     +--- s = "";
              |     |     |     |   +-+---+ 
  4094        |     |     |     |   |  }  | 
              |     |     |     |   +-+---+ 
              |     |     |     |   +-+-------+ 
  4094        |     |     |     |   |  else{  | 
              |     |     |     |   +-+-------+ 
  4095        |     |     |     |     +--- fprintf(fp,"%s",s.c_str());
              |     |     |     |   +-+---+ 
  4096        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
              |     |     |   +-+---+ 
  4097        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
  4098        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
  4099        |   |  }  | 
              |   +-----+ 
            +-+---+ 
  4100      |  }  | 
            +-----+