---
layout: default
---
<div class="sidenav-top">
  <a href="/"><img src="/assets/img/gem5ColorLong.gif" height="80"></a>
  <div class="search">
    <form action="/search" method="get">
      <!-- <label for="search-box"><i class="fa fa-search"></i></label> -->
      <input type="text" name="query">
      <button type="submit" name="submit"><i class="fa fa-search"></i></button>
    </form>
  </div>
</div>
<div class="sidenav">
  <!-- Pull navigation from _data/documentation.yml -->
  {% for item in site.data.documentation.docs %}
    <a class="item" {% if item.url %}href="{{ item.url }}"{% else %}data-toggle="collapse" href="#{{ item.id }}"{% endif %} role="button" aria-expanded="false" aria-controls="collapseExample">
      {{ item.title }}
    </a>
    <div class="collapse {% if page.parent == item.id %}show{% endif %}" id="{{ item.id }}">
      {% for subitem in item.subitems %}
        <a class="subitem {% if subitem.page == page.title %}active{% endif %}" href="{{ subitem.url }}">{{ subitem.page }}</a>
      {% endfor %}
    </div>
  {% endfor %}
</div>

<div class="container" id="doc-container">
  <div class="edit"><a href="{{ site.sourceurl }}{{ page.path }}">Edit this page</a></div>
  {{ content }}
  <br>

  <!-- RETRIVE PREVIOUS PAGE LINK -->
  {% for item in site.data.documentation.docs %}
    {% if page.parent == item.id %}
      {% assign previous = "none" %}
      {% if item.subitems %}
        {% for subitem in item.subitems %}
          {% if page.title == subitem.page %}
            {% break %}
          {% else %}
            {% assign previous = subitem.url %}
          {% endif %}
        {% endfor %}
      {% endif %}
    {% endif %}
  {% endfor %}

  <!-- RETRIEVE NEXT PAGE LINK -->
  {% for item in site.data.documentation.docs %}
    {% if page.parent == item.id %}
      {% assign next = "none" %}
      {% if item.subitems %}
        {% for subitem in item.subitems reversed %}
          {% if page.title == subitem.page %}
            {% break %}
          {% else %}
            {% assign next = subitem.url %}
          {% endif %}
        {% endfor %}
      {% endif %}
    {% endif %}
  {% endfor %}


  <div class="navbuttons">
    {% if previous != "none" %}
      <a href="{{ previous }}"><button type="button" class="btn btn-outline-primary">PREVIOUS</button></a>
    {% endif %}

    {% if next != "none" %}
      <a href="{{ next }}"><button type="button" class="btn btn-outline-primary">NEXT</button></a>
    {% endif %}
  </div>
</div>
