Added: incubator/singa/site/trunk/doxygen/html/search/namespaces_0.js URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/namespaces_0.js?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/namespaces_0.js (added) +++ incubator/singa/site/trunk/doxygen/html/search/namespaces_0.js Mon Apr 22 10:37:18 2019 @@ -0,0 +1,4 @@ +var searchData= +[ + ['singa',['singa',['../namespacesinga.html',1,'']]] +];
Added: incubator/singa/site/trunk/doxygen/html/search/nomatches.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/nomatches.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/nomatches.html (added) +++ incubator/singa/site/trunk/doxygen/html/search/nomatches.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,12 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="NoMatches">No Matches</div> +</div> +</body> +</html> Added: incubator/singa/site/trunk/doxygen/html/search/search.css URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/search.css?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/search.css (added) +++ incubator/singa/site/trunk/doxygen/html/search/search.css Mon Apr 22 10:37:18 2019 @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + Added: incubator/singa/site/trunk/doxygen/html/search/search.js URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/search.js?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/search.js (added) +++ incubator/singa/site/trunk/doxygen/html/search/search.js Mon Apr 22 10:37:18 2019 @@ -0,0 +1,791 @@ +function convertToId(search) +{ + var result = ''; + for (i=0;i<search.length;i++) + { + var c = search.charAt(i); + var cn = c.charCodeAt(0); + if (c.match(/[a-z0-9\u0080-\uFFFF]/)) + { + result+=c; + } + else if (cn<16) + { + result+="_0"+cn.toString(16); + } + else + { + result+="_"+cn.toString(16); + } + } + return result; +} + +function getXPos(item) +{ + var x = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; +} + +function getYPos(item) +{ + var y = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; +} + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, inFrame, label) +{ + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.insideFrame = inFrame; + this.searchLabel = label; + + // ----------- DOM Elements + + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); } + + this.DOMSearchSelect = function() + { return document.getElementById("MSearchSelect"); } + + this.DOMSearchSelectWindow = function() + { return document.getElementById("MSearchSelectWindow"); } + + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); } + + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); } + + this.DOMSearchClose = function() + { return document.getElementById("MSearchClose"); } + + this.DOMSearchBox = function() + { return document.getElementById("MSearchBox"); } + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() + { + var searchSelectWindow = this.DOMSearchSelectWindow(); + var searchField = this.DOMSearchSelect(); + + if (this.insideFrame) + { + var left = getXPos(searchField); + var top = getYPos(searchField); + left += searchField.offsetWidth + 6; + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + left -= searchSelectWindow.offsetWidth; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + else + { + var left = getXPos(searchField); + var top = getYPos(searchField); + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + + // stop selection hide timer + if (this.hideTimeout) + { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() + { + this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) + { + if (this.keyTimeout) // kill running timer + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) + { + if (e.shiftKey==1) + { + this.OnSearchSelectShow(); + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + child.focus(); + return; + } + } + return; + } + else if (window.frames.MSearchResults.searchResults) + { + var elem = window.frames.MSearchResults.searchResults.NavNext(0); + if (elem) elem.focus(); + } + } + else if (e.keyCode==27) // Escape out of the search field + { + this.DOMSearchField().blur(); + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + this.Activate(false); + return; + } + + // strip whitespaces + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) // search value has changed + { + if (searchValue != "") // non-empty search + { + // set timer for search update + this.keyTimeout = setTimeout(this.name + '.Search()', + this.keyTimeoutLength); + } + else // empty search field + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + } + } + } + + this.SelectItemCount = function(id) + { + var count=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + count++; + } + } + return count; + } + + this.SelectItemSet = function(id) + { + var i,j=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + var node = child.firstChild; + if (j==id) + { + node.innerHTML='•'; + } + else + { + node.innerHTML=' '; + } + j++; + } + } + } + + // Called when an search filter selection is made. + // set item with index id as the active item + this.OnSelectItem = function(id) + { + this.searchIndex = id; + this.SelectItemSet(id); + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + if (searchValue!="" && this.searchActive) // something was found -> do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down + { + this.searchIndex++; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==38 && this.searchIndex>0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of <Search()>. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e<searchData.length; e++) + { + var id = searchData[e][0]; + var srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + var srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + var srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+e); + setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = searchData[e][1][0]; + srEntry.appendChild(srLink); + if (searchData[e][1].length==2) // single result + { + srLink.setAttribute('href',searchData[e][1][1][0]); + if (searchData[e][1][1][1]) + { + srLink.setAttribute('target','_parent'); + } + var srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = searchData[e][1][1][2]; + srEntry.appendChild(srScope); + } + else // multiple results + { + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + var srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (var c=0; c<searchData[e][1].length-1; c++) + { + var srChild = document.createElement('a'); + srChild.setAttribute('id','Item'+e+'_c'+c); + setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); + setClassAttr(srChild,'SRScope'); + srChild.setAttribute('href',searchData[e][1][c+1][0]); + if (searchData[e][1][c+1][1]) + { + srChild.setAttribute('target','_parent'); + } + srChild.innerHTML = searchData[e][1][c+1][2]; + srChildren.appendChild(srChild); + } + srEntry.appendChild(srChildren); + } + srResult.appendChild(srEntry); + results.appendChild(srResult); + } +} + +function init_search() +{ + var results = document.getElementById("MSearchSelectWindow"); + for (var key in indexSectionLabels) + { + var link = document.createElement('a'); + link.setAttribute('class','SelectItem'); + link.setAttribute('onclick','searchBox.OnSelectItem('+key+')'); + link.href='javascript:void(0)'; + link.innerHTML='<span class="SelectionMark"> </span>'+indexSectionLabels[key]; + results.appendChild(link); + } + searchBox.OnSelectItem(0); +} + Added: incubator/singa/site/trunk/doxygen/html/search/search_l.png URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/search_l.png?rev=1857944&view=auto ============================================================================== Binary file - no diff available. Propchange: incubator/singa/site/trunk/doxygen/html/search/search_l.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: incubator/singa/site/trunk/doxygen/html/search/search_m.png URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/search_m.png?rev=1857944&view=auto ============================================================================== Binary file - no diff available. Propchange: incubator/singa/site/trunk/doxygen/html/search/search_m.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: incubator/singa/site/trunk/doxygen/html/search/search_r.png URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/search_r.png?rev=1857944&view=auto ============================================================================== Binary file - no diff available. Propchange: incubator/singa/site/trunk/doxygen/html/search/search_r.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: incubator/singa/site/trunk/doxygen/html/search/searchdata.js URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/searchdata.js?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/searchdata.js (added) +++ incubator/singa/site/trunk/doxygen/html/search/searchdata.js Mon Apr 22 10:37:18 2019 @@ -0,0 +1,30 @@ +var indexSectionsWithContent = +{ + 0: "_abcdefghiklmnoprstuvwx~", + 1: "_abcdefgilmnoprstuvwx", + 2: "s", + 3: "abcdefgilmnoprstuvw~", + 4: "bdhkl", + 5: "i" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "functions", + 4: "variables", + 5: "typedefs" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Functions", + 4: "Variables", + 5: "Typedefs" +}; + Added: incubator/singa/site/trunk/doxygen/html/search/typedefs_0.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/typedefs_0.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/typedefs_0.html (added) +++ incubator/singa/site/trunk/doxygen/html/search/typedefs_0.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="typedefs_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> Added: incubator/singa/site/trunk/doxygen/html/search/typedefs_0.js URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/typedefs_0.js?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/typedefs_0.js (added) +++ incubator/singa/site/trunk/doxygen/html/search/typedefs_0.js Mon Apr 22 10:37:18 2019 @@ -0,0 +1,4 @@ +var searchData= +[ + ['initializerconf',['InitializerConf',['../namespacesinga.html#ac7e303fc44cfdbf2611a6e69affa42e9',1,'singa']]] +]; Added: incubator/singa/site/trunk/doxygen/html/search/variables_0.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_0.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_0.html (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_0.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> Added: incubator/singa/site/trunk/doxygen/html/search/variables_0.js URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_0.js?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_0.js (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_0.js Mon Apr 22 10:37:18 2019 @@ -0,0 +1,4 @@ +var searchData= +[ + ['block_5f',['block_',['../classsinga_1_1Tensor.html#a5f7211731ad2f464748fb2f9395d1180',1,'singa::Tensor']]] +]; Added: incubator/singa/site/trunk/doxygen/html/search/variables_1.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_1.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_1.html (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_1.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_1.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> Added: incubator/singa/site/trunk/doxygen/html/search/variables_1.js URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_1.js?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_1.js (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_1.js Mon Apr 22 10:37:18 2019 @@ -0,0 +1,4 @@ +var searchData= +[ + ['defaultdevice',['defaultDevice',['../namespacesinga.html#af5fd1cb4e1a4b5ae9bba1377b034eb8d',1,'singa']]] +]; Added: incubator/singa/site/trunk/doxygen/html/search/variables_2.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_2.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_2.html (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_2.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_2.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> Added: incubator/singa/site/trunk/doxygen/html/search/variables_2.js URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_2.js?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_2.js (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_2.js Mon Apr 22 10:37:18 2019 @@ -0,0 +1,4 @@ +var searchData= +[ + ['host_5f',['host_',['../classsinga_1_1Device.html#a3d27f7538aabe42e9eea3f10cf702148',1,'singa::Device']]] +]; Added: incubator/singa/site/trunk/doxygen/html/search/variables_3.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_3.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_3.html (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_3.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> Added: incubator/singa/site/trunk/doxygen/html/search/variables_3.js URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_3.js?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_3.js (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_3.js Mon Apr 22 10:37:18 2019 @@ -0,0 +1,4 @@ +var searchData= +[ + ['kdatawidth',['kDataWidth',['../namespacesinga.html#ac5251edd2ae9cde0ad5c22ba98756469',1,'singa']]] +]; Added: incubator/singa/site/trunk/doxygen/html/search/variables_4.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_4.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_4.html (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_4.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_4.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> Added: incubator/singa/site/trunk/doxygen/html/search/variables_4.js URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/search/variables_4.js?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/search/variables_4.js (added) +++ incubator/singa/site/trunk/doxygen/html/search/variables_4.js Mon Apr 22 10:37:18 2019 @@ -0,0 +1,4 @@ +var searchData= +[ + ['lang_5f',['lang_',['../classsinga_1_1Device.html#a6401c02a3f4a96994f37ed3312cacb45',1,'singa::Device']]] +]; Added: incubator/singa/site/trunk/doxygen/html/singleton_8h_source.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/singleton_8h_source.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/singleton_8h_source.html (added) +++ incubator/singa/site/trunk/doxygen/html/singleton_8h_source.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,79 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Apache Singa: /home/moaz/incubator-singa/include/singa/utils/singleton.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">Apache Singa + </div> + <div id="projectbrief">A General Distributed Deep Learning Library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_14a988756d30161f7e1f48b05d03905d.html">singa</a></li><li class="navelem"><a class="el" href="dir_54125cd652f9635a64a4101de1b8704d.html">utils</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">singleton.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">*</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">* Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">* or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">* distributed with this work for additional information</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">* regarding copyright ownership. The ASF licenses this file</span></di v><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">* to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">* "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">* with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">*</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">* http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">*</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span clas s="comment">* Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">* software distributed under the License is distributed on an</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">* KIND, either express or implied. See the License for the</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">* specific language governing permissions and limitations</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">* under the License.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">*</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">*************************************************************/</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifndef SINGA_UTILS_SINGLETON_H_</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define SINGA_UTILS_SINGLETON_H_</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// http://stackoverflow.com/questions/2576022/efficient-thread-safe-singleton-in-c</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">template</span><<span cla ss="keyword">typename</span> T></div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSingleton.html"> 28</a></span> <span class="keyword">class </span><a class="code" href="classSingleton.html">Singleton</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> T* Instance() {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> T data_;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> &data_;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> };</div><div class="line"><a name="l000 35"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">/*</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">template<typename T></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">class TSingleton {</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> public:</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"> static T* Instance() {</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment"> static thread_local T data_; // thread_local is not available in some</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> // compilers</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> return &data_;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> }</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">};</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">*/</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#endif // SINGA_UTILS_SINGLETON_H_</span></div><div class="ttc" id="classSingleton_html"><div class="ttname"><a href="classSingleton.html">Singleton</a></div><div class="ttdoc">Thread-safe implementation for C++11 according to. </div><div class="ttdef"><b>Definition:</b> singleton .h:28</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Apr 22 2019 12:27:05 for Apache Singa by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.13 +</small></address> +</body> +</html> Added: incubator/singa/site/trunk/doxygen/html/snapshot_8h_source.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/snapshot_8h_source.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/snapshot_8h_source.html (added) +++ incubator/singa/site/trunk/doxygen/html/snapshot_8h_source.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,86 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Apache Singa: /home/moaz/incubator-singa/include/singa/io/snapshot.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">Apache Singa + </div> + <div id="projectbrief">A General Distributed Deep Learning Library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_14a988756d30161f7e1f48b05d03905d.html">singa</a></li><li class="navelem"><a class="el" href="dir_953eafc3caccd34fc2601f376f19d1ef.html">io</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">snapshot.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">*</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">* Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">* or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">* distributed with this work for additional information</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">* regarding copyright ownership. The ASF licenses this file</span></di v><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">* to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">* "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">* with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">*</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">* http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">*</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span clas s="comment">* Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">* software distributed under the License is distributed on an</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">* KIND, either express or implied. See the License for the</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">* specific language governing permissions and limitations</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">* under the License.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">*</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">*************************************************************/</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifndef SINGA_UTILS_SNAPSHOT_H_</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define SINGA_UTILS_SNAPSHOT_H_</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "singa/io/reader.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "singa/io/writer.h"</span></div><div class="li ne"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "singa/utils/logging.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "singa/proto/core.pb.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "singa/core/tensor.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <unordered_set></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <unordered_map></span></div><div class=" line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespacesinga.html">singa</a> {</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classsinga_1_1Snapshot.html"> 44</a></span> <span class="keyword">class </span><a class="code" href="classsinga_1_1Snapshot.html">Snapshot</a> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">enum</span> Mode { kRead, kWrite };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="cl asssinga_1_1Snapshot.html#a6c953392f9d314ed0bf644a5d64eac84">Snapshot</a>(<span class="keyword">const</span> std::string& prefix, Mode mode, <span class="keywordtype">int</span> max_param_size = 10);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  ~<a class="code" href="classsinga_1_1Snapshot.html">Snapshot</a>() {}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::vector<std::pair<std::string, Tensor>> <a class="code" href="classsinga_1_1Snapshot.html#a1b5a7c9bd8571523929f973d60911a9c">Read</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::vector<std::pair<std::string, Shape>> <a class="code" href="classsinga_1_1Snapshot.html#a25c10f3e39b912fb0a72b4e575c60c0f">ReadShape</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="classsinga_1_1Tensor.html">Tensor</a> <a class="cod e" href="classsinga_1_1Snapshot.html#a1b5a7c9bd8571523929f973d60911a9c">Read</a>(<span class="keyword">const</span> std::string& Key);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  Shape <a class="code" href="classsinga_1_1Snapshot.html#a25c10f3e39b912fb0a72b4e575c60c0f">ReadShape</a>(<span class="keyword">const</span> std::string& key);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">void</span> <a class="code" href="classsinga_1_1Snapshot.html#a3a5ec45388f191e01668ef8486d4b8f7">Write</a>(<span class="keyword">const</span> std::string& key, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>& param);</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classsinga_1_1Snapshot.html#ae311f3448715ebc110c1b238c56dce9b"> 68</a></span>  <span class="keywordtype">int</span> <a class="code" href="classsinga_1_1Snapshot.html#ae311f3448715ebc110c1b238c56dce9b">version</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> version_;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">int</span> version_ = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::string prefix_;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Mode mode_;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::unique_ptr<io:: BinFileWriter> bin_writer_ptr_;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  std::unique_ptr<io::Writer> text_writer_ptr_;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::unique_ptr<io::BinFileReader> bin_reader_ptr_;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::unordered_set<std::string> param_names_;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  std::unordered_map<std::string, Tensor> param_map_;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> };</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> } <span class="comment">// namespace singa</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="p reprocessor">#endif // SINGA_UTILS_SNAPSHOT_H_</span></div><div class="ttc" id="classsinga_1_1Snapshot_html_a1b5a7c9bd8571523929f973d60911a9c"><div class="ttname"><a href="classsinga_1_1Snapshot.html#a1b5a7c9bd8571523929f973d60911a9c">singa::Snapshot::Read</a></div><div class="ttdeci">std::vector< std::pair< std::string, Tensor > > Read()</div><div class="ttdoc">Read parameters saved as tensors from checkpoint file. </div></div> +<div class="ttc" id="classsinga_1_1Snapshot_html_a6c953392f9d314ed0bf644a5d64eac84"><div class="ttname"><a href="classsinga_1_1Snapshot.html#a6c953392f9d314ed0bf644a5d64eac84">singa::Snapshot::Snapshot</a></div><div class="ttdeci">Snapshot(const std::string &prefix, Mode mode, int max_param_size=10)</div><div class="ttdoc"><prefix>.model is the binary file for parameter key-value pair. </div></div> +<div class="ttc" id="classsinga_1_1Snapshot_html_ae311f3448715ebc110c1b238c56dce9b"><div class="ttname"><a href="classsinga_1_1Snapshot.html#ae311f3448715ebc110c1b238c56dce9b">singa::Snapshot::version</a></div><div class="ttdeci">int version() const</div><div class="ttdoc">available for singa > 1.0.1 </div><div class="ttdef"><b>Definition:</b> snapshot.h:68</div></div> +<div class="ttc" id="classsinga_1_1Tensor_html"><div class="ttname"><a href="classsinga_1_1Tensor.html">singa::Tensor</a></div><div class="ttdoc">A Tensor instance is a multi-dimensional array resident on a Device (default device is the host CPU)...</div><div class="ttdef"><b>Definition:</b> tensor.h:56</div></div> +<div class="ttc" id="classsinga_1_1Snapshot_html_a25c10f3e39b912fb0a72b4e575c60c0f"><div class="ttname"><a href="classsinga_1_1Snapshot.html#a25c10f3e39b912fb0a72b4e575c60c0f">singa::Snapshot::ReadShape</a></div><div class="ttdeci">std::vector< std::pair< std::string, Shape > > ReadShape()</div><div class="ttdoc">Read parameter shapes from description file. </div></div> +<div class="ttc" id="classsinga_1_1Snapshot_html_a3a5ec45388f191e01668ef8486d4b8f7"><div class="ttname"><a href="classsinga_1_1Snapshot.html#a3a5ec45388f191e01668ef8486d4b8f7">singa::Snapshot::Write</a></div><div class="ttdeci">void Write(const std::string &key, const Tensor &param)</div><div class="ttdoc">Serialize and dump out parameter. </div></div> +<div class="ttc" id="classsinga_1_1Snapshot_html"><div class="ttname"><a href="classsinga_1_1Snapshot.html">singa::Snapshot</a></div><div class="ttdoc">The snapshot management. </div><div class="ttdef"><b>Definition:</b> snapshot.h:44</div></div> +<div class="ttc" id="namespacesinga_html"><div class="ttname"><a href="namespacesinga.html">singa</a></div><div class="ttdoc">Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements...</div><div class="ttdef"><b>Definition:</b> common.h:48</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Apr 22 2019 12:27:05 for Apache Singa by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.13 +</small></address> +</body> +</html> Added: incubator/singa/site/trunk/doxygen/html/splitbar.png URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/splitbar.png?rev=1857944&view=auto ============================================================================== Binary file - no diff available. Propchange: incubator/singa/site/trunk/doxygen/html/splitbar.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: incubator/singa/site/trunk/doxygen/html/string_8h_source.html URL: http://svn.apache.org/viewvc/incubator/singa/site/trunk/doxygen/html/string_8h_source.html?rev=1857944&view=auto ============================================================================== --- incubator/singa/site/trunk/doxygen/html/string_8h_source.html (added) +++ incubator/singa/site/trunk/doxygen/html/string_8h_source.html Mon Apr 22 10:37:18 2019 @@ -0,0 +1,80 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Apache Singa: /home/moaz/incubator-singa/include/singa/utils/string.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">Apache Singa + </div> + <div id="projectbrief">A General Distributed Deep Learning Library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div id="nav-path" class="navpath"> + <ul> +<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_14a988756d30161f7e1f48b05d03905d.html">singa</a></li><li class="navelem"><a class="el" href="dir_54125cd652f9635a64a4101de1b8704d.html">utils</a></li> </ul> +</div> +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">string.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">*</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">* Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">* or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">* distributed with this work for additional information</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">* regarding copyright ownership. The ASF licenses this file</span></di v><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">* to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">* "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">* with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">*</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">* http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">*</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span clas s="comment">* Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">* software distributed under the License is distributed on an</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">* KIND, either express or implied. See the License for the</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">* specific language governing permissions and limitations</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">* under the License.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">*</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">*************************************************************/</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifndef SINGA_UTILS_TOKENIZER_H_</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define SINGA_UTILS_TOKENIZER_H_</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00027"></a> <span class="lineno"> 27</span> <span class="preprocessor">#include "singa/utils/logging.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespacesinga.html">singa</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> icasecmp(<span class="keyword">const</span> <span class="keywordtype">string</span>& l, <span class="keyword">const</span> <span class="keywordtype">string</span>& r) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">return</span> l.size() == r.size() &&</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  equal(l.cbegin(), l.cend(), r.cbegin( ),</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  [](string::value_type l1, string::value_type r1) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">return</span> toupper(l1) == toupper(r1);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  });</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> <span class="keywordtype">string</span> ToLowerCase(<span class="keyword">const</span> <span class="keywordtype">string</span>& input) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">string</span> out;</div><div class= "line"><a name="l00040"></a><span class="lineno"> 40</span>  out.resize(input.size());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::transform(input.begin(), input.end(), out.begin(), ::tolower);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> ArgPos(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** arglist, <span class="keyword">const</span> <span class="keywordtype">char</span>* arg) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">for </span> (<span class="keywordtype">int</span> i = 0; i < argc; i++) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (strcmp(arglist[i], arg) == 0) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> i;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">inline</span> std::string VecToStr(<span class="keyword">const</span> std::vector<T> & in) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::string out = <span class="stringliteral">"("</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> x : in) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  out += std::to_string(x) + <span class="stringliteral">", "</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  out += <span class="stringliteral">") "</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classsinga_1_1Tokenizer.html"> 77</a></span> <span class="keyword">class </span><a class="code" href="classsinga_1_1Tokenizer.html">Tokenizer</a> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classsinga_1_1Tokenizer.html">Tokenizer</a>(<span class="keyword">const</span> std::string& str, <span class="keyword">const</span> std::string& sep): start_(0),</div><div class="line"><a name="l00080"></a ><span class="lineno"> 80</span>  sep_(sep), buf_(str) {}</div><div >class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a >class="code" href="classsinga_1_1Tokenizer.html">Tokenizer</a> & >operator>>(std::string& out) {</div><div class="line"><a >name="l00082"></a><span class="lineno"> 82</span>  CHECK_LT(start_, >buf_.length());</div><div class="line"><a name="l00083"></a><span >class="lineno"> 83</span>  <span class="keywordtype">int</span> >start = start_;</div><div class="line"><a name="l00084"></a><span >class="lineno"> 84</span>  <span class="keyword">auto</span> pos = >buf_.find_first_of(sep_, start);</div><div class="line"><a >name="l00085"></a><span class="lineno"> 85</span>  <span >class="keywordflow">if</span> (pos == std::string::npos)</div><div >class="line"><a name="l00086"></a><span class="lineno"> 86</span>  > pos = buf_.length();</div><div class="line"><a name="l00087"></a><span cla ss="lineno"> 87</span>  start_ = (<span class="keywordtype">unsigned</span> int)(pos + 1);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  out = buf_.substr(start, pos);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">bool</span> Valid() { <span class="keywordflow">return</span> start_ < buf_.length(); }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">unsigned< /span> start_;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  std::string sep_;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">const</span> std::string& buf_;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> } <span class="comment">// namespace singa</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#endif // SINGA_UTILS_TOKENIZER_H_</span></div><div class="ttc" id="classsinga_1_1Tokenizer_html"><div class="ttname"><a href="classsinga_1_1Tokenizer.html">singa::Tokenizer</a></div><div class="ttdoc">Tokenize a string. </div><div class ="ttdef"><b>Definition:</b> string.h:77</div></div> +<div class="ttc" id="namespacesinga_html"><div class="ttname"><a href="namespacesinga.html">singa</a></div><div class="ttdoc">Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements...</div><div class="ttdef"><b>Definition:</b> common.h:48</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated on Mon Apr 22 2019 12:27:05 for Apache Singa by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.13 +</small></address> +</body> +</html>
