You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@singa.apache.org by mo...@apache.org on 2019/04/22 10:37:24 UTC

svn commit: r1857944 [32/35] - in /incubator/singa/site/trunk/doxygen: ./ html/ html/search/

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='&#8226;';
+        }
+        else
+        {
+          node.innerHTML='&#160;';
+        }
+        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">&#160;</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>&#160;<span class="comment">/************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<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>&#160;<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>&#160;<span class="comment">* distributed with this work for additional information</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<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>&#160;<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>&#160;<span class="comment">* &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">*</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">*</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">* &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<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>&#160;<span class="comment">* specific language governing permissions and limitations</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">* under the License.</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span 
 class="comment">*</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">*************************************************************/</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifndef SINGA_UTILS_SINGLETON_H_</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#define SINGA_UTILS_SINGLETON_H_</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<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>&#160;<span class="keyword">template</span>&lt;<span cla
 ss="keyword">typename</span> T&gt;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSingleton.html">   28</a></span>&#160;<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>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;  <span class="keyword">static</span> T* Instance() {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keyword">static</span> T data_;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keywordflow">return</span> &amp;data_;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;  }</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;};</div><div class="line"><a name="l000
 35"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">template&lt;typename T&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">class TSingleton {</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment"> public:</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">  static T* Instance() {</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<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>&#160;<span class="comment">              
                     // compilers</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">    return &amp;data_;</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">  }</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">};</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<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 &#160;<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>&#160;<span class="comment">/************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<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>&#160;<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>&#160;<span class="comment">* distributed with this work for additional information</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<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>&#160;<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>&#160;<span class="comment">* &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">*</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">*</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">* &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<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>&#160;<span class="comment">* specific language governing permissions and limitations</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">* under the License.</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span 
 class="comment">*</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">*************************************************************/</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifndef SINGA_UTILS_SNAPSHOT_H_</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#define SINGA_UTILS_SNAPSHOT_H_</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;singa/io/reader.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;singa/io/writer.h&quot;</span></div><div class="li
 ne"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;singa/utils/logging.h&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;singa/proto/core.pb.h&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &quot;singa/core/tensor.h&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;unordered_set&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;unordered_map&gt;</span></div><div class="
 line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<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>&#160;<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>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;  <span class="keyword">enum</span> Mode { kRead, kWrite };</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;  <a class="code" href="cl
 asssinga_1_1Snapshot.html#a6c953392f9d314ed0bf644a5d64eac84">Snapshot</a>(<span class="keyword">const</span> std::string&amp; 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>&#160;  ~<a class="code" href="classsinga_1_1Snapshot.html">Snapshot</a>() {}</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  std::vector&lt;std::pair&lt;std::string, Tensor&gt;&gt; <a class="code" href="classsinga_1_1Snapshot.html#a1b5a7c9bd8571523929f973d60911a9c">Read</a>();</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  std::vector&lt;std::pair&lt;std::string, Shape&gt;&gt; <a class="code" href="classsinga_1_1Snapshot.html#a25c10f3e39b912fb0a72b4e575c60c0f">ReadShape</a>();</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <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&amp; Key);</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  Shape <a class="code" href="classsinga_1_1Snapshot.html#a25c10f3e39b912fb0a72b4e575c60c0f">ReadShape</a>(<span class="keyword">const</span> std::string&amp; key);</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classsinga_1_1Snapshot.html#a3a5ec45388f191e01668ef8486d4b8f7">Write</a>(<span class="keyword">const</span> std::string&amp; key, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; param);</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classsinga_1_1Snapshot.html#ae311f3448715ebc110c1b238c56dce9b">   68</a></span>&#160;  <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>&#160;    <span class="keywordflow">return</span> version_;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  }</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="keywordtype">int</span> version_ = 0;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  std::string prefix_;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  Mode mode_;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  std::unique_ptr&lt;io::
 BinFileWriter&gt; bin_writer_ptr_;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  std::unique_ptr&lt;io::Writer&gt; text_writer_ptr_;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  std::unique_ptr&lt;io::BinFileReader&gt; bin_reader_ptr_;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  std::unordered_set&lt;std::string&gt; param_names_;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  std::unordered_map&lt;std::string, Tensor&gt; param_map_;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;};</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;}  <span class="comment">//  namespace singa</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<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&lt; std::pair&lt; std::string, Tensor &gt; &gt; 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 &amp;prefix, Mode mode, int max_param_size=10)</div><div class="ttdoc">&lt;prefix&gt;.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 &gt; 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&lt; std::pair&lt; std::string, Shape &gt; &gt; 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 &amp;key, const Tensor &amp;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 &#160;<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>&#160;<span class="comment">/************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<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>&#160;<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>&#160;<span class="comment">* distributed with this work for additional information</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<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>&#160;<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>&#160;<span class="comment">* &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<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>&#160;<span class="comment">*</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<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>&#160;<span class="comment">*</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<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>&#160;<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>&#160;<span class="comment">* &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<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>&#160;<span class="comment">* specific language governing permissions and limitations</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">* under the License.</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span 
 class="comment">*</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">*************************************************************/</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifndef SINGA_UTILS_TOKENIZER_H_</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#define SINGA_UTILS_TOKENIZER_H_</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00027"></a>
 <span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;singa/utils/logging.h&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<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>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> icasecmp(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; l, <span class="keyword">const</span> <span class="keywordtype">string</span>&amp; r) {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;  <span class="keywordflow">return</span> l.size() == r.size() &amp;&amp;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;         equal(l.cbegin(), l.cend(), r.cbegin(
 ),</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;               [](string::value_type l1, string::value_type r1) {</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;                 <span class="keywordflow">return</span> toupper(l1) == toupper(r1);</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;               });</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;}</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">string</span> ToLowerCase(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; input) {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  <span class="keywordtype">string</span> out;</div><div class=
 "line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  out.resize(input.size());</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  std::transform(input.begin(), input.end(), out.begin(), ::tolower);</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;}</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<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>&#160;  <span class="keywordflow">for
 </span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; i++) {</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keywordflow">if</span> (strcmp(arglist[i], arg) == 0) {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      <span class="keywordflow">return</span> i;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    }</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  }</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;}</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> 
 T&gt;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="keyword">inline</span> std::string VecToStr(<span class="keyword">const</span> std::vector&lt;T&gt; &amp; in) {</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  std::string out = <span class="stringliteral">&quot;(&quot;</span>;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  <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>&#160;    out += std::to_string(x) + <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  }</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  out += <span class="stringliteral">&quot;)
 &quot;</span>;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;}</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classsinga_1_1Tokenizer.html">   77</a></span>&#160;<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>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <a class="code" href="classsinga_1_1Tokenizer.html">Tokenizer</a>(<span class="keyword">const</span> std::string&amp; str, <span class="keyword">const</span> std::string&amp; sep): start_(0),</div><div class="line"><a name="l00080"></a
 ><span class="lineno">   80</span>&#160;  sep_(sep), buf_(str) {}</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <a class="code" href="classsinga_1_1Tokenizer.html">Tokenizer</a> &amp; operator&gt;&gt;(std::string&amp; out) {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    CHECK_LT(start_, buf_.length());</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordtype">int</span> start = start_;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <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>&#160;    <span class="keywordflow">if</span> (pos == std::string::npos)</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;      pos = buf_.length();</div><div class="line"><a name="l00087"></a><span cla
 ss="lineno">   87</span>&#160;    start_ = (<span class="keywordtype">unsigned</span> int)(pos + 1);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    out = buf_.substr(start, pos);</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  }</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordtype">bool</span> Valid() { <span class="keywordflow">return</span> start_ &lt; buf_.length(); }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keywordtype">unsigned<
 /span> start_;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  std::string sep_;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="keyword">const</span> std::string&amp; buf_;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;};</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;}  <span class="comment">// namespace singa</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<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 &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>