\hypertarget{heap_8c}{}\section{os/heap.c File Reference}
\label{heap_8c}\index{os/heap.\+c@{os/heap.\+c}}
{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$strings.\+h$>$}\newline
{\ttfamily \#include \char`\"{}heap.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}error.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}ostypes.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}printf.\+h\char`\"{}}\newline
Include dependency graph for heap.\+c\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{heap_8c__incl}
\end{center}
\end{figure}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{heap_8c_ae4c24d26f4411ab5492a2cc8dd5a4e7c}{os\+Heap\+Init} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray)
\item 
void \hyperlink{heap_8c_a5a51c0aca53767d5038681cc649d5fa8}{os\+Heap\+Heapify} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray, uint8\+\_\+t iind)
\item 
void \hyperlink{heap_8c_aba6f21f0421450da6531c7ea9f6976b5}{os\+Heap\+Build} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray)
\item 
uint8\+\_\+t \hyperlink{heap_8c_a2a73414cf2e4e1d2cebb4597a36bc018}{os\+Heap\+Maximum} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray, \hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$iomax)
\item 
uint8\+\_\+t \hyperlink{heap_8c_a31002fadb05f80382c9714462dfb092e}{os\+Heap\+Extract\+Maximum} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray, \hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$iomax)
\item 
uint8\+\_\+t \hyperlink{heap_8c_ab5c1d9c908e7d618bd5869f6e0ed16c5}{os\+Heap\+Insert} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray, \hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} x)
\item 
void \hyperlink{heap_8c_abfcd76f5650f218825578b0bd1652587}{os\+Heap\+PrintS} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray)
\item 
uint8\+\_\+t \hyperlink{heap_8c_a999a4beae27d4c7085278724feeabbc1}{os\+Heap\+Is\+Empty} (\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$ioarray)
\end{DoxyCompactItemize}


\subsection{Function Documentation}
\mbox{\Hypertarget{heap_8c_aba6f21f0421450da6531c7ea9f6976b5}\label{heap_8c_aba6f21f0421450da6531c7ea9f6976b5}} 
\index{heap.\+c@{heap.\+c}!os\+Heap\+Build@{os\+Heap\+Build}}
\index{os\+Heap\+Build@{os\+Heap\+Build}!heap.\+c@{heap.\+c}}
\subsubsection{\texorpdfstring{os\+Heap\+Build()}{osHeapBuild()}}
{\footnotesize\ttfamily void os\+Heap\+Build (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray }\end{DoxyParamCaption})}

Build the heap from the bottom up. Given an array which is not heapified at all.


\begin{DoxyParams}{Parameters}
{\em ioarray} & Array where the heap is stored. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{heap_8c_a31002fadb05f80382c9714462dfb092e}\label{heap_8c_a31002fadb05f80382c9714462dfb092e}} 
\index{heap.\+c@{heap.\+c}!os\+Heap\+Extract\+Maximum@{os\+Heap\+Extract\+Maximum}}
\index{os\+Heap\+Extract\+Maximum@{os\+Heap\+Extract\+Maximum}!heap.\+c@{heap.\+c}}
\subsubsection{\texorpdfstring{os\+Heap\+Extract\+Maximum()}{osHeapExtractMaximum()}}
{\footnotesize\ttfamily uint8\+\_\+t os\+Heap\+Extract\+Maximum (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray,  }\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{iomax }\end{DoxyParamCaption})}

Copy heap maximum and remove it (extract).


\begin{DoxyParams}{Parameters}
{\em ioarray} & Array where the heap is stored. \\
\hline
{\em iomax} & Node, which is the maximum. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (heap is empty). \\
\hline
\end{DoxyRetVals}
\mbox{\Hypertarget{heap_8c_a5a51c0aca53767d5038681cc649d5fa8}\label{heap_8c_a5a51c0aca53767d5038681cc649d5fa8}} 
\index{heap.\+c@{heap.\+c}!os\+Heap\+Heapify@{os\+Heap\+Heapify}}
\index{os\+Heap\+Heapify@{os\+Heap\+Heapify}!heap.\+c@{heap.\+c}}
\subsubsection{\texorpdfstring{os\+Heap\+Heapify()}{osHeapHeapify()}}
{\footnotesize\ttfamily void os\+Heap\+Heapify (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray,  }\item[{uint8\+\_\+t}]{iind }\end{DoxyParamCaption})}

Classic heapify operation.


\begin{DoxyParams}{Parameters}
{\em ioarray} & Array where the heap is stored. \\
\hline
{\em iind} & Element to be put in the right place. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{heap_8c_ae4c24d26f4411ab5492a2cc8dd5a4e7c}\label{heap_8c_ae4c24d26f4411ab5492a2cc8dd5a4e7c}} 
\index{heap.\+c@{heap.\+c}!os\+Heap\+Init@{os\+Heap\+Init}}
\index{os\+Heap\+Init@{os\+Heap\+Init}!heap.\+c@{heap.\+c}}
\subsubsection{\texorpdfstring{os\+Heap\+Init()}{osHeapInit()}}
{\footnotesize\ttfamily void os\+Heap\+Init (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray }\end{DoxyParamCaption})}

Initializes all heap elements by setting them to N\+U\+LL.


\begin{DoxyParams}{Parameters}
{\em Array} & where the heap is stored. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{heap_8c_ab5c1d9c908e7d618bd5869f6e0ed16c5}\label{heap_8c_ab5c1d9c908e7d618bd5869f6e0ed16c5}} 
\index{heap.\+c@{heap.\+c}!os\+Heap\+Insert@{os\+Heap\+Insert}}
\index{os\+Heap\+Insert@{os\+Heap\+Insert}!heap.\+c@{heap.\+c}}
\subsubsection{\texorpdfstring{os\+Heap\+Insert()}{osHeapInsert()}}
{\footnotesize\ttfamily uint8\+\_\+t os\+Heap\+Insert (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray,  }\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t}}]{x }\end{DoxyParamCaption})}

Insert a node into the heap.


\begin{DoxyParams}{Parameters}
{\em ioarray} & Array where the heap is stored. \\
\hline
{\em x} & Node to be inserted into the heap. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (heap is full). \\
\hline
\end{DoxyRetVals}
\mbox{\Hypertarget{heap_8c_a999a4beae27d4c7085278724feeabbc1}\label{heap_8c_a999a4beae27d4c7085278724feeabbc1}} 
\index{heap.\+c@{heap.\+c}!os\+Heap\+Is\+Empty@{os\+Heap\+Is\+Empty}}
\index{os\+Heap\+Is\+Empty@{os\+Heap\+Is\+Empty}!heap.\+c@{heap.\+c}}
\subsubsection{\texorpdfstring{os\+Heap\+Is\+Empty()}{osHeapIsEmpty()}}
{\footnotesize\ttfamily uint8\+\_\+t os\+Heap\+Is\+Empty (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray }\end{DoxyParamCaption})}

Is the heap empty?


\begin{DoxyParams}{Parameters}
{\em ioarray} & Array where the heap is stored. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{heap_8c_a2a73414cf2e4e1d2cebb4597a36bc018}\label{heap_8c_a2a73414cf2e4e1d2cebb4597a36bc018}} 
\index{heap.\+c@{heap.\+c}!os\+Heap\+Maximum@{os\+Heap\+Maximum}}
\index{os\+Heap\+Maximum@{os\+Heap\+Maximum}!heap.\+c@{heap.\+c}}
\subsubsection{\texorpdfstring{os\+Heap\+Maximum()}{osHeapMaximum()}}
{\footnotesize\ttfamily uint8\+\_\+t os\+Heap\+Maximum (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray,  }\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{iomax }\end{DoxyParamCaption})}

Copy heap maximum.


\begin{DoxyParams}{Parameters}
{\em ioarray} & Array where the heap is stored. \\
\hline
{\em iomax} & Node, which is the maximum. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em 1} & (S\+U\+C\+C\+E\+SS) or 0 (heap is empty). \\
\hline
\end{DoxyRetVals}
\mbox{\Hypertarget{heap_8c_abfcd76f5650f218825578b0bd1652587}\label{heap_8c_abfcd76f5650f218825578b0bd1652587}} 
\index{heap.\+c@{heap.\+c}!os\+Heap\+PrintS@{os\+Heap\+PrintS}}
\index{os\+Heap\+PrintS@{os\+Heap\+PrintS}!heap.\+c@{heap.\+c}}
\subsubsection{\texorpdfstring{os\+Heap\+Print\+S()}{osHeapPrintS()}}
{\footnotesize\ttfamily void os\+Heap\+PrintS (\begin{DoxyParamCaption}\item[{\hyperlink{ostypes_8h_a7b59ec4a57312624d7d832ba4a8e04be}{os\+Heap\+Node\+\_\+t} $\ast$}]{ioarray }\end{DoxyParamCaption})}

Print heap all priorities for debugging purposes.


\begin{DoxyParams}{Parameters}
{\em ioarray} & Array where the heap is stored. \\
\hline
\end{DoxyParams}
