<!DOCTYPE html>
<html>

  <head>
    <meta charset='utf-8' />
    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
    <meta name="description" content="Capnproto : Cap'n Proto serialization/RPC system" />
    <meta name="viewport" content="width=480">

    <link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">

    <title>Cap'n Proto</title>
  </head>

  <body class="desktop">

    <!-- HEADER -->
    <div id="header_wrap" class="outer">
      <header class="inner">
        <img src="images/captain_proto.png">
        <div id="infinitely_faster">
          <img src="images/infinitely_faster.png">
        </div>
      </header>
      <a id="discuss_banner" href="https://groups.google.com/group/capnproto">Discuss on Groups</a>
      <a id="forkme_banner" href="https://github.com/kentonv/capnproto">View on GitHub</a>
    </div>

    <!-- MAIN CONTENT -->
    <div id="main_content_wrap" class="outer">

      <section id="menu">
        <ul>
          <li><a href="index.html">Introduction</a></li>
          <li><a href="install.html">Installation</a></li>
          <li><a href="language.html">Schema Language</a></li>
          <li><a href="encoding.html">Encoding</a></li>
          <li><a href="rpc.html">RPC Protocol</a></li>
          <li><a href="cxx.html">C++ Runtime</a></li>
          <li><a href="otherlang.html">Other Languages</a></li>
        </ul>
      </section>
      <script type="text/javascript">
        // Highlight the current page in the sidebar, make the sidebar items easy to click, and
        // make the sidebar float when scrolled, unless there isn't enough space.
        (function () {
          var pathname = document.location.pathname;
          var last = pathname.lastIndexOf('/');
          var filename = pathname.substring(last);

          if (filename == "/") {
            filename = "/index.html";
          }

          var menu = document.getElementById("menu");
          var setMenuLayout = function() {
            if (window.innerWidth < 900) {
              document.body.className = "narrow";
              menu.className = "";
            } else {
              if (document.body.clientWidth < 1340) {
                document.body.className = "normal";
              } else {
                document.body.className = "wide";
              }

              if (window.scrollY < 410 || window.innerHeight < menu.clientHeight + 100) {
                menu.className = "";
              } else {
                menu.className = "floating";
              }
            }
          };
          setMenuLayout();
          window.onresize = setMenuLayout;
          window.onscroll = setMenuLayout;

          var items = menu.getElementsByTagName("li");
          for (var i = 0; i < items.length; i++) {
            var link = items[i].getElementsByTagName("a")[0];
            var href = link.href;
            if (href.lastIndexOf(filename) >= 0) {
              var parent = link.parentNode;
              parent.removeChild(link);
              var p = document.createElement("p");
              p.appendChild(document.createTextNode(link.innerText || link.textContent));
              p.onclick = (function(url) {
                return function(event) {
                  window.location.href = url;
                  event.stopPropagation();
                }
              })(href + "#main_content");
              parent.appendChild(p);
              items[i].className = "selected";
              var toc = document.createElement("ul");
              toc.id = "toc";
              items[i].appendChild(toc);
            } else {
              items[i].onclick = (function(url) {
                return function(event) {
                  window.location.href = url;
                  event.stopPropagation();
                }
              })(href);
            }
          }
        })();
      </script>
      <section id="main_content" class="inner">
        {{ content }}
        <div style="clear: left;"></div>
      </section>
    </div>

    <!-- FOOTER  -->
    <div id="footer_wrap" class="outer">
      <footer class="inner">
        <p class="copyright">Cap'n Proto maintained by <a href="https://github.com/kentonv">kentonv</a></p>
        <p>Design by <a href="http://www.starfruit-cafe.net/blog">sailorhg</a> ∙ Published with <a href="http://pages.github.com">GitHub Pages</a></p>
      </footer>
    </div>

    <script type="text/javascript">
      // Inject a table of contents into the sidebar.
      (function() {
        var toc = document.getElementById("toc");
        if (toc) {
          var content = document.getElementById("main_content").childNodes;
          var headings = [];

          for (var i = 0; i < content.length; i++) {
            if (content[i].tagName == "H2" ||
                content[i].tagName == "H3" ||
                content[i].tagName == "H4") {
              headings.push(content[i]);
            }
          }

          var levels = [toc];
          for (var i in headings) {
            var hl = headings[i].tagName.slice(1) - 1;
            while (hl > levels.length) {
              var parent = levels[levels.length - 1];
              var item = parent.childNodes[parent.childNodes.length - 1];
              var sublist = document.createElement("ul");
              item.appendChild(sublist);
              levels.push(sublist);
            }
            while (hl < levels.length) {
              levels.pop();
            }

            var parent = levels[levels.length - 1];
            var item = document.createElement("li");
            var p = document.createElement("p");
            var link = document.createElement("a");
            link.appendChild(document.createTextNode(headings[i].innerText || headings[i].textContent));
            link.href = "#" + headings[i].id;
            p.appendChild(link);
            p.onclick = (function(url) {
              return function(event) {
                window.location.href = url;
                event.stopPropagation();
              }
            })(link.href);
            item.appendChild(p);
            parent.appendChild(item);
          }
        }

        var menu = document.getElementById("menu");
        document.getElementById("main_content").style.minHeight = menu.clientHeight + 100 + "px";
      })()
    </script>

    <script type="text/javascript">
      var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
      document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
    </script>
    <script type="text/javascript">
      try {
        var pageTracker = _gat._getTracker("UA-39711112-1");
        pageTracker._trackPageview();
      } catch(err) {}
    </script>


  </body>
</html>