/**
\page quickreference Quick Reference Manual

\tableofcontents

\section loops Loops and Loop Body

\subsection loop_types Loop Types

- \b galois::for_each(galois::iterate(beg, end), const F& operator, galois::wl<WorkListType>(), galois::loopname("loopname")

- \b galois::do_all(galois::iterate(beg, end), const F& operator, galois::loopname("loopname")

- \b galois::on_each(const F& operator, galois::loopname("loopname")



\subsection operator Operator

- \b for_each operator implements `template <typename C> void operator () (T item, C& ctx) {...}`

- \b do_all operator implements `void operator () (T item) {...}`

- \b on_each operator implements `void operator () (unsigned TID, unsigned numThreads) {...}`

\subsection worklist WorkList Types
Specified as a template argument to {@link galois::wl}

- galois::worklists::PerSocketChunkFIFO<CHUNK_SIZE>

- galois::worklists::PerSocketChunkLIFO<CHUNK_SIZE>

- galois::worklists::OBIM<WorkListType>

\section graph Graph


\subsection graph_api Common Graph functions

- `GNode graph.createNode(T nodeData)`:  creating a node

- `void graph.addNode(GNode gn)`: add a node created by `createNode`

- `void graph.addEdge(GNode src, GNode dst)`: add edge

- `T& graph.getData(GNode gn)`: get node data

- `Graph::iterator graph.begin()`: get a node iterator

- `Graph::iterator graph.end()`: get a node iterator

- `Graph::edge_iterator graph.edge_begin(GNode src)`: get iterator over neighbors of a node

- `Graph::edge_iterator graph.edge_end(GNode src)`: get iterator over neighbors of a node

- `E& graph.getEdgeData(Graph::edge_iterator ei)`: get edge data data

- `GNode graph.getEdgeDst(Graph::edge_iterator ei)`:  get destination node of an edge


\subsection method_flag Method Flags

{@link galois::MethodFlag} passed optionally to graph functions

 - {@link galois::MethodFlag::UNPROTECTED}: access to shared data is not protected. User
   responsible/aware of concurrent accesses

 - {@link galois::MethodFlag::WRITE}: Runtime monitors access to shared data, and
   allows only one iteration to acquire ownership of the data element (e.g., node
   or edge in the graph) being accessed. 

 - {@link galois::MethodFlag::READ}: Runtime may allow multiple iterations to
   read the shared data element. 

\section data_structures Other Data Structures

\section util Utility Functions
  - {@link galois::getActiveThreads} returns number of actually running threads

  - {@link galois::setActiveThreads} sets the number of running threads. Should only be
    called at the beginning of the `main` function.

  - {@link galois::runtime::LL::getMaxThreads()} returns the maximum number of
    threads (usually number of cores or number of hyper-threads) supported by hardware 

\section allocators Allocators

*/
