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 | } | +-----+