---
layout: default
---
<div class="sidenav-top">
  <a href="/"><img src="{{ "/assets/img/gem5ColorLong.gif" | prepend: site.baseurl }}" 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 | prepend: site.baseurl }}"{% 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 | prepend: site.baseurl }}">{{ 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 | prepend: site.baseurl }}"><button type="button" class="btn btn-outline-primary">PREVIOUS</button></a>
    {% endif %}

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