abc プロジェクト
14.10.5. MakeIndexHTML メンバ関数説明 |
メンバ関数名 | MakeIndexHTML |
定義ファイル名 | Visual.cpp |
定義行 | 204 |
所属名 | TVisualDM |
アクセス属性 | private |
宣言形式 | void MakeIndexHTML ( ) |
概要 | ABCLib_Index.htmlを作成する。 |
戻り値 | |
パラメタ説明 | |
機能説明 | |
備考 | |
呼出し元関数一覧表
呼出し先関数一覧表
参照外部変数一覧表
参照メンバ変数一覧表
|
名称 |
定義ファイル名 |
定義行 |
1 |
TVisualDM::DirName |
Visual.h |
36 |
2 |
TVisualDM::RegionIndent |
Visual.h |
38 |
3 |
TVisualDM::TuneRegionList |
Visual.h |
37 |
参照先一覧表
関数論理チャート
| +----------------------------------+
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,"  "); // インデント+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,"  "); // インデント+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,"  "); // インデント+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 | } |
+-----+