abc プロジェクト
14.10.5. MakeIndexHTML メンバ関数説明

メンバ関数名 MakeIndexHTML
定義ファイル名Visual.cpp
定義行 204
所属名 TVisualDM
アクセス属性 private
宣言形式 void MakeIndexHTML ( )
概要 ABCLib_Index.htmlを作成する。
戻り値
パラメタ説明
機能説明
備考

呼出し元関数一覧表
名称 定義ファイル名 定義行
1 TVisualDM::Exec Visual.cpp 62

呼出し先関数一覧表
名称 定義ファイル名 定義行
1 TMainF::err main.cpp 271
2 TVisualDM::StrToHTMLStr Visual.cpp 691
3 c_str

4 ExtractFileName

5 fclose

6 fopen

7 fprintf

8 IntToStr

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

参照メンバ変数一覧表
名称 定義ファイル名 定義行
1 TVisualDM::DirName Visual.h 36
2 TVisualDM::RegionIndent Visual.h 38
3 TVisualDM::TuneRegionList Visual.h 37

参照先一覧表
名称 種別 定義ファイル名 定義行
1 TScript クラス pass3.h 151
2 TToken クラス pass1.h 216
3 TTuneRegion クラス TuneRegion.h 88

関数論理チャート

        |  +----------------------------------+ 
   204  +--+ void TVisualDM::MakeIndexHTML()  | 
   205     | {                                | 
           +--+-------------------------------+ 
   206        +--- FILE *fp;
   207        +--- AnsiString FileName,s;
   208        +--- TTuneRegion *TuneRegion;
   209        +--- int i;
   210        +--- TList *TokenList;
   211        +--- TToken *Token;
   212        +--- int RegionIdx = 0;
   213        |    
   214        +--- TokenList = MainF->TokenList;
   215        |    
   216        +--- FileName = DirName + "\\ABCLib/ABCLibATLog.html";
   217        +--- fp = fopen(FileName.c_str(),"wt");
              |  +------------------+ 
   218        +--+ if(fp == NULL){  | 
              |  +--+---------------+ 
   219        |     +--- MainF->err("File Open Err "+ FileName);
              |     |  +----------+ 
   220        |     +--+ return;  | 
              |     |  +----------+ 
              |   +-+---+ 
   221        |   |  }  | 
              |   +-----+ 
   222        +--- //
   223        |    // HTMLファイルを出力する。  
   224        |    //                           
   225        +--- fprintf(fp,"<html>\n");
   226        +--- fprintf(fp,"<head>\n");
   227        +--- fprintf(fp,"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=shift_jis\">\n");
   228        +--- fprintf(fp,"<meta name=\"GENERATOR\" content=\"ABCLibScript 1.0\">\n");
   229        +--- fprintf(fp,"<title>ABCLibScript</title>\n");
   230        +--- fprintf(fp,"</head>\n");
   231        |    
   232        +--- fprintf(fp,"<body onLoad = \"JSStart()\" >\n");
   233        +--- fprintf(fp,"<h1 align = \"center\"><b>ABCLibScript</b>\n");
   234        +--- fprintf(fp,"</h1>\n");
   235        |    
   236        +--- //
   237        |    // ファイル名  
   238        |    //             
   239        +--- s = "SrcFile = " + DirName +"\\"+ ExtractFileName(MainF->SrcFileName);
   240        +--- s = StrToHTMLStr(s);
   241        +--- fprintf(fp,"<h3 align = \"center\"><b>%s</b>\n",s.c_str());
   242        +--- fprintf(fp,"</h3>\n");
   243        |    
   244        +--- //
   245        |    // 実行状態の表を出力  
   246        |    //                     
   247        +--- fprintf(fp,"<table border=\"1\" width=\"100%%\" height=\"%d\">\n",16*(TuneRegionList->Count+1));
   248        +--- fprintf(fp,"<tr>\n");
   249        +--- fprintf(fp,"<td width=\"35%%\" height=\"14\">Auto tuning region name</td>\n");
   250        +--- fprintf(fp,"<td width=\"30%%\" height=\"14\">Execute status</td>\n");
   251        +--- fprintf(fp,"<td width=\"25%%\" height=\"14\">Link to result page</td>\n");
   252        +--- fprintf(fp,"</tr>\n");
   253        |    
   254        +--- //
   255        |    // 各TuneRegionの名前・状態・リンクを出力  
   256        |    //                                         
              |  +------------------------------------------------+ 
   257        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   258        |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[i];
   259        |     |    
   260        |     +--- fprintf(fp,"<tr>\n");
   261        |     +--- //    <td width="46%" height="16"><a href="#1" name="0">matmul1 [Select1.f :45- 56]</a></td>
   262        |     +--- fprintf(fp,"<td width=\"35%%\" height=\"16\"><a href=\"#%d\">%s</td>\n",i,TuneRegion->Name);
   263        |     +--- fprintf(fp,"<td width=\"30%%\" height=\"16\">\n");
   264        |     +--- fprintf(fp,"<applet\n");
   265        |     +--- fprintf(fp,"codebase = \"./\"\n");
   266        |     +--- fprintf(fp,"code = \"vlapplet.Applet1.class\"\n");
   267        |     +--- fprintf(fp,"archive = \"vlapplet.jar\"\n");
   268        |     |    
   269        |     +--- fprintf(fp,"name = \"bar%d\"\n",i);
   270        |     +--- fprintf(fp,"width = \"100%%\"\n");
   271        |     +--- fprintf(fp,"height = \"100%%\"\n");
   272        |     +--- fprintf(fp,"alt = \"Javaアプレットです。\">\n");
   273        |     +--- fprintf(fp,"<param name=\"FolderName\" value=\"bar0-\">\n");
   274        |     +--- //      fprintf(fp,"<param name=\"BackColor\" value=\"16777215\">\n");
              |     |  +------------------------------------------------+ 
   275        |     +--+ if(i == 0){ // Table読込みは、最初のAppletのみ | 
              |     |  +--+---------------------------------------------+ 
   276        |     |     +--- fprintf(fp,"<param name=\"FILENAME\" value=\"ABCLibATLog.dat\">\n");
              |     |   +-+---+ 
   277        |     |   |  }  | 
              |     |   +-----+ 
   278        |     +--- fprintf(fp,"</applet></td>\n");
   279        |     |    
   280        |     +--- fprintf(fp,"<td width=\"25%%\" height=\"16\" align=\"center\">\n");
   281        |     +--- fprintf(fp,"<p align=\"center\">");
   282        |     +--- fprintf(fp,"<a href=\"./ABCLibATLog_%s.html\" target=\"_blank\">Result</a></td>\n",
   283        |     |                TuneRegion->Name);                                                       
   284        |     +--- fprintf(fp,"</tr>\n");
              |   +-+---+ 
   285        |   |  }  | 
              |   +-----+ 
   286        +--- fprintf(fp,"</table>\n");
   287        +--- fprintf(fp,"\n");
   288        +--- //  <p>
   289        |             
   290        |             
   291        +--- //
   292        |    // JavaScript部分を出力  
   293        |    //                       
   294        +--- fprintf(fp,"<script type=\"text/javascript\">\n");
   295        +--- fprintf(fp,"<!--\n");
   296        +--- fprintf(fp,"var id = -1;\n");
              |  +------------------------------------------------+ 
   297        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   298        |     +--- fprintf(fp,"var id%d = -1;\n",i);
              |   +-+---+ 
   299        |   |  }  | 
              |   +-----+ 
   300        |    
   301        +--- fprintf(fp,"function JSStart() {\n");
   302        +--- fprintf(fp,"if(id == -1){\n");
   303        +--- fprintf(fp,"id = document.bar0.getId(\"Table@d\");\n");
              |  +------------------------------------------------+ 
   304        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   305        |     +--- fprintf(fp,"id%d = document.bar%d.getId(\"@p\");\n",i,i);
              |   +-+---+ 
   306        |   |  }  | 
              |   +-----+ 
   307        +--- fprintf(fp,"}\n");
              |  +------------------------------------------------+ 
   308        +--+ for(i = 0 ; i < TuneRegionList->Count ; i++){  | 
              |  +--+---------------------------------------------+ 
   309        |     +--- fprintf(fp,"bar%d.put(id%d,document.bar0.get(id,%d)/100.0);\n",i,i,i);
              |   +-+---+ 
   310        |   |  }  | 
              |   +-----+ 
   311        +--- fprintf(fp,"window.setTimeout(\"JSStart()\", 1000);\n");
   312        +--- fprintf(fp,"}\n");
   313        +--- fprintf(fp,"// -->\n");
   314        +--- fprintf(fp,"</script>\n");
   315        +--- fprintf(fp,"<noscript>\n");
   316        +--- fprintf(fp,"JavaScript対応ブラウザで表示してください。</p>\n");
   317        +--- fprintf(fp,"<p></noscript>\n");
   318        +--- fprintf(fp,"<br>\n");
   319        |    
   320        |     
   321        +--- //
   322        |    // ソースコード+反転+Linkを出力                      
   323        |    // また、スペースや<>"を置換して出力する。                 
   324        |    // さらにリージョンの深さに対応したインデントを付加する。  
   325        |    //                                                         
   326        +--- AnsiString ss;
   327        +--- TScript *Script;
   328        +--- RegionIndent = 0;
   329        +--- int RegionIdxStack[1024];
   330        |    
   331        +--- ss = "";
              |  +------------------------------------------+ 
   332        +--+ for(i = 0 ; i < TokenList->Count ; i++){ | 
              |  +--+---------------------------------------+ 
   333        |     +--- Token = (TToken *)TokenList->Items[i];
   334        |     +--- s = Token->OrgStr;
              |     |  +--------------------------------+ 
   335        |     +--+ if(Token->TokId == tid_null){  | 
              |     |  +--+-----------------------------+ 
   336        |     |     |    
              |     |   +-+---+ 
   337        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+---------------------------------------+ 
   337        |     |   |  else if(Token->TokId == tid_LineEnd){  | 
              |     |   +-+---------------------------------------+ 
              |     |     |  +----------------+ 
   338        |     |     +--+ if(ss != ""){  | 
              |     |     |  +--+-------------+ 
              |     |     |     |  +----------------------------------------------+ 
   339        |     |     |     +--+ for(int ii = 0 ; ii < RegionIndent ; ii++){  | 
              |     |     |     |  +--+-------------------------------------------+ 
   340        |     |     |     |     +--- fprintf(fp,"&nbsp&nbsp");   // インデント+2
              |     |     |     |   +-+---+ 
   341        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
   342        |     |     |     +--- fprintf(fp,"%s<br>\n",ss);
              |     |     |   +-+---+ 
   343        |     |     |   |  }  | 
              |     |     |   +-----+ 
   344        |     |     +--- ss = "";
              |     |   +-+---+ 
   345        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+---------------------------------+ 
   345        |     |   |  else if(Token->Script != NULL){  | 
              |     |   +-+---------------------------------+ 
   346        |     |     +--- Script = (TScript *)Token->Script;
              |     |     |  +------------------------------------+ 
   347        |     |     +--+ if(Script->ScRegion == scr_start){ | 
              |     |     |  +--+---------------------------------+ 
   348        |     |     |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[RegionIdx];
   349        |     |     |     +--- ss += "<i><a name=\""+IntToStr(RegionIdx)+"\">";
   350        |     |     |     +--- ss += "<a href=\"./ABCLibATLog_"+TuneRegion->Name+".html\"  target=\"_blank\"" ;
   351        |     |     |     +--- ss += "<font color=\"#0000FF\">"+StrToHTMLStr(s)+"</font>";
   352        |     |     |     +--- ss += "</i></a>";
              |     |     |     |  +----------------------------------------------+ 
   353        |     |     |     +--+ for(int ii = 0 ; ii < RegionIndent ; ii++){  | 
              |     |     |     |  +--+-------------------------------------------+ 
   354        |     |     |     |     +--- fprintf(fp,"&nbsp&nbsp");   // インデント+2
              |     |     |     |   +-+---+ 
   355        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
   356        |     |     |     +--- fprintf(fp,"%s<br>\n",ss);
   357        |     |     |     +--- ss = "";
   358        |     |     |     +--- RegionIdxStack[RegionIndent] = RegionIdx;
   359        |     |     |     +--- RegionIdx++;
   360        |     |     |     +--- RegionIndent++;
              |     |     |   +-+---+ 
   361        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+---------------------------------------+ 
   361        |     |     |   |  else if(Script->ScRegion == scr_end){  | 
              |     |     |   +-+---------------------------------------+ 
   362        |     |     |     +--- RegionIndent--;
   363        |     |     |     +--- #if 0
   364        |     |     |     +--- ss += "<i><font color=\"#0000FF\">"+StrToHTMLStr(s)+"</font></i>";
   365        |     |     |     +--- #else
   366        |     |     |     +--- TuneRegion = (TTuneRegion *)TuneRegionList->Items[RegionIdxStack[RegionIndent]];
   367        |     |     |     +--- ss += "<i><a name=\""+IntToStr(RegionIdx)+"\">";
   368        |     |     |     +--- ss += "<a href=\"./ABCLibATLog_"+TuneRegion->Name+".html\"  target=\"_blank\"" ;
   369        |     |     |     +--- ss += "<font color=\"#0000FF\">"+StrToHTMLStr(s)+"</font>";
   370        |     |     |     +--- ss += "</i></a>";
   371        |     |     |     +--- #endif
   372        |     |     |     |    
              |     |     |   +-+---+ 
   373        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-------------------------------------------+ 
   373        |     |     |   |  else if(Script->ScRegion == scr_substart){ | 
              |     |     |   +-+-------------------------------------------+ 
   374        |     |     |     +--- ss += "<i><font color=\"#008000\">"+StrToHTMLStr(s)+"</font></i>";
   375        |     |     |     |    
              |     |     |     |  +----------------------------------------------+ 
   376        |     |     |     +--+ for(int ii = 0 ; ii < RegionIndent ; ii++){  | 
              |     |     |     |  +--+-------------------------------------------+ 
   377        |     |     |     |     +--- fprintf(fp,"&nbsp&nbsp");   // インデント+2
              |     |     |     |   +-+---+ 
   378        |     |     |     |   |  }  | 
              |     |     |     |   +-----+ 
   379        |     |     |     +--- fprintf(fp,"%s<br>\n",ss);
   380        |     |     |     +--- ss = "";
   381        |     |     |     |    
   382        |     |     |     +--- RegionIndent++;
              |     |     |   +-+---+ 
   383        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-----------------------------------------+ 
   383        |     |     |   |  else if(Script->ScRegion == scr_subend){ | 
              |     |     |   +-+-----------------------------------------+ 
   384        |     |     |     +--- ss += "<i><font color=\"#008000\">"+StrToHTMLStr(s)+"</font></i>";
   385        |     |     |     +--- RegionIndent--;
              |     |     |   +-+---+ 
   386        |     |     |   |  }  | 
              |     |     |   +-+---+ 
              |     |     |   +-+-------+ 
   386        |     |     |   |  else{  | 
              |     |     |   +-+-------+ 
   387        |     |     |     +--- ss += "<i><font color=\"#000080\">"+StrToHTMLStr(s)+"</font></i>";
   388        |     |     |     +--- //              ss += "<i>"+StrToHTMLStr(s)+"</i>";
              |     |     |   +-+---+ 
   389        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
   390        |     |   |  }  | 
              |     |   +-+---+ 
              |     |   +-+-------+ 
   390        |     |   |  else{  | 
              |     |   +-+-------+ 
   391        |     |     +--- ss += StrToHTMLStr(s);
              |     |     |  +--------------------------------------------------------+ 
   392        |     |     +--+ if(Token->TokId == tid_END){    // Endの後は、改行追加 | 
              |     |     |  +--+-----------------------------------------------------+ 
   393        |     |     |     +--- ss += "<br>";
              |     |     |   +-+---+ 
   394        |     |     |   |  }  | 
              |     |     |   +-----+ 
              |     |   +-+---+ 
   395        |     |   |  }  | 
              |     |   +-----+ 
              |   +-+---+ 
   396        |   |  }  | 
              |   +-----+ 
   397        +--- fprintf(fp,"</body>\n");
   398        +--- fprintf(fp,"</html>\n");
   399        |    
   400        +--- fclose(fp);
            +-+---+ 
   401      |  }  | 
            +-----+