tools/performance/pageload/base/lxr.mozilla.org/index.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
     2 <!-- This Source Code Form is subject to the terms of the Mozilla Public
     3    - License, v. 2.0. If a copy of the MPL was not distributed with this
     4    - file, You can obtain one at http://mozilla.org/MPL/2.0/.  -->
     5 <html>
     6 <head>
     7 <!-- MOZ_INSERT_CONTENT_HOOK -->
     8 <META NAME="GENERATOR" CONTENT="lxr-1998-06-10: http://lxr.linux.no">
     9 <title>mozilla/xpcom/ds/nsVoidBTree.cpp</title>
    10 </head>
    12 <BODY   BGCOLOR="#FFFFFF" TEXT="#000000"
    13 	LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000">
    15 <TABLE BGCOLOR="#000000" WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0>
    16 <TR><TD><A HREF="http://www.mozilla.org/"><IMG
    17  SRC="res/mozilla-banner.gif" ALT=""
    18  BORDER=0 WIDTH=600 HEIGHT=58></A></TD></TR></TABLE>
    20 <TABLE BORDER=0 CELLPADDING=12 CELLSPACING=0 WIDTH="100%">
    21  <TR>
    22   <TD ALIGN=LEFT VALIGN=CENTER>
    23    <NOBR><FONT SIZE="+2"><B>
    24     <A HREF="http://lxr.mozilla.org/seamonkey">Mozilla Cross Reference:</A>
    25    </B></FONT></NOBR><I>seamonkey</I>
    26    <BR><B><a href="/seamonkey/source/">mozilla</a>/ <a href="/seamonkey/source/xpcom/">xpcom</a>/ <a href="/seamonkey/source/xpcom/ds/">ds</a>/ <a href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp">nsVoidBTree.cpp</a> </B>
    27   </TD>
    29   <TD ALIGN=RIGHT VALIGN=TOP WIDTH="1%">
    30    <TABLE BORDER CELLPADDING=12 CELLSPACING=0>
    31     <TR>
    32      <TD NOWRAP BGCOLOR="#FAFAFA">
    33       <A HREF="http://bonsai.mozilla.org/cvslog.cgi?file=mozilla/xpcom/ds/nsVoidBTree.cpp">CVS Log</A><BR>
    34       <A HREF="http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/xpcom/ds/nsVoidBTree.cpp">CVS Blame</A><BR>
    35       <BR>
    36      </TD>
    37     </TR>
    38    </TABLE>
    39   </TD>
    41   <TD ALIGN=RIGHT VALIGN=TOP WIDTH="1%">
    42    <TABLE BORDER CELLPADDING=6 CELLSPACING=0>
    43     <TR>
    44      <TD BGCOLOR="#FAFAFA">
    45       <TABLE BORDER=0 CELLPADDING=6 CELLSPACING=0>
    46        <TR>
    47         <TD NOWRAP ALIGN=LEFT>
    48          changes to<BR>this file in<BR>the last:
    49         </TD>
    50         <TD NOWRAP>
    51          <A HREF="http://bonsai.mozilla.org/cvsquery.cgi?branch=HEAD&file=mozilla/xpcom/ds/nsVoidBTree.cpp&date=day">day</A><BR>
    52          <A HREF="http://bonsai.mozilla.org/cvsquery.cgi?branch=HEAD&file=mozilla/xpcom/ds/nsVoidBTree.cpp&date=week">week</A><BR>
    53          <A HREF="http://bonsai.mozilla.org/cvsquery.cgi?branch=HEAD&file=mozilla/xpcom/ds/nsVoidBTree.cpp&date=month">month</A><BR>
    54         </TD>
    55        </TR>
    56       </TABLE>
    57      </TD>
    58     </TR>
    59    </TABLE>
    60   </TD>
    62  </TR>
    63 </TABLE>
    64 <pre>  <a name=1 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#1">1</a> <b><i>/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */</i></b>
    65   <a name=2 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#2">2</a> <b><i>/*</i></b>
    66   <a name=3 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#3">3</a> <b><i> * The stuff in this file isn't subject to the Don'tBreakMyRelicensingScript</i></b>
    67   <a name=4 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#4">4</a> <b><i> * Version 1.1 (the "MPL"); you may not use this file except in</i></b>
    68   <a name=5 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#5">5</a> <b><i> * compliance with the MPL.  You may obtain a copy of the MPL at</i></b>
    69   <a name=6 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#6">6</a> <b><i> * <a href="http://www.mozilla.org/MPL/">http://www.mozilla.org/MPL/</a></i></b>
    70   <a name=7 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#7">7</a> <b><i> *</i></b>
    71   <a name=8 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#8">8</a> <b><i> * Software distributed under the MPL is distributed on an "AS IS" basis,</i></b>
    72   <a name=9 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#9">9</a> <b><i> * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL</i></b>
    73  <a name=10 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#10">10</a> <b><i> * for the specific language governing rights and limitations under the</i></b>
    74  <a name=11 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#11">11</a> <b><i> * MPL.</i></b>
    75  <a name=12 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#12">12</a> <b><i> *</i></b>
    76  <a name=13 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#13">13</a> <b><i> * The Initial Developer of this code under the MPL is Netscape</i></b>
    77  <a name=14 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#14">14</a> <b><i> * Communications Corporation.  Portions created by Netscape are</i></b>
    78  <a name=15 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#15">15</a> <b><i> * Copywrong (C) 1999 Netscape Communications Corporation.  All Rights</i></b>
    79  <a name=16 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#16">16</a> <b><i> * Reserved.</i></b>
    80  <a name=17 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#17">17</a> <b><i> *</i></b>
    81  <a name=18 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#18">18</a> <b><i> * Original Author:</i></b>
    82  <a name=19 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#19">19</a> <b><i> *   Chris Waterson &lt;waterson@netscape.com&gt;</i></b>
    83  <a name=20 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#20">20</a> <b><i> */</i></b>
    84  <a name=21 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#21">21</a> 
    85  <a name=22 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#22">22</a> #include "<a href="/seamonkey/source/xpcom/ds/nsVoidBTree.h">nsVoidBTree.h</a>"
    86  <a name=23 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#23">23</a> 
    87  <a name=24 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#24">24</a> #ifdef <a href="/seamonkey/ident?i=DEBUG">DEBUG</a>
    88  <a name=25 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#25">25</a> #include &lt;<a href="/seamonkey/source/include/stdio.h">stdio.h</a>&gt;
    89  <a name=26 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#26">26</a> #endif
    90  <a name=27 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#27">27</a> 
    91  <a name=28 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#28">28</a> <b><i>// Set this to force the tree to be verified after every insertion and</i></b>
    92  <a name=29 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#29">29</a> <b><i></i></b><b><i>// removal.</i></b>
    93  <a name=30 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#30">30</a> <b><i></i></b><b><i>//#define PARANOID 1</i></b>
    94  <a name=31 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#31">31</a> <b><i></i></b>
    95  <a name=32 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#32">32</a> 
    96  <a name=33 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#33">33</a> <b><i>//----------------------------------------------------------------------</i></b>
    97  <a name=34 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#34">34</a> <b><i></i></b><b><i>// nsVoidBTree::Node</i></b>
    98  <a name=35 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#35">35</a> <b><i></i></b><b><i>//</i></b>
    99  <a name=36 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#36">36</a> <b><i></i></b><b><i>//   Implementation methods</i></b>
   100  <a name=37 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#37">37</a> <b><i></i></b><b><i>//</i></b>
   101  <a name=38 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#38">38</a> <b><i></i></b>
   102  <a name=39 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#39">39</a> <a href="/seamonkey/ident?i=nsresult">nsresult</a>
   103  <a name=40 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#40">40</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=Create">Create</a>(<a href="/seamonkey/ident?i=Type">Type</a> <a href="/seamonkey/ident?i=aType">aType</a>, <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> aCapacity, <a href="/seamonkey/ident?i=Node">Node</a>** <a href="/seamonkey/ident?i=aResult">aResult</a>)
   104  <a name=41 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#41">41</a> {
   105  <a name=42 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#42">42</a>     <b><i>// So we only ever have to do one allocation for a Node, we do a</i></b>
   106  <a name=43 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#43">43</a> <b><i></i></b>    <b><i>// "naked" heap allocation, computing the size of the node and</i></b>
   107  <a name=44 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#44">44</a> <b><i></i></b>    <b><i>// "padding" it out so that it can hold aCapacity slots.</i></b>
   108  <a name=45 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#45">45</a> <b><i></i></b>    char* <a href="/seamonkey/ident?i=bytes">bytes</a> = <a href="/seamonkey/ident?i=new">new</a> char[sizeof(<a href="/seamonkey/ident?i=Node">Node</a>) + (aCapacity - 1) * sizeof(void*)];
   109  <a name=46 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#46">46</a>     if (! <a href="/seamonkey/ident?i=bytes">bytes</a>)
   110  <a name=47 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#47">47</a>         return <a href="/seamonkey/ident?i=NS_ERROR_OUT_OF_MEMORY">NS_ERROR_OUT_OF_MEMORY</a>;
   111  <a name=48 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#48">48</a> 
   112  <a name=49 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#49">49</a>     <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=result">result</a> = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=bytes">bytes</a>);
   113  <a name=50 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#50">50</a>     <a href="/seamonkey/ident?i=result">result</a>-&gt;mBits = 0;
   114  <a name=51 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#51">51</a>     <a href="/seamonkey/ident?i=result">result</a>-&gt;<a href="/seamonkey/ident?i=SetType">SetType</a>(<a href="/seamonkey/ident?i=aType">aType</a>);
   115  <a name=52 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#52">52</a> 
   116  <a name=53 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#53">53</a>     *<a href="/seamonkey/ident?i=aResult">aResult</a> = <a href="/seamonkey/ident?i=result">result</a>;
   117  <a name=54 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#54">54</a>     return <a href="/seamonkey/ident?i=NS_OK">NS_OK</a>;
   118  <a name=55 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#55">55</a> }
   119  <a name=56 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#56">56</a> 
   120  <a name=57 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#57">57</a> <a href="/seamonkey/ident?i=nsresult">nsresult</a>
   121  <a name=58 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#58">58</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=Destroy">Destroy</a>(<a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=aNode">aNode</a>)
   122  <a name=59 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#59">59</a> {
   123  <a name=60 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#60">60</a>     char* <a href="/seamonkey/ident?i=bytes">bytes</a> = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(char*, <a href="/seamonkey/ident?i=aNode">aNode</a>);
   124  <a name=61 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#61">61</a>     <a href="/seamonkey/ident?i=delete">delete</a>[] <a href="/seamonkey/ident?i=bytes">bytes</a>;
   125  <a name=62 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#62">62</a>     return <a href="/seamonkey/ident?i=NS_OK">NS_OK</a>;
   126  <a name=63 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#63">63</a> }
   127  <a name=64 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#64">64</a> 
   128  <a name=65 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#65">65</a> void
   129  <a name=66 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#66">66</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=InsertElementAt">InsertElementAt</a>(void* <a href="/seamonkey/ident?i=aElement">aElement</a>, <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=aIndex">aIndex</a>)
   130  <a name=67 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#67">67</a> {
   131  <a name=68 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#68">68</a>     <a href="/seamonkey/ident?i=NS_PRECONDITION">NS_PRECONDITION</a>(<a href="/seamonkey/ident?i=aIndex">aIndex</a> &gt;= 0 &amp;&amp; <a href="/seamonkey/ident?i=aIndex">aIndex</a> &lt;= <a href="/seamonkey/ident?i=GetCount">GetCount</a>(), <i>"bad index"</i>);
   132  <a name=69 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#69">69</a> 
   133  <a name=70 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#70">70</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   134  <a name=71 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#71">71</a>     SetCount(<a href="/seamonkey/ident?i=count">count</a> + 1);
   135  <a name=72 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#72">72</a> 
   136  <a name=73 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#73">73</a>     while (<a href="/seamonkey/ident?i=count">count</a> &gt; <a href="/seamonkey/ident?i=aIndex">aIndex</a>) {
   137  <a name=74 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#74">74</a>         mData[<a href="/seamonkey/ident?i=count">count</a>] = mData[<a href="/seamonkey/ident?i=count">count</a> - 1];
   138  <a name=75 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#75">75</a>         --<a href="/seamonkey/ident?i=count">count</a>;
   139  <a name=76 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#76">76</a>     }
   140  <a name=77 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#77">77</a> 
   141  <a name=78 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#78">78</a>     mData[<a href="/seamonkey/ident?i=aIndex">aIndex</a>] = <a href="/seamonkey/ident?i=aElement">aElement</a>;
   142  <a name=79 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#79">79</a> }
   143  <a name=80 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#80">80</a> 
   144  <a name=81 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#81">81</a> void
   145  <a name=82 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#82">82</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=RemoveElementAt">RemoveElementAt</a>(<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=aIndex">aIndex</a>)
   146  <a name=83 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#83">83</a> {
   147  <a name=84 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#84">84</a>     <a href="/seamonkey/ident?i=NS_PRECONDITION">NS_PRECONDITION</a>(<a href="/seamonkey/ident?i=aIndex">aIndex</a> &gt;= 0 &amp;&amp; <a href="/seamonkey/ident?i=aIndex">aIndex</a> &lt; <a href="/seamonkey/ident?i=GetCount">GetCount</a>(), <i>"bad index"</i>);
   148  <a name=85 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#85">85</a> 
   149  <a name=86 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#86">86</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   150  <a name=87 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#87">87</a>     SetCount(<a href="/seamonkey/ident?i=count">count</a> - 1);
   151  <a name=88 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#88">88</a>     
   152  <a name=89 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#89">89</a>     while (<a href="/seamonkey/ident?i=aIndex">aIndex</a> &lt; <a href="/seamonkey/ident?i=count">count</a>) {
   153  <a name=90 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#90">90</a>         mData[<a href="/seamonkey/ident?i=aIndex">aIndex</a>] = mData[<a href="/seamonkey/ident?i=aIndex">aIndex</a> + 1];
   154  <a name=91 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#91">91</a>         ++<a href="/seamonkey/ident?i=aIndex">aIndex</a>;
   155  <a name=92 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#92">92</a>     }
   156  <a name=93 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#93">93</a> }
   157  <a name=94 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#94">94</a> 
   158  <a name=95 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#95">95</a> 
   159  <a name=96 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#96">96</a> <b><i>//----------------------------------------------------------------------</i></b>
   160  <a name=97 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#97">97</a> <b><i></i></b><b><i>//</i></b>
   161  <a name=98 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#98">98</a> <b><i></i></b><b><i>// nsVoidBTree::Path</i></b>
   162  <a name=99 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#99">99</a> <b><i></i></b><b><i>//</i></b>
   163 <a name=100 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#100">100</a> <b><i></i></b><b><i>//   Implementation methods</i></b>
   164 <a name=101 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#101">101</a> <b><i></i></b><b><i>//</i></b>
   165 <a name=102 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#102">102</a> <b><i></i></b>
   166 <a name=103 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#103">103</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Path">Path</a>::<a href="/seamonkey/ident?i=Path">Path</a>(const <a href="/seamonkey/ident?i=Path">Path</a>&amp; <a href="/seamonkey/ident?i=aOther">aOther</a>)
   167 <a name=104 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#104">104</a>     : mTop(<a href="/seamonkey/ident?i=aOther">aOther</a>.mTop)
   168 <a name=105 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#105">105</a> {
   169 <a name=106 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#106">106</a>     for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=i">i</a> = 0; <a href="/seamonkey/ident?i=i">i</a> &lt; mTop; ++<a href="/seamonkey/ident?i=i">i</a>)
   170 <a name=107 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#107">107</a>         mLink[<a href="/seamonkey/ident?i=i">i</a>] = <a href="/seamonkey/ident?i=aOther">aOther</a>.mLink[<a href="/seamonkey/ident?i=i">i</a>];
   171 <a name=108 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#108">108</a> }
   172 <a name=109 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#109">109</a> 
   173 <a name=110 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#110">110</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Path">Path</a>&amp;
   174 <a name=111 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#111">111</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Path">Path</a>::operator=(const <a href="/seamonkey/ident?i=Path">Path</a>&amp; <a href="/seamonkey/ident?i=aOther">aOther</a>)
   175 <a name=112 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#112">112</a> {
   176 <a name=113 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#113">113</a>     mTop = <a href="/seamonkey/ident?i=aOther">aOther</a>.mTop;
   177 <a name=114 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#114">114</a>     for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=i">i</a> = 0; <a href="/seamonkey/ident?i=i">i</a> &lt; mTop; ++<a href="/seamonkey/ident?i=i">i</a>)
   178 <a name=115 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#115">115</a>         mLink[<a href="/seamonkey/ident?i=i">i</a>] = <a href="/seamonkey/ident?i=aOther">aOther</a>.mLink[<a href="/seamonkey/ident?i=i">i</a>];
   179 <a name=116 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#116">116</a>     return *<a href="/seamonkey/ident?i=this">this</a>;
   180 <a name=117 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#117">117</a> }
   181 <a name=118 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#118">118</a> 
   182 <a name=119 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#119">119</a> inline <a href="/seamonkey/ident?i=nsresult">nsresult</a>
   183 <a name=120 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#120">120</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Path">Path</a>::<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=aNode">aNode</a>, <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=aIndex">aIndex</a>)
   184 <a name=121 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#121">121</a> {
   185 <a name=122 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#122">122</a>     <b><i>// XXX If you overflow this thing, think about making larger index</i></b>
   186 <a name=123 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#123">123</a> <b><i></i></b>    <b><i>// or data nodes. You can pack a _lot_ of data into a pretty flat</i></b>
   187 <a name=124 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#124">124</a> <b><i></i></b>    <b><i>// tree.</i></b>
   188 <a name=125 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#125">125</a> <b><i></i></b>    <a href="/seamonkey/ident?i=NS_PRECONDITION">NS_PRECONDITION</a>(mTop &lt;= kMaxDepth, <i>"overflow"</i>);
   189 <a name=126 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#126">126</a>     if (mTop &gt; kMaxDepth)
   190 <a name=127 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#127">127</a>         return <a href="/seamonkey/ident?i=NS_ERROR_OUT_OF_MEMORY">NS_ERROR_OUT_OF_MEMORY</a>;
   191 <a name=128 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#128">128</a> 
   192 <a name=129 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#129">129</a>     mLink[mTop].mNode  = <a href="/seamonkey/ident?i=aNode">aNode</a>;
   193 <a name=130 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#130">130</a>     mLink[mTop].<a href="/seamonkey/ident?i=mIndex">mIndex</a> = <a href="/seamonkey/ident?i=aIndex">aIndex</a>;
   194 <a name=131 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#131">131</a>     ++mTop;
   195 <a name=132 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#132">132</a> 
   196 <a name=133 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#133">133</a>     return <a href="/seamonkey/ident?i=NS_OK">NS_OK</a>;
   197 <a name=134 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#134">134</a> }
   198 <a name=135 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#135">135</a> 
   199 <a name=136 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#136">136</a> 
   200 <a name=137 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#137">137</a> inline void
   201 <a name=138 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#138">138</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Path">Path</a>::<a href="/seamonkey/ident?i=Pop">Pop</a>(<a href="/seamonkey/ident?i=Node">Node</a>** <a href="/seamonkey/ident?i=aNode">aNode</a>, <a href="/seamonkey/ident?i=PRInt32">PRInt32</a>* <a href="/seamonkey/ident?i=aIndex">aIndex</a>)
   202 <a name=139 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#139">139</a> {
   203 <a name=140 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#140">140</a>     --mTop;
   204 <a name=141 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#141">141</a>     *<a href="/seamonkey/ident?i=aNode">aNode</a>  = mLink[mTop].mNode;
   205 <a name=142 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#142">142</a>     *<a href="/seamonkey/ident?i=aIndex">aIndex</a> = mLink[mTop].<a href="/seamonkey/ident?i=mIndex">mIndex</a>;
   206 <a name=143 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#143">143</a> }
   207 <a name=144 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#144">144</a> 
   208 <a name=145 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#145">145</a> <b><i>//----------------------------------------------------------------------</i></b>
   209 <a name=146 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#146">146</a> <b><i></i></b><b><i>//</i></b>
   210 <a name=147 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#147">147</a> <b><i></i></b><b><i>//    nsVoidBTree methods</i></b>
   211 <a name=148 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#148">148</a> <b><i></i></b><b><i>//</i></b>
   212 <a name=149 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#149">149</a> <b><i></i></b>
   213 <a name=150 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#150">150</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>(const <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>&amp; <a href="/seamonkey/ident?i=aOther">aOther</a>)
   214 <a name=151 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#151">151</a> {
   215 <a name=152 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#152">152</a>     ConstIterator <a href="/seamonkey/ident?i=last">last</a> = <a href="/seamonkey/ident?i=aOther">aOther</a>.<a href="/seamonkey/ident?i=Last">Last</a>();
   216 <a name=153 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#153">153</a>     for (ConstIterator element = <a href="/seamonkey/ident?i=aOther">aOther</a>.<a href="/seamonkey/ident?i=First">First</a>(); element != <a href="/seamonkey/ident?i=last">last</a>; ++element)
   217 <a name=154 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#154">154</a>         <a href="/seamonkey/ident?i=AppendElement">AppendElement</a>(*element);
   218 <a name=155 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#155">155</a> }
   219 <a name=156 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#156">156</a> 
   220 <a name=157 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#157">157</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>&amp;
   221 <a name=158 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#158">158</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::operator=(const <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>&amp; <a href="/seamonkey/ident?i=aOther">aOther</a>)
   222 <a name=159 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#159">159</a> {
   223 <a name=160 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#160">160</a>     <a href="/seamonkey/ident?i=Clear">Clear</a>();
   224 <a name=161 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#161">161</a>     ConstIterator <a href="/seamonkey/ident?i=last">last</a> = <a href="/seamonkey/ident?i=aOther">aOther</a>.<a href="/seamonkey/ident?i=Last">Last</a>();
   225 <a name=162 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#162">162</a>     for (ConstIterator element = <a href="/seamonkey/ident?i=aOther">aOther</a>.<a href="/seamonkey/ident?i=First">First</a>(); element != <a href="/seamonkey/ident?i=last">last</a>; ++element)
   226 <a name=163 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#163">163</a>         <a href="/seamonkey/ident?i=AppendElement">AppendElement</a>(*element);
   227 <a name=164 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#164">164</a>     return *<a href="/seamonkey/ident?i=this">this</a>;
   228 <a name=165 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#165">165</a> }
   229 <a name=166 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#166">166</a> 
   230 <a name=167 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#167">167</a> <a href="/seamonkey/ident?i=PRInt32">PRInt32</a>
   231 <a name=168 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#168">168</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Count">Count</a>() const
   232 <a name=169 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#169">169</a> {
   233 <a name=170 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#170">170</a>     if (<a href="/seamonkey/ident?i=IsEmpty">IsEmpty</a>())
   234 <a name=171 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#171">171</a>         return 0;
   235 <a name=172 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#172">172</a> 
   236 <a name=173 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#173">173</a>     if (IsSingleElement())
   237 <a name=174 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#174">174</a>         return 1;
   238 <a name=175 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#175">175</a> 
   239 <a name=176 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#176">176</a>     <a href="/seamonkey/ident?i=Node">Node</a>* root = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask);
   240 <a name=177 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#177">177</a>     return root-&gt;GetSubTreeSize();
   241 <a name=178 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#178">178</a> }
   242 <a name=179 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#179">179</a> 
   243 <a name=180 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#180">180</a> void*
   244 <a name=181 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#181">181</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=ElementAt">ElementAt</a>(<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=aIndex">aIndex</a>) const
   245 <a name=182 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#182">182</a> {
   246 <a name=183 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#183">183</a>     if (<a href="/seamonkey/ident?i=aIndex">aIndex</a> &lt; 0 || <a href="/seamonkey/ident?i=aIndex">aIndex</a> &gt;= <a href="/seamonkey/ident?i=Count">Count</a>())
   247 <a name=184 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#184">184</a>         return <a href="/seamonkey/ident?i=nullptr">nullptr</a>;
   248 <a name=185 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#185">185</a> 
   249 <a name=186 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#186">186</a>     if (IsSingleElement())
   250 <a name=187 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#187">187</a>         return <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(void*, mRoot &amp; kRoot_PointerMask);
   251 <a name=188 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#188">188</a> 
   252 <a name=189 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#189">189</a>     <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask);
   253 <a name=190 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#190">190</a>     while (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() != <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   254 <a name=191 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#191">191</a>         <b><i>// We're still in the index. Find the right leaf.</i></b>
   255 <a name=192 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#192">192</a> <b><i></i></b>        <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=next">next</a> = <a href="/seamonkey/ident?i=nullptr">nullptr</a>;
   256 <a name=193 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#193">193</a> 
   257 <a name=194 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#194">194</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   258 <a name=195 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#195">195</a>         for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=i">i</a> = 0; <a href="/seamonkey/ident?i=i">i</a> &lt; <a href="/seamonkey/ident?i=count">count</a>; ++<a href="/seamonkey/ident?i=i">i</a>) {
   259 <a name=196 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#196">196</a>             <a href="/seamonkey/ident?i=Node">Node</a>* child = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=i">i</a>));
   260 <a name=197 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#197">197</a> 
   261 <a name=198 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#198">198</a>             <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> childcount = child-&gt;GetSubTreeSize();
   262 <a name=199 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#199">199</a>             if (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a>(<a href="/seamonkey/ident?i=aIndex">aIndex</a>) &lt; childcount) {
   263 <a name=200 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#200">200</a>                 <a href="/seamonkey/ident?i=next">next</a> = child;
   264 <a name=201 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#201">201</a>                 break;
   265 <a name=202 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#202">202</a>             }
   266 <a name=203 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#203">203</a> 
   267 <a name=204 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#204">204</a>             <a href="/seamonkey/ident?i=aIndex">aIndex</a> -= childcount;
   268 <a name=205 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#205">205</a>         }
   269 <a name=206 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#206">206</a> 
   270 <a name=207 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#207">207</a>         if (! <a href="/seamonkey/ident?i=next">next</a>) {
   271 <a name=208 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#208">208</a>             <a href="/seamonkey/ident?i=NS_ERROR">NS_ERROR</a>(<i>"corrupted"</i>);
   272 <a name=209 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#209">209</a>             return <a href="/seamonkey/ident?i=nullptr">nullptr</a>;
   273 <a name=210 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#210">210</a>         }
   274 <a name=211 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#211">211</a> 
   275 <a name=212 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#212">212</a>         <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=next">next</a>;
   276 <a name=213 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#213">213</a>     }
   277 <a name=214 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#214">214</a> 
   278 <a name=215 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#215">215</a>     return <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=aIndex">aIndex</a>);
   279 <a name=216 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#216">216</a> }
   280 <a name=217 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#217">217</a> 
   281 <a name=218 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#218">218</a> 
   282 <a name=219 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#219">219</a> <a href="/seamonkey/ident?i=PRInt32">PRInt32</a>
   283 <a name=220 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#220">220</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=IndexOf">IndexOf</a>(void* aPossibleElement) const
   284 <a name=221 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#221">221</a> {
   285 <a name=222 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#222">222</a>     <a href="/seamonkey/ident?i=NS_PRECONDITION">NS_PRECONDITION</a>((<a href="/seamonkey/ident?i=PRWord">PRWord</a>(aPossibleElement) &amp; ~kRoot_PointerMask) == 0,
   286 <a name=223 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#223">223</a>                     <i>"uh oh, someone wants to use the pointer bits"</i>);
   287 <a name=224 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#224">224</a> 
   288 <a name=225 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#225">225</a>     <a href="/seamonkey/ident?i=NS_PRECONDITION">NS_PRECONDITION</a>(aPossibleElement != <a href="/seamonkey/ident?i=nullptr">nullptr</a>, <i>"nsVoidBTree can't handle null elements"</i>);
   289 <a name=226 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#226">226</a>     if (aPossibleElement == <a href="/seamonkey/ident?i=nullptr">nullptr</a>)
   290 <a name=227 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#227">227</a>         return -1;
   291 <a name=228 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#228">228</a> 
   292 <a name=229 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#229">229</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=result">result</a> = 0;
   293 <a name=230 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#230">230</a>     ConstIterator <a href="/seamonkey/ident?i=last">last</a> = <a href="/seamonkey/ident?i=Last">Last</a>();
   294 <a name=231 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#231">231</a>     for (ConstIterator element = <a href="/seamonkey/ident?i=First">First</a>(); element != <a href="/seamonkey/ident?i=last">last</a>; ++element, ++<a href="/seamonkey/ident?i=result">result</a>) {
   295 <a name=232 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#232">232</a>         if (aPossibleElement == *element)
   296 <a name=233 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#233">233</a>             return <a href="/seamonkey/ident?i=result">result</a>;
   297 <a name=234 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#234">234</a>     }
   298 <a name=235 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#235">235</a> 
   299 <a name=236 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#236">236</a>     return -1;
   300 <a name=237 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#237">237</a> }
   301 <a name=238 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#238">238</a> 
   302 <a name=239 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#239">239</a>   
   303 <a name=240 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#240">240</a> <a href="/seamonkey/ident?i=PRBool">PRBool</a>
   304 <a name=241 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#241">241</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=InsertElementAt">InsertElementAt</a>(void* <a href="/seamonkey/ident?i=aElement">aElement</a>, <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=aIndex">aIndex</a>)
   305 <a name=242 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#242">242</a> {
   306 <a name=243 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#243">243</a>     <a href="/seamonkey/ident?i=NS_PRECONDITION">NS_PRECONDITION</a>((<a href="/seamonkey/ident?i=PRWord">PRWord</a>(<a href="/seamonkey/ident?i=aElement">aElement</a>) &amp; ~kRoot_PointerMask) == 0,
   307 <a name=244 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#244">244</a>                     <i>"uh oh, someone wants to use the pointer bits"</i>);
   308 <a name=245 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#245">245</a> 
   309 <a name=246 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#246">246</a>     if ((<a href="/seamonkey/ident?i=PRWord">PRWord</a>(<a href="/seamonkey/ident?i=aElement">aElement</a>) &amp; ~kRoot_PointerMask) != 0)
   310 <a name=247 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#247">247</a>         return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   311 <a name=248 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#248">248</a> 
   312 <a name=249 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#249">249</a>     <a href="/seamonkey/ident?i=NS_PRECONDITION">NS_PRECONDITION</a>(<a href="/seamonkey/ident?i=aElement">aElement</a> != <a href="/seamonkey/ident?i=nullptr">nullptr</a>, <i>"nsVoidBTree can't handle null elements"</i>);
   313 <a name=250 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#250">250</a>     if (<a href="/seamonkey/ident?i=aElement">aElement</a> == <a href="/seamonkey/ident?i=nullptr">nullptr</a>)
   314 <a name=251 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#251">251</a>         return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   315 <a name=252 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#252">252</a> 
   316 <a name=253 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#253">253</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=Count">Count</a>();
   317 <a name=254 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#254">254</a> 
   318 <a name=255 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#255">255</a>     if (<a href="/seamonkey/ident?i=aIndex">aIndex</a> &lt; 0 || <a href="/seamonkey/ident?i=aIndex">aIndex</a> &gt; <a href="/seamonkey/ident?i=count">count</a>)
   319 <a name=256 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#256">256</a>         return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   320 <a name=257 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#257">257</a> 
   321 <a name=258 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#258">258</a>     <a href="/seamonkey/ident?i=nsresult">nsresult</a> <a href="/seamonkey/ident?i=rv">rv</a>;
   322 <a name=259 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#259">259</a> 
   323 <a name=260 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#260">260</a>     if (IsSingleElement()) {
   324 <a name=261 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#261">261</a>         <b><i>// We're only a single element holder, and haven't yet</i></b>
   325 <a name=262 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#262">262</a> <b><i></i></b>        <b><i>// "faulted" to create the btree.</i></b>
   326 <a name=263 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#263">263</a> <b><i></i></b>
   327 <a name=264 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#264">264</a>         if (<a href="/seamonkey/ident?i=count">count</a> == 0) {
   328 <a name=265 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#265">265</a>             <b><i>// If we have *no* elements, then just set the root</i></b>
   329 <a name=266 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#266">266</a> <b><i></i></b>            <b><i>// pointer and we're done.</i></b>
   330 <a name=267 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#267">267</a> <b><i></i></b>            mRoot = <a href="/seamonkey/ident?i=PRWord">PRWord</a>(<a href="/seamonkey/ident?i=aElement">aElement</a>);
   331 <a name=268 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#268">268</a>             return <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   332 <a name=269 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#269">269</a>         }
   333 <a name=270 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#270">270</a> 
   334 <a name=271 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#271">271</a>         <b><i>// If we already had an element, and now we're adding</i></b>
   335 <a name=272 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#272">272</a> <b><i></i></b>        <b><i>// another. Fault and start creating the btree.</i></b>
   336 <a name=273 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#273">273</a> <b><i></i></b>        void* element = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(void*, mRoot &amp; kRoot_PointerMask);
   337 <a name=274 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#274">274</a> 
   338 <a name=275 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#275">275</a>         <a href="/seamonkey/ident?i=Node">Node</a>* newroot;
   339 <a name=276 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#276">276</a>         <a href="/seamonkey/ident?i=rv">rv</a> = <a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=Create">Create</a>(<a href="/seamonkey/ident?i=Node">Node</a>::eType_Data, kDataCapacity, &amp;newroot);
   340 <a name=277 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#277">277</a>         if (<a href="/seamonkey/ident?i=NS_FAILED">NS_FAILED</a>(<a href="/seamonkey/ident?i=rv">rv</a>)) return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   341 <a name=278 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#278">278</a> 
   342 <a name=279 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#279">279</a>         newroot-&gt;<a href="/seamonkey/ident?i=InsertElementAt">InsertElementAt</a>(element, 0);
   343 <a name=280 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#280">280</a>         newroot-&gt;SetSubTreeSize(1);
   344 <a name=281 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#281">281</a>         SetRoot(newroot);
   345 <a name=282 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#282">282</a>     }
   346 <a name=283 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#283">283</a> 
   347 <a name=284 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#284">284</a>     <a href="/seamonkey/ident?i=Path">Path</a> <a href="/seamonkey/ident?i=path">path</a>;
   348 <a name=285 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#285">285</a> 
   349 <a name=286 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#286">286</a>     <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask);
   350 <a name=287 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#287">287</a>     while (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() != <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   351 <a name=288 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#288">288</a>         <b><i>// We're still in the index. Find the right leaf.</i></b>
   352 <a name=289 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#289">289</a> <b><i></i></b>        <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=next">next</a> = <a href="/seamonkey/ident?i=nullptr">nullptr</a>;
   353 <a name=290 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#290">290</a> 
   354 <a name=291 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#291">291</a>         <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   355 <a name=292 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#292">292</a>         for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=i">i</a> = 0; <a href="/seamonkey/ident?i=i">i</a> &lt; <a href="/seamonkey/ident?i=count">count</a>; ++<a href="/seamonkey/ident?i=i">i</a>) {
   356 <a name=293 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#293">293</a>             <a href="/seamonkey/ident?i=Node">Node</a>* child = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=i">i</a>));
   357 <a name=294 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#294">294</a> 
   358 <a name=295 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#295">295</a>             <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> childcount = child-&gt;GetSubTreeSize();
   359 <a name=296 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#296">296</a>             if (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a>(<a href="/seamonkey/ident?i=aIndex">aIndex</a>) &lt;= childcount) {
   360 <a name=297 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#297">297</a>                 <a href="/seamonkey/ident?i=rv">rv</a> = <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=i">i</a> + 1);
   361 <a name=298 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#298">298</a>                 if (<a href="/seamonkey/ident?i=NS_FAILED">NS_FAILED</a>(<a href="/seamonkey/ident?i=rv">rv</a>)) return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   362 <a name=299 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#299">299</a> 
   363 <a name=300 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#300">300</a>                 <a href="/seamonkey/ident?i=next">next</a> = child;
   364 <a name=301 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#301">301</a>                 break;
   365 <a name=302 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#302">302</a>             }
   366 <a name=303 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#303">303</a> 
   367 <a name=304 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#304">304</a>             <a href="/seamonkey/ident?i=aIndex">aIndex</a> -= childcount;
   368 <a name=305 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#305">305</a>         }
   369 <a name=306 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#306">306</a> 
   370 <a name=307 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#307">307</a>         if (! <a href="/seamonkey/ident?i=next">next</a>) {
   371 <a name=308 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#308">308</a>             <a href="/seamonkey/ident?i=NS_ERROR">NS_ERROR</a>(<i>"corrupted"</i>);
   372 <a name=309 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#309">309</a>             return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   373 <a name=310 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#310">310</a>         }
   374 <a name=311 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#311">311</a> 
   375 <a name=312 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#312">312</a>         <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=next">next</a>;
   376 <a name=313 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#313">313</a>     }
   377 <a name=314 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#314">314</a> 
   378 <a name=315 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#315">315</a>     if (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>() &gt;= kDataCapacity) {
   379 <a name=316 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#316">316</a>         <b><i>// We just blew the data node's buffer. Create another</i></b>
   380 <a name=317 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#317">317</a> <b><i></i></b>        <b><i>// datanode and split.</i></b>
   381 <a name=318 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#318">318</a> <b><i></i></b>        <a href="/seamonkey/ident?i=rv">rv</a> = <a href="/seamonkey/ident?i=Split">Split</a>(<a href="/seamonkey/ident?i=path">path</a>, <a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=aElement">aElement</a>, <a href="/seamonkey/ident?i=aIndex">aIndex</a>);
   382 <a name=319 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#319">319</a>         if (<a href="/seamonkey/ident?i=NS_FAILED">NS_FAILED</a>(<a href="/seamonkey/ident?i=rv">rv</a>)) return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   383 <a name=320 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#320">320</a>     }
   384 <a name=321 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#321">321</a>     else {
   385 <a name=322 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#322">322</a>         <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=InsertElementAt">InsertElementAt</a>(<a href="/seamonkey/ident?i=aElement">aElement</a>, <a href="/seamonkey/ident?i=aIndex">aIndex</a>);
   386 <a name=323 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#323">323</a>         <a href="/seamonkey/ident?i=current">current</a>-&gt;SetSubTreeSize(<a href="/seamonkey/ident?i=current">current</a>-&gt;GetSubTreeSize() + 1);
   387 <a name=324 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#324">324</a>     }
   388 <a name=325 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#325">325</a> 
   389 <a name=326 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#326">326</a>     while (<a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Length">Length</a>() &gt; 0) {
   390 <a name=327 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#327">327</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=index">index</a>;
   391 <a name=328 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#328">328</a>         <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Pop">Pop</a>(&amp;<a href="/seamonkey/ident?i=current">current</a>, &amp;<a href="/seamonkey/ident?i=index">index</a>);
   392 <a name=329 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#329">329</a>         <a href="/seamonkey/ident?i=current">current</a>-&gt;SetSubTreeSize(<a href="/seamonkey/ident?i=current">current</a>-&gt;GetSubTreeSize() + 1);
   393 <a name=330 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#330">330</a>     }
   394 <a name=331 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#331">331</a> 
   395 <a name=332 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#332">332</a> #ifdef <a href="/seamonkey/ident?i=PARANOID">PARANOID</a>
   396 <a name=333 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#333">333</a>     <a href="/seamonkey/ident?i=Verify">Verify</a>(<a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask));
   397 <a name=334 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#334">334</a> #endif
   398 <a name=335 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#335">335</a> 
   399 <a name=336 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#336">336</a>     return <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   400 <a name=337 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#337">337</a> }
   401 <a name=338 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#338">338</a> 
   402 <a name=339 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#339">339</a> <a href="/seamonkey/ident?i=PRBool">PRBool</a>
   403 <a name=340 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#340">340</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=ReplaceElementAt">ReplaceElementAt</a>(void* <a href="/seamonkey/ident?i=aElement">aElement</a>, <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=aIndex">aIndex</a>)
   404 <a name=341 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#341">341</a> {
   405 <a name=342 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#342">342</a>     <a href="/seamonkey/ident?i=NS_PRECONDITION">NS_PRECONDITION</a>((<a href="/seamonkey/ident?i=PRWord">PRWord</a>(<a href="/seamonkey/ident?i=aElement">aElement</a>) &amp; ~kRoot_PointerMask) == 0,
   406 <a name=343 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#343">343</a>                     <i>"uh oh, someone wants to use the pointer bits"</i>);
   407 <a name=344 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#344">344</a> 
   408 <a name=345 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#345">345</a>     if ((<a href="/seamonkey/ident?i=PRWord">PRWord</a>(<a href="/seamonkey/ident?i=aElement">aElement</a>) &amp; ~kRoot_PointerMask) != 0)
   409 <a name=346 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#346">346</a>         return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   410 <a name=347 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#347">347</a> 
   411 <a name=348 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#348">348</a>     <a href="/seamonkey/ident?i=NS_PRECONDITION">NS_PRECONDITION</a>(<a href="/seamonkey/ident?i=aElement">aElement</a> != <a href="/seamonkey/ident?i=nullptr">nullptr</a>, <i>"nsVoidBTree can't handle null elements"</i>);
   412 <a name=349 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#349">349</a>     if (<a href="/seamonkey/ident?i=aElement">aElement</a> == <a href="/seamonkey/ident?i=nullptr">nullptr</a>)
   413 <a name=350 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#350">350</a>         return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   414 <a name=351 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#351">351</a> 
   415 <a name=352 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#352">352</a>     if (<a href="/seamonkey/ident?i=aIndex">aIndex</a> &lt; 0 || <a href="/seamonkey/ident?i=aIndex">aIndex</a> &gt;= <a href="/seamonkey/ident?i=Count">Count</a>())
   416 <a name=353 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#353">353</a>         return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   417 <a name=354 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#354">354</a> 
   418 <a name=355 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#355">355</a>     if (IsSingleElement()) {
   419 <a name=356 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#356">356</a>         mRoot = <a href="/seamonkey/ident?i=PRWord">PRWord</a>(<a href="/seamonkey/ident?i=aElement">aElement</a>);
   420 <a name=357 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#357">357</a>         return <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   421 <a name=358 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#358">358</a>     }
   422 <a name=359 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#359">359</a> 
   423 <a name=360 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#360">360</a>     <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask);
   424 <a name=361 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#361">361</a>     while (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() != <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   425 <a name=362 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#362">362</a>         <b><i>// We're still in the index. Find the right leaf.</i></b>
   426 <a name=363 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#363">363</a> <b><i></i></b>        <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=next">next</a> = <a href="/seamonkey/ident?i=nullptr">nullptr</a>;
   427 <a name=364 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#364">364</a> 
   428 <a name=365 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#365">365</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   429 <a name=366 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#366">366</a>         for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=i">i</a> = 0; <a href="/seamonkey/ident?i=i">i</a> &lt; <a href="/seamonkey/ident?i=count">count</a>; ++<a href="/seamonkey/ident?i=i">i</a>) {
   430 <a name=367 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#367">367</a>             <a href="/seamonkey/ident?i=Node">Node</a>* child = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=i">i</a>));
   431 <a name=368 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#368">368</a> 
   432 <a name=369 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#369">369</a>             <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> childcount = child-&gt;GetSubTreeSize();
   433 <a name=370 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#370">370</a>             if (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a>(<a href="/seamonkey/ident?i=aIndex">aIndex</a>) &lt; childcount) {
   434 <a name=371 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#371">371</a>                 <a href="/seamonkey/ident?i=next">next</a> = child;
   435 <a name=372 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#372">372</a>                 break;
   436 <a name=373 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#373">373</a>             }
   437 <a name=374 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#374">374</a> 
   438 <a name=375 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#375">375</a>             <a href="/seamonkey/ident?i=aIndex">aIndex</a> -= childcount;
   439 <a name=376 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#376">376</a>         }
   440 <a name=377 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#377">377</a> 
   441 <a name=378 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#378">378</a>         if (! <a href="/seamonkey/ident?i=next">next</a>) {
   442 <a name=379 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#379">379</a>             <a href="/seamonkey/ident?i=NS_ERROR">NS_ERROR</a>(<i>"corrupted"</i>);
   443 <a name=380 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#380">380</a>             return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   444 <a name=381 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#381">381</a>         }
   445 <a name=382 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#382">382</a> 
   446 <a name=383 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#383">383</a>         <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=next">next</a>;
   447 <a name=384 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#384">384</a>     }
   448 <a name=385 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#385">385</a> 
   449 <a name=386 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#386">386</a>     <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=SetElementAt">SetElementAt</a>(<a href="/seamonkey/ident?i=aElement">aElement</a>, <a href="/seamonkey/ident?i=aIndex">aIndex</a>);
   450 <a name=387 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#387">387</a>     return <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   451 <a name=388 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#388">388</a> }
   452 <a name=389 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#389">389</a> 
   453 <a name=390 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#390">390</a> <a href="/seamonkey/ident?i=PRBool">PRBool</a>
   454 <a name=391 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#391">391</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=RemoveElement">RemoveElement</a>(void* <a href="/seamonkey/ident?i=aElement">aElement</a>)
   455 <a name=392 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#392">392</a> {
   456 <a name=393 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#393">393</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=index">index</a> = <a href="/seamonkey/ident?i=IndexOf">IndexOf</a>(<a href="/seamonkey/ident?i=aElement">aElement</a>);
   457 <a name=394 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#394">394</a>     return (<a href="/seamonkey/ident?i=index">index</a> &gt;= 0) ? <a href="/seamonkey/ident?i=RemoveElementAt">RemoveElementAt</a>(<a href="/seamonkey/ident?i=index">index</a>) : <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   458 <a name=395 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#395">395</a> }
   459 <a name=396 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#396">396</a> 
   460 <a name=397 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#397">397</a> <a href="/seamonkey/ident?i=PRBool">PRBool</a>
   461 <a name=398 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#398">398</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=RemoveElementAt">RemoveElementAt</a>(<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=aIndex">aIndex</a>)
   462 <a name=399 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#399">399</a> {
   463 <a name=400 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#400">400</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=Count">Count</a>();
   464 <a name=401 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#401">401</a> 
   465 <a name=402 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#402">402</a>     if (<a href="/seamonkey/ident?i=aIndex">aIndex</a> &lt; 0 || <a href="/seamonkey/ident?i=aIndex">aIndex</a> &gt;= <a href="/seamonkey/ident?i=count">count</a>)
   466 <a name=403 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#403">403</a>         return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   467 <a name=404 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#404">404</a> 
   468 <a name=405 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#405">405</a>     if (IsSingleElement()) {
   469 <a name=406 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#406">406</a>         <b><i>// We're removing the one and only element</i></b>
   470 <a name=407 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#407">407</a> <b><i></i></b>        mRoot = 0;
   471 <a name=408 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#408">408</a>         return <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   472 <a name=409 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#409">409</a>     }
   473 <a name=410 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#410">410</a> 
   474 <a name=411 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#411">411</a>     <b><i>// We've got more than one element, and we're removing it.</i></b>
   475 <a name=412 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#412">412</a> <b><i></i></b>    <a href="/seamonkey/ident?i=nsresult">nsresult</a> <a href="/seamonkey/ident?i=rv">rv</a>;
   476 <a name=413 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#413">413</a>     <a href="/seamonkey/ident?i=Path">Path</a> <a href="/seamonkey/ident?i=path">path</a>;
   477 <a name=414 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#414">414</a> 
   478 <a name=415 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#415">415</a>     <a href="/seamonkey/ident?i=Node">Node</a>* root = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask);
   479 <a name=416 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#416">416</a> 
   480 <a name=417 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#417">417</a>     <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=current">current</a> = root;
   481 <a name=418 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#418">418</a>     while (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() != <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   482 <a name=419 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#419">419</a>         <b><i>// We're still in the index. Find the right leaf.</i></b>
   483 <a name=420 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#420">420</a> <b><i></i></b>        <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=next">next</a> = <a href="/seamonkey/ident?i=nullptr">nullptr</a>;
   484 <a name=421 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#421">421</a> 
   485 <a name=422 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#422">422</a>         <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   486 <a name=423 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#423">423</a>         for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=i">i</a> = 0; <a href="/seamonkey/ident?i=i">i</a> &lt; <a href="/seamonkey/ident?i=count">count</a>; ++<a href="/seamonkey/ident?i=i">i</a>) {
   487 <a name=424 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#424">424</a>             <a href="/seamonkey/ident?i=Node">Node</a>* child = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=i">i</a>));
   488 <a name=425 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#425">425</a> 
   489 <a name=426 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#426">426</a>             <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> childcount = child-&gt;GetSubTreeSize();
   490 <a name=427 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#427">427</a>             if (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a>(<a href="/seamonkey/ident?i=aIndex">aIndex</a>) &lt; childcount) {
   491 <a name=428 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#428">428</a>                 <a href="/seamonkey/ident?i=rv">rv</a> = <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=i">i</a>);
   492 <a name=429 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#429">429</a>                 if (<a href="/seamonkey/ident?i=NS_FAILED">NS_FAILED</a>(<a href="/seamonkey/ident?i=rv">rv</a>)) return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   493 <a name=430 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#430">430</a> 
   494 <a name=431 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#431">431</a>                 <a href="/seamonkey/ident?i=next">next</a> = child;
   495 <a name=432 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#432">432</a>                 break;
   496 <a name=433 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#433">433</a>             }
   497 <a name=434 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#434">434</a>             
   498 <a name=435 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#435">435</a>             <a href="/seamonkey/ident?i=aIndex">aIndex</a> -= childcount;
   499 <a name=436 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#436">436</a>         }
   500 <a name=437 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#437">437</a> 
   501 <a name=438 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#438">438</a>         if (! <a href="/seamonkey/ident?i=next">next</a>) {
   502 <a name=439 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#439">439</a>             <a href="/seamonkey/ident?i=NS_ERROR">NS_ERROR</a>(<i>"corrupted"</i>);
   503 <a name=440 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#440">440</a>             return <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   504 <a name=441 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#441">441</a>         }
   505 <a name=442 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#442">442</a> 
   506 <a name=443 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#443">443</a>         <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=next">next</a>;
   507 <a name=444 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#444">444</a>     }
   508 <a name=445 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#445">445</a> 
   509 <a name=446 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#446">446</a>     <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=RemoveElementAt">RemoveElementAt</a>(<a href="/seamonkey/ident?i=aIndex">aIndex</a>);
   510 <a name=447 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#447">447</a> 
   511 <a name=448 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#448">448</a>     while ((<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>() == 0) &amp;&amp; (<a href="/seamonkey/ident?i=current">current</a> != root)) {
   512 <a name=449 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#449">449</a>         <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=doomed">doomed</a> = <a href="/seamonkey/ident?i=current">current</a>;
   513 <a name=450 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#450">450</a> 
   514 <a name=451 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#451">451</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=index">index</a>;
   515 <a name=452 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#452">452</a>         <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Pop">Pop</a>(&amp;<a href="/seamonkey/ident?i=current">current</a>, &amp;<a href="/seamonkey/ident?i=index">index</a>);
   516 <a name=453 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#453">453</a>         <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=RemoveElementAt">RemoveElementAt</a>(<a href="/seamonkey/ident?i=index">index</a>);
   517 <a name=454 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#454">454</a> 
   518 <a name=455 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#455">455</a>         <a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=Destroy">Destroy</a>(<a href="/seamonkey/ident?i=doomed">doomed</a>);
   519 <a name=456 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#456">456</a>     }
   520 <a name=457 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#457">457</a> 
   521 <a name=458 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#458">458</a>     <a href="/seamonkey/ident?i=current">current</a>-&gt;SetSubTreeSize(<a href="/seamonkey/ident?i=current">current</a>-&gt;GetSubTreeSize() - 1);
   522 <a name=459 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#459">459</a> 
   523 <a name=460 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#460">460</a>     while (<a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Length">Length</a>() &gt; 0) {
   524 <a name=461 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#461">461</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=index">index</a>;
   525 <a name=462 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#462">462</a>         <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Pop">Pop</a>(&amp;<a href="/seamonkey/ident?i=current">current</a>, &amp;<a href="/seamonkey/ident?i=index">index</a>);
   526 <a name=463 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#463">463</a>         <a href="/seamonkey/ident?i=current">current</a>-&gt;SetSubTreeSize(<a href="/seamonkey/ident?i=current">current</a>-&gt;GetSubTreeSize() - 1);
   527 <a name=464 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#464">464</a>     }
   528 <a name=465 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#465">465</a> 
   529 <a name=466 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#466">466</a>     while ((root-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Index) &amp;&amp; (root-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>() == 1)) {
   530 <a name=467 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#467">467</a>         <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=doomed">doomed</a> = root;
   531 <a name=468 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#468">468</a>         root = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, root-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(0));
   532 <a name=469 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#469">469</a>         SetRoot(root);
   533 <a name=470 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#470">470</a>         <a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=Destroy">Destroy</a>(<a href="/seamonkey/ident?i=doomed">doomed</a>);
   534 <a name=471 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#471">471</a>     }
   535 <a name=472 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#472">472</a> 
   536 <a name=473 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#473">473</a> #ifdef <a href="/seamonkey/ident?i=PARANOID">PARANOID</a>
   537 <a name=474 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#474">474</a>     <a href="/seamonkey/ident?i=Verify">Verify</a>(root);
   538 <a name=475 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#475">475</a> #endif
   539 <a name=476 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#476">476</a> 
   540 <a name=477 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#477">477</a>     return <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   541 <a name=478 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#478">478</a> }
   542 <a name=479 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#479">479</a> 
   543 <a name=480 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#480">480</a> void
   544 <a name=481 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#481">481</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Clear">Clear</a>(void)
   545 <a name=482 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#482">482</a> {
   546 <a name=483 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#483">483</a>     if (<a href="/seamonkey/ident?i=IsEmpty">IsEmpty</a>())
   547 <a name=484 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#484">484</a>         return;
   548 <a name=485 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#485">485</a> 
   549 <a name=486 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#486">486</a>     if (! IsSingleElement()) {
   550 <a name=487 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#487">487</a>         <a href="/seamonkey/ident?i=Node">Node</a>* root = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask);
   551 <a name=488 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#488">488</a> 
   552 <a name=489 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#489">489</a> #ifdef <a href="/seamonkey/ident?i=PARANOID">PARANOID</a>
   553 <a name=490 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#490">490</a>         <a href="/seamonkey/ident?i=Dump">Dump</a>(root, 0);
   554 <a name=491 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#491">491</a> #endif
   555 <a name=492 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#492">492</a> 
   556 <a name=493 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#493">493</a>         <a href="/seamonkey/ident?i=DestroySubtree">DestroySubtree</a>(root);
   557 <a name=494 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#494">494</a>     }
   558 <a name=495 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#495">495</a> 
   559 <a name=496 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#496">496</a>     mRoot = 0;
   560 <a name=497 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#497">497</a> }
   561 <a name=498 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#498">498</a> 
   562 <a name=499 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#499">499</a> 
   563 <a name=500 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#500">500</a> void
   564 <a name=501 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#501">501</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Compact">Compact</a>(void)
   565 <a name=502 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#502">502</a> {
   566 <a name=503 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#503">503</a>     <b><i>// XXX We could go through and try to merge datanodes.</i></b>
   567 <a name=504 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#504">504</a> <b><i></i></b>}
   568 <a name=505 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#505">505</a> 
   569 <a name=506 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#506">506</a> <a href="/seamonkey/ident?i=PRBool">PRBool</a>
   570 <a name=507 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#507">507</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=EnumerateForwards">EnumerateForwards</a>(EnumFunc <a href="/seamonkey/ident?i=aFunc">aFunc</a>, void* <a href="/seamonkey/ident?i=aData">aData</a>) const
   571 <a name=508 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#508">508</a> {
   572 <a name=509 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#509">509</a>     <a href="/seamonkey/ident?i=PRBool">PRBool</a> running = <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   573 <a name=510 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#510">510</a> 
   574 <a name=511 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#511">511</a>     ConstIterator <a href="/seamonkey/ident?i=last">last</a> = <a href="/seamonkey/ident?i=Last">Last</a>();
   575 <a name=512 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#512">512</a>     for (ConstIterator element = <a href="/seamonkey/ident?i=First">First</a>(); running &amp;&amp; element != <a href="/seamonkey/ident?i=last">last</a>; ++element)
   576 <a name=513 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#513">513</a>         running = (*<a href="/seamonkey/ident?i=aFunc">aFunc</a>)(*element, <a href="/seamonkey/ident?i=aData">aData</a>);
   577 <a name=514 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#514">514</a> 
   578 <a name=515 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#515">515</a>     return running;
   579 <a name=516 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#516">516</a> }
   580 <a name=517 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#517">517</a> 
   581 <a name=518 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#518">518</a> <a href="/seamonkey/ident?i=PRBool">PRBool</a>
   582 <a name=519 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#519">519</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=EnumerateBackwards">EnumerateBackwards</a>(EnumFunc <a href="/seamonkey/ident?i=aFunc">aFunc</a>, void* <a href="/seamonkey/ident?i=aData">aData</a>) const
   583 <a name=520 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#520">520</a> {
   584 <a name=521 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#521">521</a>     <a href="/seamonkey/ident?i=PRBool">PRBool</a> running = <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   585 <a name=522 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#522">522</a> 
   586 <a name=523 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#523">523</a>     ConstIterator element = <a href="/seamonkey/ident?i=Last">Last</a>();
   587 <a name=524 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#524">524</a>     ConstIterator <a href="/seamonkey/ident?i=first">first</a> = <a href="/seamonkey/ident?i=First">First</a>();
   588 <a name=525 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#525">525</a> 
   589 <a name=526 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#526">526</a>     if (element != <a href="/seamonkey/ident?i=first">first</a>) {
   590 <a name=527 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#527">527</a>         do {
   591 <a name=528 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#528">528</a>             running = (*<a href="/seamonkey/ident?i=aFunc">aFunc</a>)(*--element, <a href="/seamonkey/ident?i=aData">aData</a>);
   592 <a name=529 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#529">529</a>         } while (running &amp;&amp; element != <a href="/seamonkey/ident?i=first">first</a>);
   593 <a name=530 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#530">530</a>     }
   594 <a name=531 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#531">531</a> 
   595 <a name=532 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#532">532</a>     return running;
   596 <a name=533 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#533">533</a> }
   597 <a name=534 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#534">534</a> 
   598 <a name=535 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#535">535</a> 
   599 <a name=536 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#536">536</a> void
   600 <a name=537 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#537">537</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=SizeOf">SizeOf</a>(<a href="/seamonkey/ident?i=nsISizeOfHandler">nsISizeOfHandler</a>* <a href="/seamonkey/ident?i=aHandler">aHandler</a>, <a href="/seamonkey/ident?i=PRUint32">PRUint32</a>* <a href="/seamonkey/ident?i=aResult">aResult</a>) const
   601 <a name=538 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#538">538</a> {
   602 <a name=539 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#539">539</a>     if (! <a href="/seamonkey/ident?i=aResult">aResult</a>)
   603 <a name=540 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#540">540</a>         return;
   604 <a name=541 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#541">541</a> 
   605 <a name=542 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#542">542</a>     *<a href="/seamonkey/ident?i=aResult">aResult</a> = sizeof(*<a href="/seamonkey/ident?i=this">this</a>);
   606 <a name=543 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#543">543</a> 
   607 <a name=544 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#544">544</a>     if (IsSingleElement())
   608 <a name=545 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#545">545</a>         return;
   609 <a name=546 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#546">546</a> 
   610 <a name=547 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#547">547</a>     <a href="/seamonkey/ident?i=Path">Path</a> <a href="/seamonkey/ident?i=path">path</a>;
   611 <a name=548 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#548">548</a>     <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask), 0);
   612 <a name=549 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#549">549</a> 
   613 <a name=550 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#550">550</a>     while (<a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Length">Length</a>()) {
   614 <a name=551 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#551">551</a>         <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=current">current</a>;
   615 <a name=552 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#552">552</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=index">index</a>;
   616 <a name=553 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#553">553</a>         <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Pop">Pop</a>(&amp;<a href="/seamonkey/ident?i=current">current</a>, &amp;<a href="/seamonkey/ident?i=index">index</a>);
   617 <a name=554 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#554">554</a> 
   618 <a name=555 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#555">555</a>         if (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   619 <a name=556 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#556">556</a>             *<a href="/seamonkey/ident?i=aResult">aResult</a> += sizeof(<a href="/seamonkey/ident?i=Node">Node</a>) + (sizeof(void*) * (kDataCapacity - 1));
   620 <a name=557 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#557">557</a>         }
   621 <a name=558 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#558">558</a>         else {
   622 <a name=559 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#559">559</a>             *<a href="/seamonkey/ident?i=aResult">aResult</a> += sizeof(<a href="/seamonkey/ident?i=Node">Node</a>) + (sizeof(void*) * (kIndexCapacity - 1));
   623 <a name=560 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#560">560</a> 
   624 <a name=561 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#561">561</a>             <b><i>// If we're in an index node, and there are still kids to</i></b>
   625 <a name=562 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#562">562</a> <b><i></i></b>            <b><i>// traverse, well, traverse 'em.</i></b>
   626 <a name=563 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#563">563</a> <b><i></i></b>            if (<a href="/seamonkey/ident?i=index">index</a> &lt; <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>()) {
   627 <a name=564 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#564">564</a>                 <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=index">index</a> + 1);
   628 <a name=565 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#565">565</a>                 <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=NS_STATIC_CAST">NS_STATIC_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=index">index</a>)), 0);
   629 <a name=566 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#566">566</a>             }
   630 <a name=567 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#567">567</a>         }
   631 <a name=568 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#568">568</a>     }
   632 <a name=569 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#569">569</a> }
   633 <a name=570 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#570">570</a> 
   634 <a name=571 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#571">571</a> <b><i>//----------------------------------------------------------------------</i></b>
   635 <a name=572 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#572">572</a> <b><i></i></b>
   636 <a name=573 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#573">573</a> <a href="/seamonkey/ident?i=nsresult">nsresult</a>
   637 <a name=574 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#574">574</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Split">Split</a>(<a href="/seamonkey/ident?i=Path">Path</a>&amp; <a href="/seamonkey/ident?i=path">path</a>, <a href="/seamonkey/ident?i=Node">Node</a>* aOldNode, void* aElementToInsert, <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> aSplitIndex)
   638 <a name=575 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#575">575</a> {
   639 <a name=576 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#576">576</a>     <a href="/seamonkey/ident?i=nsresult">nsresult</a> <a href="/seamonkey/ident?i=rv">rv</a>;
   640 <a name=577 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#577">577</a> 
   641 <a name=578 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#578">578</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> capacity = (aOldNode-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) ? kDataCapacity : kIndexCapacity;
   642 <a name=579 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#579">579</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=delta">delta</a> = 0;
   643 <a name=580 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#580">580</a> 
   644 <a name=581 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#581">581</a> 
   645 <a name=582 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#582">582</a>     <a href="/seamonkey/ident?i=Node">Node</a>* newnode;
   646 <a name=583 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#583">583</a>     <a href="/seamonkey/ident?i=rv">rv</a> = <a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=Create">Create</a>(aOldNode-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>(), capacity, &amp;newnode);
   647 <a name=584 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#584">584</a>     if (<a href="/seamonkey/ident?i=NS_FAILED">NS_FAILED</a>(<a href="/seamonkey/ident?i=rv">rv</a>)) return <a href="/seamonkey/ident?i=rv">rv</a>;
   648 <a name=585 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#585">585</a> 
   649 <a name=586 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#586">586</a>     if (aSplitIndex == capacity) {
   650 <a name=587 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#587">587</a>         <b><i>// If aSplitIndex is the same as the capacity of the node,</i></b>
   651 <a name=588 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#588">588</a> <b><i></i></b>        <b><i>// then there'll be nothing to copy from the old node to the</i></b>
   652 <a name=589 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#589">589</a> <b><i></i></b>        <b><i>// new node, and the element is really meant to be inserted in</i></b>
   653 <a name=590 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#590">590</a> <b><i></i></b>        <b><i>// the newnode. In that case, do it _now_ so that newnode's</i></b>
   654 <a name=591 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#591">591</a> <b><i></i></b>        <b><i>// subtree size will be correct.</i></b>
   655 <a name=592 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#592">592</a> <b><i></i></b>        newnode-&gt;<a href="/seamonkey/ident?i=InsertElementAt">InsertElementAt</a>(aElementToInsert, 0);
   656 <a name=593 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#593">593</a> 
   657 <a name=594 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#594">594</a>         if (newnode-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   658 <a name=595 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#595">595</a>             newnode-&gt;SetSubTreeSize(1);
   659 <a name=596 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#596">596</a>         }
   660 <a name=597 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#597">597</a>         else {
   661 <a name=598 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#598">598</a>             <a href="/seamonkey/ident?i=Node">Node</a>* child = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, aElementToInsert);
   662 <a name=599 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#599">599</a>             newnode-&gt;SetSubTreeSize(child-&gt;GetSubTreeSize());
   663 <a name=600 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#600">600</a>         }
   664 <a name=601 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#601">601</a>     }
   665 <a name=602 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#602">602</a>     else {
   666 <a name=603 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#603">603</a>         <b><i>// We're meant to insert the element into the oldnode at</i></b>
   667 <a name=604 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#604">604</a> <b><i></i></b>        <b><i>// aSplitIndex. Copy data from aOldNode to the newnode but</i></b>
   668 <a name=605 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#605">605</a> <b><i></i></b>        <b><i>// _don't_ insert newnode yet. We may need to recursively</i></b>
   669 <a name=606 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#606">606</a> <b><i></i></b>        <b><i>// split parents, an operation that allocs, and hence, may</i></b>
   670 <a name=607 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#607">607</a> <b><i></i></b>        <b><i>// fail. If it does fail, we wan't to not screw up the</i></b>
   671 <a name=608 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#608">608</a> <b><i></i></b>        <b><i>// existing datastructure.</i></b>
   672 <a name=609 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#609">609</a> <b><i></i></b>        <b><i>//</i></b>
   673 <a name=610 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#610">610</a> <b><i></i></b>        <b><i>// Note that it should be the case that count == capacity, but</i></b>
   674 <a name=611 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#611">611</a> <b><i></i></b>        <b><i>// who knows, we may decide at some point to prematurely split</i></b>
   675 <a name=612 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#612">612</a> <b><i></i></b>        <b><i>// nodes for some reason or another.</i></b>
   676 <a name=613 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#613">613</a> <b><i></i></b>        <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = aOldNode-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   677 <a name=614 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#614">614</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=i">i</a> = aSplitIndex;
   678 <a name=615 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#615">615</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=j">j</a> = 0;
   679 <a name=616 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#616">616</a> 
   680 <a name=617 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#617">617</a>         newnode-&gt;SetCount(<a href="/seamonkey/ident?i=count">count</a> - aSplitIndex);
   681 <a name=618 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#618">618</a>         while (<a href="/seamonkey/ident?i=i">i</a> &lt; <a href="/seamonkey/ident?i=count">count</a>) {
   682 <a name=619 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#619">619</a>             if (aOldNode-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   683 <a name=620 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#620">620</a>                 ++<a href="/seamonkey/ident?i=delta">delta</a>;
   684 <a name=621 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#621">621</a>             }
   685 <a name=622 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#622">622</a>             else {
   686 <a name=623 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#623">623</a>                 <a href="/seamonkey/ident?i=Node">Node</a>* migrating = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, aOldNode-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=i">i</a>));
   687 <a name=624 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#624">624</a>                 <a href="/seamonkey/ident?i=delta">delta</a> += migrating-&gt;GetSubTreeSize();
   688 <a name=625 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#625">625</a>             }
   689 <a name=626 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#626">626</a> 
   690 <a name=627 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#627">627</a>             newnode-&gt;<a href="/seamonkey/ident?i=SetElementAt">SetElementAt</a>(aOldNode-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=i">i</a>), <a href="/seamonkey/ident?i=j">j</a>);
   691 <a name=628 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#628">628</a>             ++<a href="/seamonkey/ident?i=i">i</a>;
   692 <a name=629 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#629">629</a>             ++<a href="/seamonkey/ident?i=j">j</a>;
   693 <a name=630 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#630">630</a>         }
   694 <a name=631 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#631">631</a>         newnode-&gt;SetSubTreeSize(<a href="/seamonkey/ident?i=delta">delta</a>);
   695 <a name=632 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#632">632</a>     }
   696 <a name=633 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#633">633</a> 
   697 <a name=634 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#634">634</a>     <b><i>// Now we split the node.</i></b>
   698 <a name=635 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#635">635</a> <b><i></i></b>
   699 <a name=636 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#636">636</a>     if (<a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Length">Length</a>() == 0) {
   700 <a name=637 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#637">637</a>         <b><i>// We made it all the way up to the root! Ok, so, create a new</i></b>
   701 <a name=638 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#638">638</a> <b><i></i></b>        <b><i>// root</i></b>
   702 <a name=639 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#639">639</a> <b><i></i></b>        <a href="/seamonkey/ident?i=Node">Node</a>* newroot;
   703 <a name=640 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#640">640</a>         <a href="/seamonkey/ident?i=rv">rv</a> = <a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=Create">Create</a>(<a href="/seamonkey/ident?i=Node">Node</a>::eType_Index, kIndexCapacity, &amp;newroot);
   704 <a name=641 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#641">641</a>         if (<a href="/seamonkey/ident?i=NS_FAILED">NS_FAILED</a>(<a href="/seamonkey/ident?i=rv">rv</a>)) return <a href="/seamonkey/ident?i=rv">rv</a>;
   705 <a name=642 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#642">642</a> 
   706 <a name=643 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#643">643</a>         newroot-&gt;SetCount(2);
   707 <a name=644 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#644">644</a>         newroot-&gt;<a href="/seamonkey/ident?i=SetElementAt">SetElementAt</a>(aOldNode, 0);
   708 <a name=645 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#645">645</a>         newroot-&gt;<a href="/seamonkey/ident?i=SetElementAt">SetElementAt</a>(newnode, 1);
   709 <a name=646 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#646">646</a>         newroot-&gt;SetSubTreeSize(aOldNode-&gt;GetSubTreeSize() + 1);
   710 <a name=647 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#647">647</a>         SetRoot(newroot);
   711 <a name=648 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#648">648</a>     }
   712 <a name=649 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#649">649</a>     else {
   713 <a name=650 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#650">650</a>         <b><i>// Otherwise, use the "path" to pop off the next thing above us.</i></b>
   714 <a name=651 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#651">651</a> <b><i></i></b>        <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=parent">parent</a>;
   715 <a name=652 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#652">652</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> indx;
   716 <a name=653 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#653">653</a>         <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Pop">Pop</a>(&amp;<a href="/seamonkey/ident?i=parent">parent</a>, &amp;indx);
   717 <a name=654 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#654">654</a> 
   718 <a name=655 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#655">655</a>         if (<a href="/seamonkey/ident?i=parent">parent</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>() &gt;= kIndexCapacity) {
   719 <a name=656 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#656">656</a>             <b><i>// Parent is full, too. Recursively split it.</i></b>
   720 <a name=657 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#657">657</a> <b><i></i></b>            <a href="/seamonkey/ident?i=rv">rv</a> = <a href="/seamonkey/ident?i=Split">Split</a>(<a href="/seamonkey/ident?i=path">path</a>, <a href="/seamonkey/ident?i=parent">parent</a>, newnode, indx);
   721 <a name=658 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#658">658</a>             if (<a href="/seamonkey/ident?i=NS_FAILED">NS_FAILED</a>(<a href="/seamonkey/ident?i=rv">rv</a>)) {
   722 <a name=659 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#659">659</a>                 <a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=Destroy">Destroy</a>(newnode);
   723 <a name=660 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#660">660</a>                 return <a href="/seamonkey/ident?i=rv">rv</a>;
   724 <a name=661 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#661">661</a>             }
   725 <a name=662 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#662">662</a>         }
   726 <a name=663 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#663">663</a>         else {
   727 <a name=664 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#664">664</a>             <b><i>// Room in the parent, so just smack it on up there.</i></b>
   728 <a name=665 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#665">665</a> <b><i></i></b>            <a href="/seamonkey/ident?i=parent">parent</a>-&gt;<a href="/seamonkey/ident?i=InsertElementAt">InsertElementAt</a>(newnode, indx);
   729 <a name=666 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#666">666</a>             <a href="/seamonkey/ident?i=parent">parent</a>-&gt;SetSubTreeSize(<a href="/seamonkey/ident?i=parent">parent</a>-&gt;GetSubTreeSize() + 1);
   730 <a name=667 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#667">667</a>         }
   731 <a name=668 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#668">668</a>     }
   732 <a name=669 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#669">669</a> 
   733 <a name=670 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#670">670</a>     <b><i>// Now, since all our operations that might fail have finished, we</i></b>
   734 <a name=671 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#671">671</a> <b><i></i></b>    <b><i>// can go ahead and monkey with the old node.</i></b>
   735 <a name=672 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#672">672</a> <b><i></i></b>
   736 <a name=673 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#673">673</a>     if (aSplitIndex == capacity) {
   737 <a name=674 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#674">674</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> nodeslost = newnode-&gt;GetSubTreeSize() - 1;
   738 <a name=675 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#675">675</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> subtreesize = aOldNode-&gt;GetSubTreeSize() - nodeslost;
   739 <a name=676 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#676">676</a>         aOldNode-&gt;SetSubTreeSize(subtreesize);
   740 <a name=677 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#677">677</a>     }
   741 <a name=678 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#678">678</a>     else {
   742 <a name=679 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#679">679</a>         aOldNode-&gt;SetCount(aSplitIndex);
   743 <a name=680 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#680">680</a>         aOldNode-&gt;<a href="/seamonkey/ident?i=InsertElementAt">InsertElementAt</a>(aElementToInsert, aSplitIndex);
   744 <a name=681 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#681">681</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> subtreesize = aOldNode-&gt;GetSubTreeSize() - <a href="/seamonkey/ident?i=delta">delta</a> + 1;
   745 <a name=682 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#682">682</a>         aOldNode-&gt;SetSubTreeSize(subtreesize);
   746 <a name=683 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#683">683</a>     }
   747 <a name=684 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#684">684</a> 
   748 <a name=685 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#685">685</a>     return <a href="/seamonkey/ident?i=NS_OK">NS_OK</a>;
   749 <a name=686 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#686">686</a> }
   750 <a name=687 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#687">687</a> 
   751 <a name=688 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#688">688</a> 
   752 <a name=689 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#689">689</a> <a href="/seamonkey/ident?i=PRInt32">PRInt32</a>
   753 <a name=690 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#690">690</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Verify">Verify</a>(<a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=aNode">aNode</a>)
   754 <a name=691 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#691">691</a> {
   755 <a name=692 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#692">692</a>     <b><i>// Sanity check the tree by verifying that the subtree sizes all</i></b>
   756 <a name=693 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#693">693</a> <b><i></i></b>    <b><i>// add up correctly.</i></b>
   757 <a name=694 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#694">694</a> <b><i></i></b>    if (<a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   758 <a name=695 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#695">695</a>         <a href="/seamonkey/ident?i=NS_ASSERTION">NS_ASSERTION</a>(<a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>() == <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;GetSubTreeSize(), <i>"corrupted"</i>);
   759 <a name=696 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#696">696</a>         return <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   760 <a name=697 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#697">697</a>     }
   761 <a name=698 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#698">698</a> 
   762 <a name=699 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#699">699</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> childcount = 0;
   763 <a name=700 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#700">700</a>     for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=i">i</a> = 0; <a href="/seamonkey/ident?i=i">i</a> &lt; <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>(); ++<a href="/seamonkey/ident?i=i">i</a>) {
   764 <a name=701 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#701">701</a>         <a href="/seamonkey/ident?i=Node">Node</a>* child = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=i">i</a>));
   765 <a name=702 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#702">702</a>         childcount += <a href="/seamonkey/ident?i=Verify">Verify</a>(child);
   766 <a name=703 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#703">703</a>     }
   767 <a name=704 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#704">704</a> 
   768 <a name=705 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#705">705</a>     <a href="/seamonkey/ident?i=NS_ASSERTION">NS_ASSERTION</a>(childcount == <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;GetSubTreeSize(), <i>"corrupted"</i>);
   769 <a name=706 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#706">706</a>     return childcount;
   770 <a name=707 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#707">707</a> }
   771 <a name=708 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#708">708</a> 
   772 <a name=709 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#709">709</a> 
   773 <a name=710 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#710">710</a> void
   774 <a name=711 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#711">711</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=DestroySubtree">DestroySubtree</a>(<a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=aNode">aNode</a>)
   775 <a name=712 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#712">712</a> {
   776 <a name=713 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#713">713</a>     <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>() - 1;
   777 <a name=714 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#714">714</a>     while (<a href="/seamonkey/ident?i=count">count</a> &gt;= 0) {
   778 <a name=715 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#715">715</a>         if (<a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Index)
   779 <a name=716 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#716">716</a>             <a href="/seamonkey/ident?i=DestroySubtree">DestroySubtree</a>(<a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=count">count</a>)));
   780 <a name=717 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#717">717</a>         
   781 <a name=718 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#718">718</a>         --<a href="/seamonkey/ident?i=count">count</a>;
   782 <a name=719 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#719">719</a>     }
   783 <a name=720 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#720">720</a> 
   784 <a name=721 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#721">721</a>     <a href="/seamonkey/ident?i=Node">Node</a>::<a href="/seamonkey/ident?i=Destroy">Destroy</a>(<a href="/seamonkey/ident?i=aNode">aNode</a>);
   785 <a name=722 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#722">722</a> }
   786 <a name=723 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#723">723</a> 
   787 <a name=724 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#724">724</a> #ifdef <a href="/seamonkey/ident?i=DEBUG">DEBUG</a>
   788 <a name=725 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#725">725</a> void
   789 <a name=726 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#726">726</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Dump">Dump</a>(<a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=aNode">aNode</a>, <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=aIndent">aIndent</a>)
   790 <a name=727 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#727">727</a> {
   791 <a name=728 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#728">728</a>     for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=i">i</a> = 0; <a href="/seamonkey/ident?i=i">i</a> &lt; <a href="/seamonkey/ident?i=aIndent">aIndent</a>; ++<a href="/seamonkey/ident?i=i">i</a>)
   792 <a name=729 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#729">729</a>         <a href="/seamonkey/ident?i=printf">printf</a>(<i>"  "</i>);
   793 <a name=730 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#730">730</a> 
   794 <a name=731 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#731">731</a>     if (<a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   795 <a name=732 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#732">732</a>         <a href="/seamonkey/ident?i=printf">printf</a>(<i>"data(%d/%d)\n"</i>, <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>(), <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;GetSubTreeSize());
   796 <a name=733 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#733">733</a>     }
   797 <a name=734 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#734">734</a>     else {
   798 <a name=735 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#735">735</a>         <a href="/seamonkey/ident?i=printf">printf</a>(<i>"index(%d/%d)\n"</i>, <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>(), <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;GetSubTreeSize());
   799 <a name=736 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#736">736</a>         for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=j">j</a> = 0; <a href="/seamonkey/ident?i=j">j</a> &lt; <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>(); ++<a href="/seamonkey/ident?i=j">j</a>)
   800 <a name=737 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#737">737</a>             <a href="/seamonkey/ident?i=Dump">Dump</a>(<a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=aNode">aNode</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=j">j</a>)), <a href="/seamonkey/ident?i=aIndent">aIndent</a> + 1);
   801 <a name=738 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#738">738</a>     }
   802 <a name=739 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#739">739</a> }
   803 <a name=740 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#740">740</a> #endif
   804 <a name=741 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#741">741</a> 
   805 <a name=742 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#742">742</a> <b><i>//----------------------------------------------------------------------</i></b>
   806 <a name=743 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#743">743</a> <b><i></i></b><b><i>//</i></b>
   807 <a name=744 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#744">744</a> <b><i></i></b><b><i>// nsVoidBTree::ConstIterator and Iterator methods</i></b>
   808 <a name=745 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#745">745</a> <b><i></i></b><b><i>//</i></b>
   809 <a name=746 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#746">746</a> <b><i></i></b>
   810 <a name=747 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#747">747</a> void* <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=kDummyLast">kDummyLast</a>;
   811 <a name=748 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#748">748</a> 
   812 <a name=749 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#749">749</a> void
   813 <a name=750 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#750">750</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::ConstIterator::<a href="/seamonkey/ident?i=Next">Next</a>()
   814 <a name=751 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#751">751</a> {
   815 <a name=752 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#752">752</a>     if (mIsSingleton) {
   816 <a name=753 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#753">753</a>         mIsExhausted = <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   817 <a name=754 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#754">754</a>         return;
   818 <a name=755 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#755">755</a>     }
   819 <a name=756 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#756">756</a> 
   820 <a name=757 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#757">757</a>     <b><i>// Otherwise we're a real b-tree iterator, and we need to pull and</i></b>
   821 <a name=758 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#758">758</a> <b><i></i></b>    <b><i>// pop our path stack appropriately to gyrate into the right</i></b>
   822 <a name=759 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#759">759</a> <b><i></i></b>    <b><i>// position.</i></b>
   823 <a name=760 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#760">760</a> <b><i></i></b>    while (1) {
   824 <a name=761 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#761">761</a>         <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=current">current</a>;
   825 <a name=762 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#762">762</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=index">index</a>;
   826 <a name=763 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#763">763</a>         mPath.<a href="/seamonkey/ident?i=Pop">Pop</a>(&amp;<a href="/seamonkey/ident?i=current">current</a>, &amp;<a href="/seamonkey/ident?i=index">index</a>);
   827 <a name=764 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#764">764</a> 
   828 <a name=765 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#765">765</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   829 <a name=766 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#766">766</a> 
   830 <a name=767 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#767">767</a>         <a href="/seamonkey/ident?i=NS_ASSERTION">NS_ASSERTION</a>(<a href="/seamonkey/ident?i=index">index</a> &lt; <a href="/seamonkey/ident?i=count">count</a>, <i>"ran off the end, pal"</i>);
   831 <a name=768 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#768">768</a> 
   832 <a name=769 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#769">769</a>         if (++<a href="/seamonkey/ident?i=index">index</a> &gt;= <a href="/seamonkey/ident?i=count">count</a>) {
   833 <a name=770 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#770">770</a>             <b><i>// XXXwaterson Oh, this is so ugly. I wish I was smart</i></b>
   834 <a name=771 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#771">771</a> <b><i></i></b>            <b><i>// enough to figure out a prettier way to do it.</i></b>
   835 <a name=772 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#772">772</a> <b><i></i></b>            <b><i>//</i></b>
   836 <a name=773 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#773">773</a> <b><i></i></b>            <b><i>// See if we've just iterated past the last element in the</i></b>
   837 <a name=774 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#774">774</a> <b><i></i></b>            <b><i>// b-tree, and now need to leave ourselves in the magical</i></b>
   838 <a name=775 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#775">775</a> <b><i></i></b>            <b><i>// state that is equal to nsVoidBTree::Last().</i></b>
   839 <a name=776 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#776">776</a> <b><i></i></b>            if (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   840 <a name=777 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#777">777</a>                 <a href="/seamonkey/ident?i=PRBool">PRBool</a> rightmost = <a href="/seamonkey/ident?i=PR_TRUE">PR_TRUE</a>;
   841 <a name=778 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#778">778</a>                 for (<a href="/seamonkey/ident?i=PRInt32">PRInt32</a> slot = mPath.mTop - 1; slot &gt;= 0; --slot) {
   842 <a name=779 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#779">779</a>                     const <a href="/seamonkey/ident?i=Link">Link</a>&amp; <a href="/seamonkey/ident?i=link">link</a> = mPath.mLink[slot];
   843 <a name=780 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#780">780</a>                     if (<a href="/seamonkey/ident?i=link">link</a>.<a href="/seamonkey/ident?i=mIndex">mIndex</a> != <a href="/seamonkey/ident?i=link">link</a>.mNode-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>() - 1) {
   844 <a name=781 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#781">781</a>                         rightmost = <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   845 <a name=782 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#782">782</a>                         break;
   846 <a name=783 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#783">783</a>                     }
   847 <a name=784 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#784">784</a>                 }
   848 <a name=785 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#785">785</a> 
   849 <a name=786 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#786">786</a>                 if (rightmost) {
   850 <a name=787 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#787">787</a>                     <b><i>// It's the last one. Make the path look exactly</i></b>
   851 <a name=788 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#788">788</a> <b><i></i></b>                    <b><i>// like nsVoidBTree::Last().</i></b>
   852 <a name=789 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#789">789</a> <b><i></i></b>                    mPath.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=index">index</a>);
   853 <a name=790 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#790">790</a>                     return;
   854 <a name=791 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#791">791</a>                 }
   855 <a name=792 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#792">792</a>             }
   856 <a name=793 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#793">793</a> 
   857 <a name=794 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#794">794</a>             <b><i>// Otherwise, we just ran off the end of a "middling"</i></b>
   858 <a name=795 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#795">795</a> <b><i></i></b>            <b><i>// node. Loop around, to pop back up the b-tree to its</i></b>
   859 <a name=796 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#796">796</a> <b><i></i></b>            <b><i>// parent.</i></b>
   860 <a name=797 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#797">797</a> <b><i></i></b>            continue;
   861 <a name=798 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#798">798</a>         }
   862 <a name=799 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#799">799</a> 
   863 <a name=800 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#800">800</a>         <b><i>// We're somewhere in the middle. Push the new location onto</i></b>
   864 <a name=801 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#801">801</a> <b><i></i></b>        <b><i>// the stack.</i></b>
   865 <a name=802 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#802">802</a> <b><i></i></b>        mPath.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=index">index</a>);
   866 <a name=803 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#803">803</a> 
   867 <a name=804 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#804">804</a>         <b><i>// If we're in a data node, we're done: break out of the loop</i></b>
   868 <a name=805 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#805">805</a> <b><i></i></b>        <b><i>// here leaving the top of the stack pointing to the next data</i></b>
   869 <a name=806 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#806">806</a> <b><i></i></b>        <b><i>// element in the b-tree.</i></b>
   870 <a name=807 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#807">807</a> <b><i></i></b>        if (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data)
   871 <a name=808 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#808">808</a>             break;
   872 <a name=809 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#809">809</a> 
   873 <a name=810 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#810">810</a>         <b><i>// Otherwise, we're still in an index node. Push next node</i></b>
   874 <a name=811 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#811">811</a> <b><i></i></b>        <b><i>// down onto the stack, starting "one off" to the left, and</i></b>
   875 <a name=812 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#812">812</a> <b><i></i></b>        <b><i>// continue around.</i></b>
   876 <a name=813 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#813">813</a> <b><i></i></b>        mPath.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=NS_STATIC_CAST">NS_STATIC_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=index">index</a>)), -1);
   877 <a name=814 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#814">814</a>     }
   878 <a name=815 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#815">815</a> }
   879 <a name=816 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#816">816</a> 
   880 <a name=817 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#817">817</a> void
   881 <a name=818 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#818">818</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::ConstIterator::<a href="/seamonkey/ident?i=Prev">Prev</a>()
   882 <a name=819 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#819">819</a> {
   883 <a name=820 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#820">820</a>     if (mIsSingleton) {
   884 <a name=821 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#821">821</a>         mIsExhausted = <a href="/seamonkey/ident?i=PR_FALSE">PR_FALSE</a>;
   885 <a name=822 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#822">822</a>         return;
   886 <a name=823 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#823">823</a>     }
   887 <a name=824 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#824">824</a> 
   888 <a name=825 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#825">825</a>     <b><i>// Otherwise we're a real b-tree iterator, and we need to pull and</i></b>
   889 <a name=826 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#826">826</a> <b><i></i></b>    <b><i>// pop our path stack appropriately to gyrate into the right</i></b>
   890 <a name=827 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#827">827</a> <b><i></i></b>    <b><i>// position. This is just like nsVoidBTree::ConstIterator::Next(),</i></b>
   891 <a name=828 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#828">828</a> <b><i></i></b>    <b><i>// but in reverse.</i></b>
   892 <a name=829 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#829">829</a> <b><i></i></b>    while (1) {
   893 <a name=830 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#830">830</a>         <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=current">current</a>;
   894 <a name=831 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#831">831</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=index">index</a>;
   895 <a name=832 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#832">832</a>         mPath.<a href="/seamonkey/ident?i=Pop">Pop</a>(&amp;<a href="/seamonkey/ident?i=current">current</a>, &amp;<a href="/seamonkey/ident?i=index">index</a>);
   896 <a name=833 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#833">833</a> 
   897 <a name=834 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#834">834</a>         <a href="/seamonkey/ident?i=NS_ASSERTION">NS_ASSERTION</a>(<a href="/seamonkey/ident?i=index">index</a> &gt;= 0, <i>"ran off the front, pal"</i>);
   898 <a name=835 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#835">835</a> 
   899 <a name=836 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#836">836</a>         if (--<a href="/seamonkey/ident?i=index">index</a> &lt; 0)
   900 <a name=837 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#837">837</a>             continue;
   901 <a name=838 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#838">838</a> 
   902 <a name=839 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#839">839</a>         mPath.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=index">index</a>);
   903 <a name=840 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#840">840</a> 
   904 <a name=841 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#841">841</a>         if (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data)
   905 <a name=842 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#842">842</a>             break;
   906 <a name=843 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#843">843</a> 
   907 <a name=844 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#844">844</a>         <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=NS_STATIC_CAST">NS_STATIC_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=index">index</a>));
   908 <a name=845 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#845">845</a>         mPath.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>());
   909 <a name=846 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#846">846</a>     }
   910 <a name=847 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#847">847</a> }
   911 <a name=848 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#848">848</a> 
   912 <a name=849 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#849">849</a> const <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Path">Path</a>
   913 <a name=850 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#850">850</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::LeftMostPath() const
   914 <a name=851 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#851">851</a> {
   915 <a name=852 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#852">852</a>     <a href="/seamonkey/ident?i=Path">Path</a> <a href="/seamonkey/ident?i=path">path</a>;
   916 <a name=853 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#853">853</a>     <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask);
   917 <a name=854 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#854">854</a> 
   918 <a name=855 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#855">855</a>     while (1) {
   919 <a name=856 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#856">856</a>         <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, 0);
   920 <a name=857 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#857">857</a> 
   921 <a name=858 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#858">858</a>         if (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data)
   922 <a name=859 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#859">859</a>             break;
   923 <a name=860 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#860">860</a> 
   924 <a name=861 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#861">861</a>         <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=NS_STATIC_CAST">NS_STATIC_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(0));
   925 <a name=862 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#862">862</a>     }
   926 <a name=863 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#863">863</a> 
   927 <a name=864 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#864">864</a>     return <a href="/seamonkey/ident?i=path">path</a>;
   928 <a name=865 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#865">865</a> }
   929 <a name=866 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#866">866</a> 
   930 <a name=867 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#867">867</a> 
   931 <a name=868 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#868">868</a> const <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::<a href="/seamonkey/ident?i=Path">Path</a>
   932 <a name=869 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#869">869</a> <a href="/seamonkey/ident?i=nsVoidBTree">nsVoidBTree</a>::RightMostPath() const
   933 <a name=870 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#870">870</a> {
   934 <a name=871 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#871">871</a>     <a href="/seamonkey/ident?i=Path">Path</a> <a href="/seamonkey/ident?i=path">path</a>;
   935 <a name=872 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#872">872</a>     <a href="/seamonkey/ident?i=Node">Node</a>* <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=NS_REINTERPRET_CAST">NS_REINTERPRET_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, mRoot &amp; kRoot_PointerMask);
   936 <a name=873 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#873">873</a> 
   937 <a name=874 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#874">874</a>     while (1) {
   938 <a name=875 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#875">875</a>         <a href="/seamonkey/ident?i=PRInt32">PRInt32</a> <a href="/seamonkey/ident?i=count">count</a> = <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetCount">GetCount</a>();
   939 <a name=876 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#876">876</a> 
   940 <a name=877 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#877">877</a>         if (<a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetType">GetType</a>() == <a href="/seamonkey/ident?i=Node">Node</a>::eType_Data) {
   941 <a name=878 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#878">878</a>             <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=count">count</a>);
   942 <a name=879 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#879">879</a>             break;
   943 <a name=880 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#880">880</a>         }
   944 <a name=881 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#881">881</a> 
   945 <a name=882 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#882">882</a>         <a href="/seamonkey/ident?i=path">path</a>.<a href="/seamonkey/ident?i=Push">Push</a>(<a href="/seamonkey/ident?i=current">current</a>, <a href="/seamonkey/ident?i=count">count</a> - 1);
   946 <a name=883 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#883">883</a>         <a href="/seamonkey/ident?i=current">current</a> = <a href="/seamonkey/ident?i=NS_STATIC_CAST">NS_STATIC_CAST</a>(<a href="/seamonkey/ident?i=Node">Node</a>*, <a href="/seamonkey/ident?i=current">current</a>-&gt;<a href="/seamonkey/ident?i=GetElementAt">GetElementAt</a>(<a href="/seamonkey/ident?i=count">count</a> - 1));
   947 <a name=884 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#884">884</a>     }
   948 <a name=885 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#885">885</a> 
   949 <a name=886 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#886">886</a>     return <a href="/seamonkey/ident?i=path">path</a>;
   950 <a name=887 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#887">887</a> }
   951 <a name=888 href="/seamonkey/source/xpcom/ds/nsVoidBTree.cpp#888">888</a> </pre><P>
   952    This page was automatically generated by 
   953    <A HREF="/mozilla/source/webtools/lxr/"> LXR</A>.
   954 </html>

mercurial