<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.16">
  <compounddef id="btree_8h" kind="file" language="C++">
    <compoundname>btree.h</compoundname>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <programlisting>
<codeline lineno="1"><highlight class="comment">/*</highlight></codeline>
<codeline lineno="2"><highlight class="comment">#ifndef<sp/>BTREE_H</highlight></codeline>
<codeline lineno="3"><highlight class="comment">#define<sp/>BTREE_H</highlight></codeline>
<codeline lineno="4"><highlight class="comment"></highlight></codeline>
<codeline lineno="5"><highlight class="comment">#include<sp/>&lt;stdio.h&gt;</highlight></codeline>
<codeline lineno="6"><highlight class="comment"></highlight></codeline>
<codeline lineno="7"><highlight class="comment">#include<sp/>&quot;ubixfs.h&quot;</highlight></codeline>
<codeline lineno="8"><highlight class="comment">#include<sp/>&quot;btreeheader.h&quot;</highlight></codeline>
<codeline lineno="9"><highlight class="comment">#include<sp/>&quot;file.h&quot;</highlight></codeline>
<codeline lineno="10"><highlight class="comment"></highlight></codeline>
<codeline lineno="11"><highlight class="comment">#define<sp/>B_NODE_MAGIC_1<sp/>0xDEADBEEF</highlight></codeline>
<codeline lineno="12"><highlight class="comment">#define<sp/>B_NODE_MAGIC_2<sp/>0x1900BABE</highlight></codeline>
<codeline lineno="13"><highlight class="comment"></highlight></codeline>
<codeline lineno="14"><highlight class="comment">#define<sp/>B_MAX_KEYS<sp/>15</highlight></codeline>
<codeline lineno="15"><highlight class="comment">#define<sp/>B_MAX_NAME_LENGTH<sp/>240</highlight></codeline>
<codeline lineno="16"><highlight class="comment">#define<sp/>B_MAX_CHILD_COUNT<sp/>4</highlight></codeline>
<codeline lineno="17"><highlight class="comment"></highlight></codeline>
<codeline lineno="18"><highlight class="comment">//<sp/>if<sp/>any<sp/>of<sp/>these<sp/>structs<sp/>change<sp/>they<sp/>have<sp/>to<sp/>be<sp/>updated<sp/>in<sp/>the<sp/>format</highlight></codeline>
<codeline lineno="19"><highlight class="comment">//<sp/>utility<sp/>too</highlight></codeline>
<codeline lineno="20"><highlight class="comment"></highlight></codeline>
<codeline lineno="21"><highlight class="comment">typedef<sp/>struct<sp/>bNode<sp/>{<sp/></highlight></codeline>
<codeline lineno="22"><highlight class="comment"><sp/><sp/>uInt32<sp/><sp/>magic1<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="23"><highlight class="comment"><sp/><sp/>uInt32<sp/><sp/>used<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="24"><highlight class="comment"><sp/><sp/>uPtr<sp/><sp/><sp/><sp/>parent<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="25"><highlight class="comment"><sp/><sp/>uInt64<sp/><sp/>tag<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="26"><highlight class="comment"><sp/><sp/>char<sp/><sp/><sp/><sp/>keys[B_MAX_KEYS][B_MAX_NAME_LENGTH]<sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="27"><highlight class="comment"><sp/><sp/>bool<sp/><sp/><sp/><sp/>present[B_MAX_KEYS+1]<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="28"><highlight class="comment"><sp/><sp/>uPtr<sp/><sp/><sp/><sp/>head[B_MAX_KEYS+1]<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="29"><highlight class="comment"><sp/><sp/>uPtr<sp/><sp/><sp/><sp/>tail[B_MAX_KEYS+1]<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="30"><highlight class="comment"><sp/><sp/>uInt32<sp/><sp/><sp/>childCount[B_MAX_KEYS+1]<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="31"><highlight class="comment"><sp/><sp/>uInt32<sp/><sp/>magic2<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="32"><highlight class="comment"><sp/><sp/>bool<sp/><sp/><sp/><sp/>leaf<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="33"><highlight class="comment"><sp/><sp/>char<sp/>reserved[131]<sp/>__attribute__<sp/>((packed));</highlight></codeline>
<codeline lineno="34"><highlight class="comment">}<sp/>bNode;<sp/>//<sp/>bNode</highlight></codeline>
<codeline lineno="35"><highlight class="comment"></highlight></codeline>
<codeline lineno="36"><highlight class="comment">struct<sp/>ubixfsInode;</highlight></codeline>
<codeline lineno="37"><highlight class="comment"></highlight></codeline>
<codeline lineno="38"><highlight class="comment">class<sp/>bTree<sp/>{</highlight></codeline>
<codeline lineno="39"><highlight class="comment"><sp/>protected:</highlight></codeline>
<codeline lineno="40"><highlight class="comment"><sp/><sp/>bNode<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>root;</highlight></codeline>
<codeline lineno="41"><highlight class="comment"><sp/><sp/>UbixFS<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>fs;</highlight></codeline>
<codeline lineno="42"><highlight class="comment"><sp/><sp/>bTreeHeader<sp/><sp/><sp/><sp/>*<sp/>header;</highlight></codeline>
<codeline lineno="43"><highlight class="comment"><sp/><sp/>fileDescriptor<sp/>*<sp/>fd;</highlight></codeline>
<codeline lineno="44"><highlight class="comment"><sp/><sp/>uInt32<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>tag;</highlight></codeline>
<codeline lineno="45"><highlight class="comment"><sp/><sp/>ubixfsInode<sp/><sp/><sp/><sp/>*<sp/>treeSearch(bNode<sp/>*,<sp/>const<sp/>char<sp/>*);</highlight></codeline>
<codeline lineno="46"><highlight class="comment"><sp/><sp/>ubixfsInode<sp/><sp/><sp/><sp/>*<sp/>inodeSearch(ubixfsInode<sp/>*,<sp/>const<sp/>char<sp/>*);</highlight></codeline>
<codeline lineno="47"><highlight class="comment"><sp/><sp/>void<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>splitNode(bNode<sp/>*);</highlight></codeline>
<codeline lineno="48"><highlight class="comment"><sp/><sp/>bNode<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>allocEmptyNode(void);</highlight></codeline>
<codeline lineno="49"><highlight class="comment"><sp/><sp/>void<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>insertNode(bNode<sp/>*,<sp/>const<sp/>char<sp/>*,<sp/>bNode<sp/>*);</highlight></codeline>
<codeline lineno="50"><highlight class="comment"><sp/><sp/>bNode<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*<sp/>findLeafNode(bNode<sp/>*,<sp/>const<sp/>char<sp/>*);</highlight></codeline>
<codeline lineno="51"><highlight class="comment"><sp/><sp/>void<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Print(bNode<sp/>*);</highlight></codeline>
<codeline lineno="52"><highlight class="comment"><sp/><sp/>void<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>saveNode(FILE<sp/>*,<sp/>bNode<sp/>*,<sp/>void<sp/>*);</highlight></codeline>
<codeline lineno="53"><highlight class="comment"><sp/>public:</highlight></codeline>
<codeline lineno="54"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>bTree(const<sp/>char<sp/>*,<sp/>ubixfsInode<sp/>*);</highlight></codeline>
<codeline lineno="55"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>bTree(UbixFS<sp/>*,<sp/>fileDescriptor<sp/>*);</highlight></codeline>
<codeline lineno="56"><highlight class="comment"><sp/><sp/>ubixfsInode<sp/><sp/><sp/><sp/>*<sp/>Find(const<sp/>char<sp/>*);</highlight></codeline>
<codeline lineno="57"><highlight class="comment"><sp/><sp/>ubixfsInode<sp/><sp/><sp/><sp/>*<sp/>GetFirstNode(void);</highlight></codeline>
<codeline lineno="58"><highlight class="comment"><sp/><sp/>ubixfsInode<sp/><sp/><sp/><sp/>*<sp/>GetFirstNode(bNode<sp/>*);</highlight></codeline>
<codeline lineno="59"><highlight class="comment"><sp/><sp/>bool<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Delete(const<sp/>char<sp/>*);</highlight></codeline>
<codeline lineno="60"><highlight class="comment"><sp/><sp/>void<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Info(void);</highlight></codeline>
<codeline lineno="61"><highlight class="comment"><sp/><sp/>void<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Info(const<sp/>bNode<sp/>*);</highlight></codeline>
<codeline lineno="62"><highlight class="comment"><sp/><sp/>bool<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Insert(const<sp/>char<sp/>*,<sp/>ubixfsInode<sp/>*);</highlight></codeline>
<codeline lineno="63"><highlight class="comment"><sp/><sp/>bool<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Save(const<sp/>char<sp/>*);</highlight></codeline>
<codeline lineno="64"><highlight class="comment"><sp/><sp/>bool<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Load(const<sp/>char<sp/>*);</highlight></codeline>
<codeline lineno="65"><highlight class="comment"><sp/><sp/>void<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Print(void);</highlight></codeline>
<codeline lineno="66"><highlight class="comment"><sp/><sp/>void<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>PrintWholeTree(void);</highlight></codeline>
<codeline lineno="67"><highlight class="comment"><sp/><sp/>bool<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Verify(void);</highlight></codeline>
<codeline lineno="68"><highlight class="comment"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>~bTree(void);</highlight></codeline>
<codeline lineno="69"><highlight class="comment"><sp/><sp/>friend<sp/>class<sp/>UbixFS;</highlight></codeline>
<codeline lineno="70"><highlight class="comment">};<sp/>//<sp/>bTree</highlight></codeline>
<codeline lineno="71"><highlight class="comment">#endif<sp/>//<sp/>!BTREE_H</highlight></codeline>
<codeline lineno="72"><highlight class="comment">*/</highlight><highlight class="normal"></highlight></codeline>
    </programlisting>
    <location file="C:/Dev/git/UbixOS/sys/fs/ubixfsv2/btree.h"/>
  </compounddef>
</doxygen>
