11 var
ns_pos = (typeof window.pageYOffset!=
'undefined');
12 var
khtml = ((navigator.userAgent).indexOf(
"KHTML") >= 0 ?
true :
false);
13 var
opera = ((navigator.userAgent).indexOf(
"Opera") >= 0 ?
true :
false);
14 var
ie = (typeof document.all !=
"undefined" && !
opera);
15 var
ie7 = (!
ns_pos && navigator.userAgent.indexOf(
"MSIE 7") != -1);
16 var
ie8 = (!
ns_pos && navigator.userAgent.indexOf(
"MSIE 8") != -1);
20 document.write(
"<iframe id='historyFrame' src='javascript:\"<html"+
"></"+
"html>\"' height='1' width='1' style='position:absolute;left:-800px'></iframe>");
24 if (typeof beforePrint !=
'undefined')
26 window.onbeforeprint = beforePrint;
27 window.onafterprint = afterPrint;
37 else if (document.addEventListener)
38 document.addEventListener(
"DOMContentLoaded",
startup,
false);
43 document.readyState ==
"complete" ||
44 document.readyState ==
"loaded")
59 document.body.style.visibility =
"hidden";
84 var
helpPage =
"http://www.w3.org/Talks/Tools/Slidy/help.html";
85 var
helpText =
"Navigate with mouse click, space bar, Cursor Left/Right, " +
86 "or Pg Up and Pg Dn. Use S and B to change font size.";
90 var
sizes =
new Array(
"10pt",
"12pt",
"14pt",
"16pt",
"18pt",
"20pt",
91 "22pt",
"24pt",
"26pt",
"28pt",
"30pt",
"32pt");
112 "contents?":
"Índice",
113 "table of contents":
"tabla de contenidos",
114 "Table of Contents":
"Tabla de Contenidos",
115 "restart presentation":
"Reiniciar presentación",
120 "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
121 "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.";
127 "table of contents":
"taula de continguts",
128 "Table of Contents":
"Taula de Continguts",
129 "restart presentation":
"Reiniciar presentació",
134 "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " +
135 "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.";
140 "contents?":
"Inhoud?",
141 "table of contents":
"inhoudsopgave",
142 "Table of Contents":
"Inhoudsopgave",
143 "restart presentation":
"herstart presentatie",
144 "restart?":
"Herstart?" 148 "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " +
149 "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.";
154 "contents?":
"Übersicht",
155 "table of contents":
"Inhaltsverzeichnis",
156 "Table of Contents":
"Inhaltsverzeichnis",
157 "restart presentation":
"Präsentation neu starten",
158 "restart?":
"Neustart" 162 "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " +
163 "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.";
168 "contents?":
"spis treści?",
169 "table of contents":
"spis treści",
170 "Table of Contents":
"Spis Treści",
171 "restart presentation":
"Restartuj prezentację",
172 "restart?":
"restart?" 176 "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" +
177 "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.";
183 "table of contents":
"table des matières",
184 "Table of Contents":
"Table des matières",
185 "restart presentation":
"Recommencer l'exposé",
190 "Naviguez avec la souris, la barre d'espace, les flèches " +
191 "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " +
192 "les touches S et B pour modifier la taille de la police.";
197 "contents?":
"tartalom",
198 "table of contents":
"tartalomjegyzék",
199 "Table of Contents":
"Tartalomjegyzék",
200 "restart presentation":
"bemutató újraindítása",
201 "restart?":
"újraindítás" 205 "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " +
206 "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " +
207 "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " +
213 "contents?":
"Indice",
214 "table of contents":
"indice",
215 "Table of Contents":
"Indice",
216 "restart presentation":
"Ricominciare la presentazione",
221 "Navigare con mouse, barra spazio, frecce sinistra/destra o " +
222 "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.";
227 "contents?":
"περιεχόμενα;",
228 "table of contents":
"πίνακας περιεχομένων",
229 "Table of Contents":
"Πίνακας Περιεχομένων",
230 "restart presentation":
"επανεκκίνηση παρουσίασης",
231 "restart?":
"επανεκκίνηση;" 235 "Πλοηγηθείτε με το κλίκ του ποντικιού, το space, τα βέλη αριστερά/δεξιά, " +
236 "ή Page Up και Page Down. Χρησιμοποιήστε τα πλήκτρα S και B για να αλλάξετε " +
237 "το μέγεθος της γραμματοσειράς.";
243 "table of contents":
"目次を表示",
244 "Table of Contents":
"目次",
245 "restart presentation":
"最初から再生",
250 "マウス左クリック ・ スペース ・ 左右キー " +
251 "または Page Up ・ Page Downで操作, S ・ Bでフォントサイズ変更";
257 "table of contents":
"目录",
258 "Table of Contents":
"目录",
259 "restart presentation":
"重新启动展示",
264 "用鼠标点击, 空格条, 左右箭头, Pg Up 和 Pg Dn 导航. " +
270 "contents?":
"содержание?",
271 "table of contents":
"оглавление",
272 "Table of Contents":
"Оглавление",
273 "restart presentation":
"перезапустить презентацию",
274 "restart?":
"перезапуск?" 278 "Перемещайтесь кликая мышкой, используя клавишу пробел, стрелки" +
279 "влево/вправо или Pg Up и Pg Dn. Клавиши S и B меняют размер шрифта.";
284 "contents?":
"innehåll",
285 "table of contents":
"innehållsförteckning",
286 "Table of Contents":
"Innehållsförteckning",
287 "restart presentation":
"visa presentationen från början",
288 "restart?":
"börja om" 292 "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " +
293 "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " +
294 "Använd tangenterna S och B för att ändra textens storlek.";
319 alert(
"already started");
322 slidy_started =
true;
326 lang = document.body.parentNode.getAttribute(
"lang");
329 lang = document.body.parentNode.getAttribute(
"xml:lang");
334 document.body.style.visibility =
"visible";
335 title = document.title;
336 toolbar = addToolbar();
337 wrapImplicitSlides();
338 slides = collectSlides();
339 notes = collectNotes();
340 objects = document.body.getElementsByTagName(
"object");
341 backgrounds = collectBackgrounds();
344 slidenum = findSlideNumber(location.href);
345 window.offscreenbuffering =
true;
346 sizeAdjustment = findSizeAdjust();
350 if (slides.length > 0)
353 slide.style.position =
"absolute";
357 setVisibilityAllIncremental(
"visible");
358 lastShown = previousIncrementalItem(
null);
364 setVisibilityAllIncremental(
"hidden");
365 setEosStatus(!nextIncrementalItem(lastShown));
371 toc = tableOfContents();
372 hideTableOfContents();
375 document.onclick = mouseButtonClick;
376 document.onmouseup = mouseButtonUp;
377 document.onkeydown = keyDown;
379 document.onkeypress = keyPress;
380 window.onresize = resized;
381 window.onscroll = scrolled;
382 window.onunload = unloaded;
393 setInterval(
"checkLocation()", 200);
398 String.prototype.localize =
function()
404 var
s, lookup = localize[
lang];
415 var lg = lang.split(
"-");
419 lookup = localize[lg[0]];
435 function hideImageToolbar()
439 var images = document.getElementsByTagName(
"IMG");
441 for (var
i = 0;
i < images.length; ++
i)
442 images[
i].setAttribute(
"galleryimg",
"no");
450 window.resizeBy(0,-1);
451 window.resizeBy(0, 1);
463 var
e = window.event;
470 e.returnValue =
false;
479 var agent = navigator.userAgent;
480 return (agent.indexOf(
"KHTML") >= 0 ?
true :
false);
487 if ( typeof( window.innerWidth ) ==
'number' )
488 width = window.innerWidth;
489 else if (document.documentElement && document.documentElement.clientWidth)
490 width = document.documentElement.clientWidth;
491 else if (document.body && document.body.clientWidth)
492 width = document.body.clientWidth;
496 if ( typeof( window.innerHeight ) ==
'number' )
497 height = window.innerHeight;
498 else if (document.documentElement && document.documentElement.clientHeight)
499 height = document.documentElement.clientHeight;
500 else if (document.body && document.body.clientHeight)
501 height = document.body.clientHeight;
503 if (height && (width/height > 1.05*1024/768))
505 width = height * 1024.0/768;
510 if (width != lastWidth || height != lastHeight)
514 else if (width >= 1000)
516 else if (width >= 800)
518 else if (width >= 600)
527 if (0 <= sizeIndex + sizeAdjustment &&
528 sizeIndex + sizeAdjustment < sizes.length)
533 adjustObjectDimensions(width, height);
535 document.body.style.fontSize = sizes[
sizeIndex];
555 if (toolbar && !
ns_pos && !ie7)
557 hackoffset = scrollXOffset();
559 toolbar.style.display =
"none";
562 if (scrollhack == 0 && !viewAll)
581 function showToolbar()
588 var xoffset = scrollXOffset();
589 toolbar.style.left = xoffset;
590 toolbar.style.right = xoffset;
601 toolbar.style.bottom = 0;
604 toolbar.style.display =
"block";
605 toolbar.style.visibility =
"visible";
626 function hideToolbar()
628 toolbar.style.display =
"none";
629 toolbar.style.visibility =
"hidden";
634 function toggleToolbar()
638 if (toolbar.style.display ==
"none")
640 toolbar.style.display =
"block";
641 toolbar.style.visibility =
"visible";
646 toolbar.style.display =
"none";
647 toolbar.style.visibility =
"hidden";
653 function scrollXOffset()
655 if (window.pageXOffset)
656 return self.pageXOffset;
658 if (document.documentElement &&
659 document.documentElement.scrollLeft)
660 return document.documentElement.scrollLeft;
663 return document.body.scrollLeft;
669 function scrollYOffset()
671 if (window.pageYOffset)
672 return self.pageYOffset;
674 if (document.documentElement &&
675 document.documentElement.scrollTop)
676 return document.documentElement.scrollTop;
679 return document.body.scrollTop;
686 function optimizeFontSize()
691 var dh = slide.scrollHeight;
692 var wh = getWindowHeight();
693 var u = 100 * dh / wh;
695 alert(
"window utilization = " + u +
"% (doc " 696 + dh +
" win " + wh +
")");
699 function getDocHeight(doc)
704 if (doc && doc.body && doc.body.offsetHeight)
705 return doc.body.offsetHeight;
707 if (doc && doc.body && doc.body.scrollHeight)
708 return doc.body.scrollHeight;
710 alert(
"couldn't determine document height");
713 function getWindowHeight()
715 if ( typeof( window.innerHeight ) ==
'number' )
716 return window.innerHeight;
718 if (document.documentElement && document.documentElement.clientHeight)
719 return document.documentElement.clientHeight;
721 if (document.body && document.body.clientHeight)
722 return document.body.clientHeight;
727 function documentHeight()
731 sh = document.body.scrollHeight;
732 oh = document.body.offsetHeight;
736 return (sh > oh ? sh : oh);
750 toolbar.style.display =
"none";
751 document.body.style.fontSize = sizes[
sizeIndex];
760 if (sizeIndex < sizes.length - 1)
765 toolbar.style.display =
"none";
766 document.body.style.fontSize = sizes[
sizeIndex];
776 function adjustObjectDimensions(width, height)
778 for( var
i = 0;
i < objects.length;
i++ )
780 var obj = objects[
i];
781 var mimeType = obj.getAttribute(
"type");
783 if (mimeType ==
"image/svg+xml" || mimeType ==
"application/x-shockwave-flash")
785 if ( !obj.initialWidth )
786 obj.initialWidth = obj.getAttribute(
"width");
788 if ( !obj.initialHeight )
789 obj.initialHeight = obj.getAttribute(
"height");
791 if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) ==
"%" )
793 var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1));
794 var newW = width * (w/100.0);
795 obj.setAttribute(
"width",newW);
798 if ( obj.initialHeight && obj.initialHeight.charAt(obj.initialHeight.length-1) ==
"%" )
800 var
h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1));
801 var newH = height * (h/100.0);
802 obj.setAttribute(
"height", newH);
808 function cancel(
event)
813 event.returnValue =
false;
815 if (
event.preventDefault)
816 event.preventDefault();
823 function keyDown(
event)
828 var
event = window.event;
834 key = window.event.keyCode;
835 else if (
event.which)
852 if (isShownToc() && key != 9 && key != 16 && key != 38 && key != 40)
854 hideTableOfContents();
856 if (key == 27 || key == 84 || key == 67)
857 return cancel(
event);
868 return cancel(
event);
875 previousSlide(
false);
876 return cancel(
event);
881 return cancel(
event);
885 previousSlide(!
event.shiftKey);
886 return cancel(
event);
891 return cancel(
event);
896 return cancel(
event);
900 nextSlide(!
event.shiftKey);
901 return cancel(
event);
912 return cancel(
event);
918 return cancel(
event);
923 return cancel(
event);
925 else if (key == 189 || key == 109)
928 return cancel(
event);
930 else if (key == 187 || key == 191 || key == 107)
933 return cancel(
event);
938 return cancel(
event);
943 return cancel(
event);
948 return cancel(
event);
953 return cancel(
event);
958 return cancel(
event);
963 alert((mouseClickEnabled ?
"enabled" :
"disabled") +
" mouse click advance");
964 return cancel(
event);
966 else if (key == 84 || key == 67)
969 showTableOfContents();
971 return cancel(
event);
976 return cancel(
event);
988 function keyPress(
event)
993 return key_wanted ? cancel(
event) :
true;
998 function mouseButtonUp(
e)
1000 selectedTextLen = getSelectedText().length;
1005 function mouseButtonClick(
e)
1007 var rightclick =
false;
1008 var leftclick =
false;
1009 var middleclick =
false;
1013 var
e = window.event;
1017 else if (e.srcElement)
1018 target = e.srcElement;
1021 if (target.nodeType == 3)
1022 target = target.parentNode;
1026 leftclick = (e.which == 1);
1027 middleclick = (e.which == 2);
1028 rightclick = (e.which == 3);
1039 rightclick = (e.button == 2);
1041 else leftclick =
true;
1045 if (selectedTextLen > 0)
1049 e.returnValue =
false;
1054 hideTableOfContents();
1059 if (mouseClickEnabled && leftclick &&
1060 target.nodeName !=
"EMBED" &&
1061 target.nodeName !=
"OBJECT" &&
1062 target.nodeName !=
"VIDEO" &&
1063 target.nodeName !=
"INPUT" &&
1064 target.nodeName !=
"TEXTAREA" &&
1065 target.nodeName !=
"SELECT" &&
1066 target.nodeName !=
"OPTION")
1071 e.returnValue =
false;
1075 function previousSlide(incremental)
1081 if ((incremental || slidenum == 0) && lastShown !=
null)
1083 lastShown = hidePreviousItem(lastShown);
1084 setEosStatus(
false);
1086 else if (slidenum > 0)
1091 slidenum = slidenum - 1;
1093 setVisibilityAllIncremental(
"visible");
1094 lastShown = previousIncrementalItem(
null);
1102 refreshToolbar(200);
1106 function nextSlide(incremental)
1112 if (incremental || slidenum == slides.length - 1)
1113 lastShown = revealNextItem(lastShown);
1115 if ((!incremental || lastShown ==
null) && slidenum < slides.length - 1)
1120 slidenum = slidenum + 1;
1123 setVisibilityAllIncremental(
"hidden");
1126 else if (!lastShown)
1128 if (last && incremental)
1134 setEosStatus(!nextIncrementalItem(lastShown));
1137 refreshToolbar(200);
1143 function firstSlide()
1157 setVisibilityAllIncremental(
"hidden");
1161 setEosStatus(!nextIncrementalItem(lastShown));
1169 function lastSlide()
1177 if (lastShown ==
null && slidenum < slides.length - 1)
1181 slidenum = slides.length - 1;
1183 setVisibilityAllIncremental(
"visible");
1184 lastShown = previousIncrementalItem(
null);
1190 setVisibilityAllIncremental(
"visible");
1191 lastShown = previousIncrementalItem(
null);
1200 function gotoSlide(
num)
1208 setVisibilityAllIncremental(
"hidden");
1209 setEosStatus(!nextIncrementalItem(lastShown));
1210 document.title = title +
" (" + (slidenum+1) +
")";
1215 function setEosStatus(
state)
1218 eos.style.color = (
state ?
"rgb(240,240,240)" :
"red");
1221 function showSlide(slide)
1223 syncBackground(slide);
1224 window.scrollTo(0,0);
1225 slide.style.visibility =
"visible";
1226 slide.style.display =
"block";
1229 function hideSlide(slide)
1231 slide.style.visibility =
"hidden";
1232 slide.style.display =
"none";
1235 function beforePrint()
1241 function afterPrint()
1250 function printSlides()
1257 function toggleView()
1274 function showAllSlides()
1278 for (var
i = 0;
i < slides.length; ++
i)
1282 slide.style.position =
"relative";
1283 slide.style.borderTopStyle =
"solid";
1284 slide.style.borderTopWidth =
"thin";
1285 slide.style.borderTopColor =
"black";
1289 slide.style.pageBreakBefore =
"avoid";
1291 slide.style.pageBreakBefore =
"always";
1298 setVisibilityAllIncremental(
"visible");
1304 for (var
i = 0;
i < notes.length; ++
i)
1306 showSlide(notes[
i]);
1316 function singleSlideView()
1320 for (var
i = 0;
i < slides.length; ++
i)
1324 slide.style.position =
"absolute";
1328 slide.style.borderStyle =
"none";
1333 slide.style.borderStyle =
"none";
1338 setVisibilityAllIncremental(
"visible");
1339 lastShown = previousIncrementalItem(
null);
1343 for (var
i = 0;
i < notes.length; ++
i)
1345 hideSlide(notes[
i]);
1351 function hasToken(str, token)
1360 var
result = str.match(pattern);
1363 for (var
i = 0;
i < result.length;
i++)
1365 if (result[
i] == token)
1373 function getClassList(element)
1375 if (typeof element.className !=
'undefined')
1376 return element.className;
1378 var clsname = (
ns_pos||
ie8) ?
"class" :
"className";
1379 return element.getAttribute(clsname);
1382 function hasClass(element,
name)
1384 var regexp =
new RegExp(
"(^| )" +
name +
"\W*");
1386 if (typeof element.className !=
'undefined')
1387 return regexp.test(element.className);
1389 var clsname = (
ns_pos||
ie8) ?
"class" :
"className";
1390 return regexp.test(element.getAttribute(clsname));
1393 function removeClass(element,
name)
1395 var regexp =
new RegExp(
"(^| )" +
name +
"\W*");
1398 if (typeof element.className !=
'undefined')
1400 clsval = element.className;
1404 clsval = clsval.replace(regexp,
"");
1405 element.className = clsval;
1410 var clsname = (
ns_pos||
ie8) ?
"class" :
"className";
1411 clsval = element.getAttribute(clsname);
1415 clsval = clsval.replace(regexp,
"");
1416 element.setAttribute(clsname, clsval);
1421 function addClass(element,
name)
1423 if (!hasClass(element,
name))
1425 if (typeof element.className !=
'undefined')
1426 element.className +=
" " +
name;
1429 var clsname = (
ns_pos||
ie8) ?
"class" :
"className";
1430 var clsval = element.getAttribute(clsname);
1431 clsval = clsval ? clsval +
" " +
name :
name;
1432 element.setAttribute(clsname, clsval);
1442 function wrapImplicitSlides()
1444 var
i, heading, node, next, div;
1445 var headings = document.getElementsByTagName(
"h1");
1450 for (i = 0; i < headings.length; ++
i)
1452 heading = headings[
i];
1454 if (heading.parentNode != document.body)
1457 node = heading.nextSibling;
1459 div = document.createElement(
"div");
1460 addClass(div,
"slide");
1461 document.body.replaceChild(div, heading);
1462 div.appendChild(heading);
1466 if (node.nodeType == 1 &&
1467 (node.nodeName ==
"H1" ||
1468 node.nodeName ==
"h1" ||
1469 node.nodeName ==
"DIV" ||
1470 node.nodeName ==
"div"))
1473 next = node.nextSibling;
1474 node = document.body.removeChild(node);
1475 div.appendChild(node);
1482 function collectSlides()
1484 var slides =
new Array();
1485 var divs = document.body.getElementsByTagName(
"div");
1487 for (var
i = 0;
i < divs.length; ++
i)
1491 if (hasClass(div,
"slide"))
1494 slides[slides.length] = div;
1497 div.style.display =
"none";
1498 div.style.visibility =
"hidden";
1501 var node1 = document.createElement(
"br");
1502 div.appendChild(node1);
1503 var node2 = document.createElement(
"br");
1504 div.appendChild(node2);
1506 else if (hasClass(div,
"background"))
1509 div.style.display =
"block";
1517 function collectNotes()
1519 var notes =
new Array();
1520 var divs = document.body.getElementsByTagName(
"div");
1522 for (var
i = 0;
i < divs.length; ++
i)
1526 if (hasClass(div,
"handout"))
1529 notes[notes.length] = div;
1532 div.style.display =
"none";
1533 div.style.visibility =
"hidden";
1542 function collectBackgrounds()
1544 var backgrounds =
new Array();
1545 var divs = document.body.getElementsByTagName(
"div");
1547 for (var
i = 0;
i < divs.length; ++
i)
1551 if (hasClass(div,
"background"))
1554 backgrounds[backgrounds.length] = div;
1558 if (getClassList(div) !=
"background")
1560 div.style.display =
"none";
1561 div.style.visibility =
"hidden";
1570 function syncBackground(slide)
1575 if (slide.currentStyle)
1576 bgColor = slide.currentStyle[
"backgroundColor"];
1577 else if (document.defaultView)
1579 var styles = document.defaultView.getComputedStyle(slide,
null);
1582 bgColor = styles.getPropertyValue(
"background-color");
1586 bgColor =
"transparent";
1590 bgColor ==
"transparent";
1592 if (bgColor ==
"transparent")
1594 var slideClass = getClassList(slide);
1596 for (var
i = 0;
i < backgrounds.length;
i++)
1598 background = backgrounds[
i];
1600 var bgClass = getClassList(background);
1602 if (matchingBackground(slideClass, bgClass))
1604 background.style.display =
"block";
1605 background.style.visibility =
"visible";
1609 background.style.display =
"none";
1610 background.style.visibility =
"hidden";
1618 function hideBackgrounds()
1620 for (var
i = 0;
i < backgrounds.length;
i++)
1622 background = backgrounds[
i];
1623 background.style.display =
"none";
1624 background.style.visibility =
"hidden";
1629 function matchingBackground(slideClass, bgClass)
1631 if (bgClass ==
"background")
1638 var
result = slideClass.match(pattern);
1641 for (var
i = 0;
i < result.length;
i++)
1643 if (hasToken(bgClass, result[
i]))
1651 function nextNode(
root, node)
1654 return root.firstChild;
1656 if (node.firstChild)
1657 return node.firstChild;
1659 if (node.nextSibling)
1660 return node.nextSibling;
1664 node = node.parentNode;
1666 if (!node || node ==
root)
1669 if (node && node.nextSibling)
1670 return node.nextSibling;
1677 function previousNode(
root, node)
1681 node =
root.lastChild;
1685 while (node.lastChild)
1686 node = node.lastChild;
1692 if (node.previousSibling)
1694 node = node.previousSibling;
1696 while (node.lastChild)
1697 node = node.lastChild;
1702 if (node.parentNode !=
root)
1703 return node.parentNode;
1713 function incrementalElementList()
1715 var inclist =
new Array();
1716 inclist[
"P"] =
true;
1717 inclist[
"PRE"] =
true;
1718 inclist[
"LI"] =
true;
1719 inclist[
"BLOCKQUOTE"] =
true;
1720 inclist[
"DT"] =
true;
1721 inclist[
"DD"] =
true;
1722 inclist[
"H2"] =
true;
1723 inclist[
"H3"] =
true;
1724 inclist[
"H4"] =
true;
1725 inclist[
"H5"] =
true;
1726 inclist[
"H6"] =
true;
1727 inclist[
"SPAN"] =
true;
1728 inclist[
"ADDRESS"] =
true;
1729 inclist[
"TABLE"] =
true;
1730 inclist[
"TR"] =
true;
1731 inclist[
"TH"] =
true;
1732 inclist[
"TD"] =
true;
1733 inclist[
"IMG"] =
true;
1734 inclist[
"OBJECT"] =
true;
1738 function nextIncrementalItem(node)
1744 node = nextNode(slide, node);
1746 if (node ==
null || node.parentNode ==
null)
1749 if (node.nodeType == 1)
1751 if (node.nodeName ==
"BR")
1754 if (hasClass(node,
"incremental")
1755 && okayForIncremental[node.nodeName])
1758 if (hasClass(node.parentNode,
"incremental")
1759 && !hasClass(node,
"non-incremental"))
1767 function previousIncrementalItem(node)
1773 node = previousNode(slide, node);
1775 if (node ==
null || node.parentNode ==
null)
1778 if (node.nodeType == 1)
1780 if (node.nodeName ==
"BR")
1783 if (hasClass(node,
"incremental")
1784 && okayForIncremental[node.nodeName])
1787 if (hasClass(node.parentNode,
"incremental")
1788 && !hasClass(node,
"non-incremental"))
1798 function setVisibilityAllIncremental(
value)
1800 var node = nextIncrementalItem(
null);
1804 node.style.visibility =
value;
1805 node = nextIncrementalItem(node);
1811 function revealNextItem(node)
1813 node = nextIncrementalItem(node);
1815 if (node && node.nodeType == 1)
1816 node.style.visibility =
"visible";
1823 function hidePreviousItem(node)
1825 if (node && node.nodeType == 1)
1826 node.style.visibility =
"hidden";
1828 return previousIncrementalItem(node);
1833 function patchAnchors()
1835 var anchors = document.body.getElementsByTagName(
"a");
1837 for (var
i = 0;
i < anchors.length; ++
i)
1839 anchors[
i].onclick = clickedAnchor;
1843 function clickedAnchor(
e)
1846 var
e = window.event;
1851 if (pageAddress(this.href) == pageAddress(location.href))
1854 var newslidenum = findSlideNumber(this.href);
1856 if (newslidenum != slidenum)
1860 slidenum = newslidenum;
1867 location.href = this.href;
1873 function pageAddress(uri)
1875 var
i = uri.indexOf(
"#");
1878 i = uri.indexOf(
"%23");
1885 return uri.substr(0, i);
1888 function showSlideNumber()
1890 slideNumElement.innerHTML =
"slide".localize() +
" " +
1891 (slidenum + 1) +
"/" + slides.length;
1897 function checkLocation()
1899 var hash = location.hash;
1901 if (slidenum > 0 && (hash ==
"" || hash ==
"#"))
1903 else if (hash.length > 2 && hash !=
"#("+(slidenum+1)+
")")
1905 var
num = parseInt(location.hash.substr(2));
1917 function setLocation()
1919 var uri = pageAddress(location.href);
1920 var hash =
"#(" + (slidenum+1) +
")";
1928 if (uri != location.href )
1929 location.href = uri;
1932 hash =
"(" + (slidenum+1) +
")";
1934 if (!ie && location.hash != hash && location.hash !=
"")
1935 location.hash = hash;
1937 document.title = title +
" (" + (slidenum+1) +
")";
1942 function onFrameLoaded(hash)
1944 location.hash = hash;
1945 var uri = pageAddress(location.href);
1946 location.href = uri + hash;
1950 function pushHash(hash)
1952 if (hash ==
"") hash =
"#(1)";
1953 window.location.hash = hash;
1954 var doc = document.getElementById(
"historyFrame").contentWindow.document;
1955 doc.open(
"javascript:'<html></html>'");
1956 doc.write(
"<html><head><script type=\"text/javascript\">parent.onFrameLoaded('"+
1957 (hash) +
"');</script></head><body>hello mum</body></html>");
1965 function findSlideNumber(uri)
1969 var
i = uri.indexOf(
"#");
1976 var anchor =
unescape(uri.substr(i+1));
1979 var
target = document.getElementById(anchor);
1985 var
re = /\((
\d)+\)/;
1987 if (anchor.match(re))
1989 var
num = parseInt(anchor.substring(1, anchor.length-1));
1991 if (num > slides.length)
2003 if (anchor.match(re))
2005 var
num = parseInt(anchor.substring(1, anchor.length-1));
2007 if (num > slides.length)
2025 if (target.nodeName.toLowerCase() ==
"div" &&
2026 hasClass(target,
"slide"))
2034 target = target.parentNode;
2042 for (i = 0; i < slides.length; ++
i)
2044 if (slides[i] == target)
2054 function slideName(
index)
2057 var slide = slides[
index];
2059 var heading = findHeading(slide);
2062 name = extractText(heading);
2065 name = title +
"(" + (
index + 1) +
")";
2067 name.replace(/\&/
g,
"&");
2068 name.replace(/\</
g,
"<");
2069 name.replace(/\>/
g,
">");
2075 function findHeading(node)
2076 {
if (!node || node.nodeType != 1)
2079 if (node.nodeName ==
"H1" || node.nodeName ==
"h1")
2082 var child = node.firstChild;
2086 node = findHeading(child);
2091 child = child.nextSibling;
2098 function extractText(node)
2104 if (node.nodeType == 3)
2105 return node.nodeValue;
2108 if (node.nodeType == 1)
2110 node = node.firstChild;
2115 text = text + extractText(node);
2116 node = node.nextSibling;
2127 function findCopyright()
2130 var meta = document.getElementsByTagName(
"meta");
2132 for (var
i = 0;
i < meta.length; ++
i)
2134 name = meta[
i].getAttribute(
"name");
2135 content = meta[
i].getAttribute(
"content");
2137 if (name ==
"copyright")
2144 function findSizeAdjust()
2147 var meta = document.getElementsByTagName(
"meta");
2149 for (var
i = 0;
i < meta.length; ++
i)
2151 name = meta[
i].getAttribute(
"name");
2152 content = meta[
i].getAttribute(
"content");
2154 if (name ==
"font-size-adjustment")
2161 function addToolbar()
2163 var slideCounter, page;
2165 var toolbar = createElement(
"div");
2166 toolbar.setAttribute(
"class",
"toolbar");
2170 var
right = document.createElement(
"div");
2171 right.setAttribute(
"style",
"float: right; text-align: right");
2173 slideCounter = document.createElement(
"div")
2174 slideCounter.innerHTML =
"slide".localize() +
" n/m";
2175 right.appendChild(slideCounter);
2176 toolbar.appendChild(right);
2178 var
left = document.createElement(
"div");
2179 left.setAttribute(
"style",
"text-align: left");
2182 eos = document.createElement(
"span");
2183 eos.innerHTML =
"* ";
2184 left.appendChild(eos);
2186 var
help = document.createElement(
"a");
2187 help.setAttribute(
"href", helpPage);
2188 help.setAttribute(
"title", helpText.localize());
2189 help.innerHTML =
"help?".localize();
2190 left.appendChild(help);
2193 var gap1 = document.createTextNode(
" ");
2194 left.appendChild(gap1);
2196 var
contents = document.createElement(
"a");
2197 contents.setAttribute(
"href",
"javascript:toggleTableOfContents()");
2198 contents.setAttribute(
"title",
"table of contents".
localize());
2199 contents.innerHTML =
"contents?".localize();
2200 left.appendChild(contents);
2202 var gap2 = document.createTextNode(
" ");
2203 left.appendChild(gap2);
2205 var start = document.createElement(
"a");
2206 start.setAttribute(
"href",
"javascript:firstSlide()");
2207 start.setAttribute(
"title",
"restart presentation".
localize());
2208 start.innerHTML =
"restart?".localize();
2212 left.appendChild(start);
2214 var copyright = findCopyright();
2218 var span = document.createElement(
"span");
2219 span.innerHTML = copyright;
2220 span.style.color =
"black";
2221 span.style.marginLeft =
"4em";
2222 left.appendChild(span);
2225 toolbar.appendChild(left);
2229 toolbar.style.position = (ie7 ?
"fixed" :
"absolute");
2230 toolbar.style.zIndex =
"200";
2231 toolbar.style.width =
"99.9%";
2232 toolbar.style.height =
"1.2em";
2233 toolbar.style.top =
"auto";
2234 toolbar.style.bottom =
"0";
2235 toolbar.style.left =
"0";
2236 toolbar.style.right =
"0";
2237 toolbar.style.textAlign =
"left";
2238 toolbar.style.fontSize =
"60%";
2239 toolbar.style.color =
"red";
2240 toolbar.borderWidth = 0;
2241 toolbar.className =
"toolbar";
2242 toolbar.style.background =
"rgb(240,240,240)";
2249 var sp = document.createElement(
"span");
2250 sp.innerHTML =
" * ";
2251 toolbar.appendChild(sp);
2254 var
help = document.createElement(
"a");
2255 help.setAttribute(
"href", helpPage);
2256 help.setAttribute(
"title", helpText.localize());
2257 help.innerHTML =
"help?".localize();
2258 toolbar.appendChild(help);
2261 var gap1 = document.createTextNode(
" ");
2262 toolbar.appendChild(gap1);
2264 var
contents = document.createElement(
"a");
2265 contents.setAttribute(
"href",
"javascript:toggleTableOfContents()");
2266 contents.setAttribute(
"title",
"table of contents".
localize());
2267 contents.innerHTML =
"contents?".localize();
2268 toolbar.appendChild(contents);
2270 var gap2 = document.createTextNode(
" ");
2271 toolbar.appendChild(gap2);
2273 var start = document.createElement(
"a");
2274 start.setAttribute(
"href",
"javascript:firstSlide()");
2275 start.setAttribute(
"title",
"restart presentation".
localize());
2276 start.innerHTML =
"restart?".localize();
2280 toolbar.appendChild(start);
2282 var copyright = findCopyright();
2286 var span = document.createElement(
"span");
2287 span.innerHTML = copyright;
2288 span.style.color =
"black";
2289 span.style.marginLeft =
"2em";
2290 toolbar.appendChild(span);
2293 slideCounter = document.createElement(
"div")
2294 slideCounter.style.position =
"absolute";
2295 slideCounter.style.width =
"auto";
2296 slideCounter.style.height =
"1.2em";
2297 slideCounter.style.top =
"auto";
2298 slideCounter.style.bottom = 0;
2299 slideCounter.style.right =
"0";
2300 slideCounter.style.textAlign =
"right";
2301 slideCounter.style.color =
"red";
2302 slideCounter.style.background =
"rgb(240,240,240)";
2304 slideCounter.innerHTML =
"slide".localize() +
" n/m";
2305 toolbar.appendChild(slideCounter);
2309 toolbar.onclick = stopPropagation;
2310 document.body.appendChild(toolbar);
2311 slideNumElement = slideCounter;
2312 setEosStatus(
false);
2317 function isShownToc()
2319 if (toc && toc.style.visible ==
"visible")
2325 function showTableOfContents()
2329 if (toc.style.visibility !=
"visible")
2331 toc.style.visibility =
"visible";
2332 toc.style.display =
"block";
2335 if (ie7 && slidenum == 0)
2339 hideTableOfContents();
2343 function hideTableOfContents()
2345 if (toc && toc.style.visibility !=
"hidden")
2347 toc.style.visibility =
"hidden";
2348 toc.style.display =
"none";
2361 function toggleTableOfContents()
2365 if (toc.style.visible !=
"visible")
2366 showTableOfContents();
2368 hideTableOfContents();
2373 function gotoEntry(
e)
2378 var
e = window.event;
2382 else if (e.srcElement)
2383 target = e.srcElement;
2386 if (target.nodeType == 3)
2387 target = target.parentNode;
2389 if (target && target.nodeType == 1)
2391 var uri = target.getAttribute(
"href");
2398 slidenum = findSlideNumber(uri);
2402 setVisibilityAllIncremental(
"hidden");
2403 setEosStatus(!nextIncrementalItem(lastShown));
2418 hideTableOfContents(e);
2425 function gotoTocEntry(
event)
2430 var
event = window.event;
2434 key = window.event.keyCode;
2435 else if (
event.which)
2453 var uri = this.getAttribute(
"href");
2460 slidenum = findSlideNumber(uri);
2464 setVisibilityAllIncremental(
"hidden");
2465 setEosStatus(!nextIncrementalItem(lastShown));
2479 hideTableOfContents();
2481 return cancel(
event);
2484 if (key == 40 && this.next)
2487 return cancel(
event);
2490 if (key == 38 && this.previous)
2492 this.previous.focus();
2493 return cancel(
event);
2499 function isTitleSlide(slide)
2501 return hasClass(slide,
"title");
2505 function tableOfContents()
2507 var toc = document.createElement(
"div");
2508 addClass(toc,
"toc");
2511 var heading = document.createElement(
"div");
2512 addClass(heading,
"toc-heading");
2513 heading.innerHTML =
"Table of Contents".localize();
2515 heading.style.textAlign =
"center";
2516 heading.style.width =
"100%";
2517 heading.style.margin =
"0";
2518 heading.style.marginBottom =
"1em";
2519 heading.style.borderBottomStyle =
"solid";
2520 heading.style.borderBottomColor =
"rgb(180,180,180)";
2521 heading.style.borderBottomWidth =
"1px";
2523 toc.appendChild(heading);
2524 var previous =
null;
2526 for (var
i = 0;
i < slides.length; ++
i)
2528 var title = hasClass(slides[
i],
"title");
2529 var
num = document.createTextNode((i + 1) +
". ");
2531 toc.appendChild(num);
2533 var
a = document.createElement(
"a");
2534 a.setAttribute(
"href",
"#(" + (i+1) +
")");
2537 addClass(a,
"titleslide");
2539 var
name = document.createTextNode(slideName(i));
2540 a.appendChild(name);
2541 a.onclick = gotoEntry;
2542 a.onkeydown = gotoTocEntry;
2543 a.previous = previous;
2553 if (i < slides.length - 1)
2555 var br = document.createElement(
"br");
2556 toc.appendChild(br);
2562 toc.focus =
function () {
2567 toc.onmouseup = mouseButtonUp;
2569 toc.onclick =
function (
e) {
2570 e||(
e=window.event);
2572 if (selectedTextLen <= 0)
2573 hideTableOfContents();
2577 if (
e.cancel != undefined)
2580 if (
e.returnValue != undefined)
2581 e.returnValue =
false;
2586 toc.style.position =
"absolute";
2587 toc.style.zIndex =
"300";
2588 toc.style.width =
"60%";
2589 toc.style.maxWidth =
"30em";
2590 toc.style.height =
"30em";
2591 toc.style.overflow =
"auto";
2592 toc.style.top =
"auto";
2593 toc.style.right =
"auto";
2594 toc.style.left =
"4em";
2595 toc.style.bottom =
"4em";
2596 toc.style.padding =
"1em";
2597 toc.style.background =
"rgb(240,240,240)";
2598 toc.style.borderStyle =
"solid";
2599 toc.style.borderWidth =
"2px";
2600 toc.style.fontSize =
"60%";
2602 document.body.insertBefore(toc, document.body.firstChild);
2606 function replaceByNonBreakingSpace(str)
2608 for (var
i = 0;
i < str.length; ++
i)
2613 function initOutliner()
2615 var
items = document.getElementsByTagName(
"LI");
2617 for (var
i = 0;
i < items.length; ++
i)
2621 if (!hasClass(target.parentNode,
"outline"))
2624 target.onclick = outlineClick;
2628 target.onmouseover = hoverOutline;
2629 target.onmouseout = unhoverOutline;
2632 if (foldable(target))
2634 target.foldable =
true;
2635 target.onfocus =
function () {outline =
this;};
2636 target.onblur =
function () {outline =
null;};
2638 if (!target.getAttribute(
"tabindex"))
2639 target.setAttribute(
"tabindex",
"0");
2641 if (hasClass(target,
"expand"))
2648 addClass(target,
"nofold");
2649 target.visible =
true;
2650 target.foldable =
false;
2655 function foldable(item)
2657 if (!item || item.nodeType != 1)
2660 var node = item.firstChild;
2664 if (node.nodeType == 1 && isBlock(node))
2667 node = node.nextSibling;
2677 removeClass(item,
"unfolded");
2678 addClass(item,
"folded");
2681 var node = item ? item.firstChild :
null;
2685 if (node.nodeType == 1 && isBlock(node))
2688 node.display = getElementStyle(node,
"display",
"display");
2689 node.style.display =
"none";
2690 node.style.visibility =
"hidden";
2693 node = node.nextSibling;
2696 item.visible =
false;
2699 function unfold(item)
2703 addClass(item,
"unfolded");
2704 removeClass(item,
"folded");
2707 var node = item ? item.firstChild :
null;
2711 if (node.nodeType == 1 && isBlock(node))
2714 node.style.display = (node.display ? node.display :
"block");
2715 node.style.visibility =
"visible";
2718 node = node.nextSibling;
2721 item.visible =
true;
2724 function outlineClick(
e)
2726 var rightclick =
false;
2730 var
e = window.event;
2734 else if (e.srcElement)
2735 target = e.srcElement;
2738 if (target.nodeType == 3)
2739 target = target.parentNode;
2741 while (target && target.visible == undefined)
2742 target = target.parentNode;
2748 rightclick = (e.which == 3);
2750 rightclick = (e.button == 2);
2752 if (!rightclick && target.visible != undefined)
2754 if (target.foldable)
2764 e.returnValue =
false;
2770 function hoverOutline(
e)
2775 var
e = window.event;
2779 else if (e.srcElement)
2780 target = e.srcElement;
2783 if (target.nodeType == 3)
2784 target = target.parentNode;
2786 while (target && target.visible == undefined)
2787 target = target.parentNode;
2789 if (target && target.foldable)
2790 target.style.cursor =
"pointer";
2795 function unhoverOutline(
e)
2800 var
e = window.event;
2804 else if (e.srcElement)
2805 target = e.srcElement;
2808 if (target.nodeType == 3)
2809 target = target.parentNode;
2811 while (target && target.visible == undefined)
2812 target = target.parentNode;
2815 target.style.cursor =
"default";
2821 function stopPropagation(
e)
2825 window.event.cancelBubble =
true;
2830 e.cancelBubble =
true;
2831 e.stopPropagation();
2837 function isBlock(elem)
2839 var
tag = elem.nodeName;
2841 return tag ==
"OL" || tag ==
"UL" || tag ==
"P" ||
2842 tag ==
"LI" || tag ==
"TABLE" || tag ==
"PRE" ||
2843 tag ==
"H1" || tag ==
"H2" || tag ==
"H3" ||
2844 tag ==
"H4" || tag ==
"H5" || tag ==
"H6" ||
2845 tag ==
"BLOCKQUOTE" || tag ==
"ADDRESS";
2848 function getElementStyle(elem, IEStyleProp, CSSStyleProp)
2850 if (elem.currentStyle)
2852 return elem.currentStyle[IEStyleProp];
2854 else if (window.getComputedStyle)
2856 var compStyle = window.getComputedStyle(elem,
"");
2857 return compStyle.getPropertyValue(CSSStyleProp);
2863 function createElement(element)
2865 if (typeof document.createElementNS !=
'undefined')
2867 return document.createElementNS(
'http://www.w3.org/1999/xhtml', element);
2870 if (typeof document.createElement !=
'undefined')
2872 return document.createElement(element);
2879 function getElementsByTagName(
name)
2881 if (typeof document.getElementsByTagNameNS !=
'undefined')
2883 return document.getElementsByTagNameNS(
'http://www.w3.org/1999/xhtml',
name);
2886 if (typeof document.getElementsByTagName !=
'undefined')
2888 return document.getElementsByTagName(
name);
2944 function getSelectedText()
2948 if (window.getSelection)
2949 return window.getSelection().toString();
2951 if (document.getSelection)
2952 return document.getSelection().toString();
2954 if (document.selection)
2955 return document.selection.createRange().text;
setTimeout(hideSlides, 50)
Even though this code calls delete on s
std::string unescape(std::string const &str)
********************************************************************************************************oooooo oooooo oooo o ooooooooo ooooo ooo ooooo ooooo ooo oooooo Y88 d8P Y8b d88 ooooo o88o o8888o o888o o888o o8o o888o o8o Y8bood8P ********************************************************************************************************THIS IS A DEVELOPMENT VERSION OF GENIE IT HAS *NOT *BEEN FULLY VALIDATED AND IT HAS EXPERIMENTAL FEATURES USE THIS VERSION AT YOUR OWN RISK If you prefer to use a version with validated physics content
really ***Steps to reduce memory usage ***create the data structure connected to the tree only when needed *reduce the size of the elemental items(Double_t=> Float_t could damage precision)*[x] create a different structure for each tracker
this prevents interlacing of message information from different threads We call the thread running MessageLoggerScribe see How the Message Service Starts Up the server side All user programatic interaction is on the client but the configuration(driven by the.cfg file) is dealt with on the server side.The path looks like this(each step is detailed below) the constructor of LogInfo constructs a new MessageSender specifying that this is at severity level and that the category is myCategory When the<< x is encountered, that merely sends<< x to the MessageSender.In the line LogInfo("myCategory")<< x;one has created a **temporary **instance of LogInfo--this getsdestructed upon completion of the statement.The whole working of LogInfois in that destruction:Since LogInfo has an auto_ptr to the MessageSender, when LogInfo goes away, the auto_ptr goes away, and this causesa delete of the MessageSender.The destructor of MessageSender is whereall the action--at the client side--happens.The MessageSender instance owns an ErrorObj on the heap;this can be viewedas a receptacle for the severity and category information and a collectionof items sent in by operator<<.The ctor of MessageSender makes a newErrorObj--AND MessageSender NEVER DELETES THAT ErrorObj!!--Instead, the destructor of MessageSender[which, we will remember, isinvoked as soon as the LogInfo("myCategory")<< x;statement has beenexecuted] interacts with the servier side, placing in motion events thatwill lead to the pointer to this ErrorObj to be used and ultimatelydeleted by code on the server side.The ErrorObj is on the heap, so thispointer remains meaningful in the server side it will be used in.The interaction of MessageSender with the server side consists of two steps.First, it uses the MessageDrop instance to supply the module and run/event context.[There is a separate discussion below about the MessageDrop.] The module and context go into the ErrorObj.Second, it invokes the static LOG method of MessageLoggerQ, supplying the pointer to the ErrorObj.Now we leave the client side and go to the server side, which picks up theLOG_A_MESSAGE entry in the course of a consume(opcode, operand) call on theMessageLoggerQ.The run() method of MessageLoggerScribe has an eternaldo, which continually tries to consume from this queue(consume() sleeps onthe queue being empty).The method log() is passed the pointer to the ErrorObj.log() getsa reference to the ELcontextSupplier from the administrator, and setsthe context to that context remembered in the ErrorObj.(This is necessarysince the run/event of the message issuer is known to the client thread, having been provided by the before-module and before-event callbacks of themessage **service **running in the **client **thread, so this information hadneeded to cross the client/server boundary.) log() then parses the categories string and(if there are multiple categories) invokes the ErrorLog for this object for each category in the string.ErrorLog is in the ErrorLogger code;we are not documenting this code here.The effect is to shop the ErrorObj to every destination;in each case thecode for that destination(normally ELoutput) will apply the limits andthresholds, format the message, add header information, and output the message.Finally, the completion of the do in MessageLoggerScribe::run() deletes theErrorObj--completing the promise made when it was passed responsibility forthis heap-resident object.---------------The MessageDrop---------------The purpose of the message drop is to convey framework information to thepoint-of-invocation where a message is issued.The functions issuingmessages may not naturally have access to the ModuleDescription or theEventID(which contains the run and event numbers) or the list(preparedby configuration in MessageLoggerScrivbe) of debug-enabled modules.Theprocess of preparing a message requires this information.In discussing how the MessageDrop works, we will pay attention to the factsthat the MessageLoggerScript will be running in a distinct thread from thecode issuing the message, and that there may be several threads processingevents, each issuing messages independantly.MessageDrop is athread-specific singleton.The following files interact with MessageDrop:In the MessageLogger package:MessageDrop.h MessageDrop.cc MessageLogger.h MessageSender.cc In the MessageService package:MessageLogger.ccMessageDrop.h defines a singleton pattern.The(private) default ctor initializes the public data:ModuleName is""runEvent is"pre-events"debugEnabled is true There is a public instance() methodMessageDrop.cc refines that to be a thread-specific singleton pattern.This is accomplished by replacing the static bare pointer to MessageDrop which would have been present in an ordinary singleton, with a boost::thread_specific_ptr< MessageDrop > The latter is a object that may contain several but only one is accessible in this thread The if the pointer is null
b In MessageService src MessageLoggerDefaults h
Althouth this seems the obvious thing to if limit is not present in the category PSet in this it will violate by choosing the default limit established for the destination over the specific limit for that category established overall See in Configuring for the work needed in MessageLoggerScribe to decide how to establish these limits The logic implementing these rules appears in ELmap h and interval
*Create branch CreateBranch *(BranchName,&VarName, BranchName+"/T")`|***One-dimension vectors *----------------------**|Example|energy of the generated particles|*|Data structure|`std Create branch BranchName NShowerIndexStr T *****Example Number of hits in the plane *Data structure PlaneData_t< T > *Indices *(2)|first Create branch BranchName NShowerIndexStr[3] T *****Example dE dX of a single hit *Data structure HitData_t< T > *Indices *(3)|first Create branch BranchName NShowerIndexStr[3] MaxShowerHitsIndexStr T *****Example position coordinates of a hit *Data structure HitCoordData_t< T > *Indices *(4)|first Create branch BranchName NShowerIndexStr[3] MaxShowerHitsIndexStr[3] T ***Auxiliary detector information *****Example number of auxiliary detectors a particle crossed *Data structure std::vector< T > *Index first
constexpr auto const & left(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
an exception should be thrown only if an ambiguous lookup is attempted It is an error to register more than one *factory function *for any long form name
*file AnalysisTree_module cc *brief Module to create a TTree for analysis *authors tjyang fnal sowjanyag phys ksu edu **Taken from uboone code Imported by Karl k warburton sheffield ac uk *with the help of Tingjun Yang **Current implementation with one set of branches for each tracking algorithm *The data structure which hosts the addresses of the tree branches is *dynamically allocated on and it can be optionally destroyed at the *end of each event *The data and it is contained in a C vector of *one per algorithm These structures can also be allocated on demand *Each of these structures is connected to a set of one branch per *data member Data members are vectors of numbers or vectors of fixed size *C arrays The vector index represents the tracks reconstructed by the and each has a fixed size pool for connect to a *ROOT TrackDataStruct is initialized in a state which does *not allow any and in such state trying *to connect to a tree has no effect This is done so that the *AnalysisTreeDataStruct can be initialized and then the TrackDataStruct instances are initialized one by *one when the number of tracks needed is known *A similar mechanism is implemented for the truth information **The connected to *the ROOT then *each of the tracking algorithm data is resized to host the correct number *of reconstructed tracks and connected to the tree Then the normal process of *filling the event data and then the tree take place the whole *data structure is freed and the tree is left in a invalid state(branch *addresses are invalid).It could be possible to make the tree in a valid *state by resetting the addresses
Single threaded MessageLogger design plan The key points of change are on either side of the it needs to know whetehter this is single or multiple threaded to make this choice The change is to substitute filling and committing the buffer for the SingleConsuerQ There will be some commands with other slight changes as well On the right
Event finding and building.
TPRegexp re("-l([\\d\\w]*)")