<?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/><stdio.h></highlight></codeline> <codeline lineno="6"><highlight class="comment"></highlight></codeline> <codeline lineno="7"><highlight class="comment">#include<sp/>"ubixfs.h"</highlight></codeline> <codeline lineno="8"><highlight class="comment">#include<sp/>"btreeheader.h"</highlight></codeline> <codeline lineno="9"><highlight class="comment">#include<sp/>"file.h"</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>