Commits

Anonymous committed 673eb8c

docs

Comments (0)

Files changed (4)

 	for x in *.go; do gofmt $${x} > $${x}.fmt && mv $${x}.fmt $${x}; done
 
 docs:
+	gomake clean
 	godoc ${TARG} > README.txt
 	godoc -html ${TARG} > README.html
 	<!-- PackageName is printed as title by the top-level template -->
 		<p><code>import "bitbucket.org/ww/cabinet"</code></p>
 	<p>
-Created by cgo - DO NOT EDIT
-line cabinet.go:1
+Kyoto Cabinet bindings for Go.
+</p>
+<p>
+Copyleft by William Waites in 2011
+</p>
+<p>
+This program is free software: you can redistribute it and/or modify it under the terms of
+the GNU General Public License as published by the Free Software Foundation, either version
+3 of the License, or any later version.
+</p>
+<p>
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+See the GNU General Public License for more details.
+</p>
+<p>
+You should have received a copy of the GNU General Public License along with this program.
+If not, see &lt;<a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>&gt;.
+</p>
+<p>
+These bindings have been tested with Kyoto Cabinet version 1.2.46.
+They are known not to work with 1.2.7 because of the absent
+kcdbreplace() function call. Once Kyoto Cabinet is installed, building
+the bindings should be a simple matter of running:
+</p>
+<pre>goinstall -u -v bitbucket.org/ww/cabinet
+</pre>
+<p>
+Simple usage will be along the lines of,
+</p>
+<pre>import (
+    &#34;bitbucket.org/ww/cabinet
+)
+
+...
+
+kc := cabinet.New()
+err = kc.Open(&#34;some_db.kch&#34;)
+err = kc.Set([]byte(&#34;hello&#34;), []byte(&#34;world&#34;))
+world, err = kc.Get([]byte(&#34;hello&#34;))
+err = kc.Close()
+kc.Del()
+</pre>
+<p>
+Obviously checking the relevant errors...
+</p>
+<p>
+The API follows the Kyoto Cabinet C API closely, for some examples see
+<a href="http://fallabs.com/kyotocabinet/api/">http://fallabs.com/kyotocabinet/api/</a>
+</p>
+<p>
+Most input and output variables are []byte and not string. This is because
+Kyoto Cabinet is not particularly concerned with strings and it is possible
+to use any byte array as either key or value. An example from the test
+suite to read an integer out of the database:
+</p>
+<pre>v, err = kc.Get([]byte(&#34;numbers&#34;))
+binary.Read(bytes.NewBuffer(v), binary.BigEndian, &amp;n)
+</pre>
+<p>
+Some functions have been added for convenience using Go. The Keys()
+Values() and Items() on the cursor object return a channel over which
+their results will be sent, for example. This probably obviates the need
+for implementing the visitor-callback pattern when using Kyoto Cabinet
+with Go.
+</p>
+<p>
+If you use this module please feel free to contact me, ww@styx.org
+with any questions, comments or bug reports.
 </p>
 
 			<p>
 			<h4>Package files</h4>
 			<span style="font-size:90%">
-				<a href="/src/pkg/bitbucket.org/ww/cabinet/_cgo_gotypes.go">_cgo_gotypes.go</a>
-				<a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.cgo1.go">cabinet.cgo1.go</a>
 				<a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go">cabinet.go</a>
 			</span>
 			</p>
 			
 			<pre>const KCMADD int = C.KCMADD</pre>
 			
-			<pre>const KCMADD int = _Cconst_KCMADD</pre>
-			
 			<pre>const KCMAPPEND int = C.KCMAPPEND</pre>
 			
-			<pre>const KCMAPPEND int = _Cconst_KCMAPPEND</pre>
-			
 			<pre>const KCMREPLACE int = C.KCMREPLACE</pre>
 			
-			<pre>const KCMREPLACE int = _Cconst_KCMREPLACE</pre>
-			
 			<pre>const KCMSET int = C.KCMSET</pre>
-			
-			<pre>const KCMSET int = _Cconst_KCMSET</pre>
-			<h2 id="Item">type <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=10198:10244#L460">Item</a></h2>
+			<h2 id="Item">type <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=11727:11775#L525">Item</a></h2>
 			
 			<p><pre>type Item struct {
     Key   []byte
     Value []byte
 }</pre></p>
-			<h2 id="KCCUR">type <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6396:6439#L266">KCCUR</a></h2>
+			<h2 id="KCCUR">type <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8148:8183#L331">KCCUR</a></h2>
 			
 			<p><pre>type KCCUR struct {
     <span class ="comment">// contains unexported fields</span>
 }</pre></p>
-				<h3 id="KCCUR.Db">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6760:6793#L289">Db</a></h3>
+				<h3 id="KCCUR.Db">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8484:8517#L354">Db</a></h3>
 				<p><code>func (kcc *KCCUR) Db() (kc *KCDB)</code></p>
 				
-				<h3 id="KCCUR.Del">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6705:6728#L285">Del</a></h3>
+				<h3 id="KCCUR.Del">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8434:8457#L350">Del</a></h3>
 				<p><code>func (kcc *KCCUR) Del()</code></p>
 				
-				<h3 id="KCCUR.Get">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=9054:9117#L398">Get</a></h3>
+				<h3 id="KCCUR.Get">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=10624:10687#L463">Get</a></h3>
 				<p><code>func (kcc *KCCUR) Get(advance bool) (k, v []byte, err os.Error)</code></p>
 				
-				<h3 id="KCCUR.GetKey">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8210:8273#L360">GetKey</a></h3>
+				<h3 id="KCCUR.GetKey">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=9842:9905#L425">GetKey</a></h3>
 				<p><code>func (kcc *KCCUR) GetKey(advance bool) (k []byte, err os.Error)</code></p>
 				
-				<h3 id="KCCUR.GetValue">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8630:8695#L379">GetValue</a></h3>
+				<h3 id="KCCUR.GetValue">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=10231:10296#L444">GetValue</a></h3>
 				<p><code>func (kcc *KCCUR) GetValue(advance bool) (v []byte, err os.Error)</code></p>
 				
-				<h3 id="KCCUR.Jump">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6856:6895#L295">Jump</a></h3>
+				<h3 id="KCCUR.Jump">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8575:8614#L360">Jump</a></h3>
 				<p><code>func (kcc *KCCUR) Jump() (err os.Error)</code></p>
 				
-				<h3 id="KCCUR.JumpBack">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=7181:7224#L310">JumpBack</a></h3>
+				<h3 id="KCCUR.JumpBack">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8877:8920#L375">JumpBack</a></h3>
 				<p><code>func (kcc *KCCUR) JumpBack() (err os.Error)</code></p>
 				
-				<h3 id="KCCUR.JumpBackKey">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=7302:7358#L317">JumpBackKey</a></h3>
+				<h3 id="KCCUR.JumpBackKey">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8993:9049#L382">JumpBackKey</a></h3>
 				<p><code>func (kcc *KCCUR) JumpBackKey(key []byte) (err os.Error)</code></p>
 				
-				<h3 id="KCCUR.JumpKey">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6969:7021#L302">JumpKey</a></h3>
+				<h3 id="KCCUR.JumpKey">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8683:8735#L367">JumpKey</a></h3>
 				<p><code>func (kcc *KCCUR) JumpKey(key []byte) (err os.Error)</code></p>
 				
-				<h3 id="KCCUR.Remove">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=7756:7797#L339">Remove</a></h3>
+				<h3 id="KCCUR.Remove">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=9419:9460#L404">Remove</a></h3>
 				<p><code>func (kcc *KCCUR) Remove() (err os.Error)</code></p>
 				
-				<h3 id="KCCUR.SetValue">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=7873:7942#L346">SetValue</a></h3>
+				<h3 id="KCCUR.SetValue">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=9531:9600#L411">SetValue</a></h3>
 				<p><code>func (kcc *KCCUR) SetValue(value []byte, advance bool) (err os.Error)</code></p>
 				
-				<h3 id="KCCUR.Step">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=7522:7561#L325">Step</a></h3>
+				<h3 id="KCCUR.Step">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=9195:9234#L390">Step</a></h3>
 				<p><code>func (kcc *KCCUR) Step() (err os.Error)</code></p>
 				
-				<h3 id="KCCUR.StepBack">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=7635:7678#L332">StepBack</a></h3>
+				<h3 id="KCCUR.StepBack">func (*KCCUR) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=9303:9346#L397">StepBack</a></h3>
 				<p><code>func (kcc *KCCUR) StepBack() (err os.Error)</code></p>
 				
-			<h2 id="KCDB">type <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=106:146#L1">KCDB</a></h2>
+			<h2 id="KCDB">type <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2394:2426#L65">KCDB</a></h2>
 			
 			<p><pre>type KCDB struct {
     <span class ="comment">// contains unexported fields</span>
 }</pre></p>
-				<h3 id="KCDB.New">func <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=148:164#L4">New</a></h3>
+				<h3 id="KCDB.New">func <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2428:2444#L69">New</a></h3>
 				<p><code>func New() *KCDB</code></p>
 				
-				<h3 id="KCDB.Add">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=3894:3947#L185">Add</a></h3>
+				<h3 id="KCDB.Add">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=5891:5944#L250">Add</a></h3>
 				<p><code>func (kc *KCDB) Add(key, value []byte) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Append">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=4494:4550#L203">Append</a></h3>
+				<h3 id="KCDB.Append">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6429:6485#L268">Append</a></h3>
 				<p><code>func (kc *KCDB) Append(key, value []byte) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.BeginTran">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2954:3005#L137">BeginTran</a></h3>
+				<h3 id="KCDB.BeginTran">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=5021:5072#L202">BeginTran</a></h3>
 				<p><code>func (kc *KCDB) BeginTran(hard bool) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.BeginTranTry">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=3164:3218#L150">BeginTranTry</a></h3>
+				<h3 id="KCDB.BeginTranTry">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=5218:5272#L215">BeginTranTry</a></h3>
 				<p><code>func (kc *KCDB) BeginTranTry(hard bool) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Cas">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=5000:5058#L220">Cas</a></h3>
+				<h3 id="KCDB.Cas">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6886:6944#L285">Cas</a></h3>
 				<p><code>func (kc *KCDB) Cas(key, oval, nval []byte) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Clear">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=1524:1562#L74">Clear</a></h3>
+				<h3 id="KCDB.Clear">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=3707:3745#L139">Clear</a></h3>
 				<p><code>func (kc *KCDB) Clear() (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Close">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=584:622#L23">Close</a></h3>
+				<h3 id="KCDB.Close">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2817:2855#L88">Close</a></h3>
 				<p><code>func (kc *KCDB) Close() (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Copy">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=1843:1895#L94">Copy</a></h3>
+				<h3 id="KCDB.Copy">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=4008:4060#L159">Copy</a></h3>
 				<p><code>func (kc *KCDB) Copy(filename string) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Count">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=1177:1229#L54">Count</a></h3>
+				<h3 id="KCDB.Count">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=3370:3422#L119">Count</a></h3>
 				<p><code>func (kc *KCDB) Count() (count uint64, err os.Error)</code></p>
 				
-				<h3 id="KCDB.Cursor">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6441:6478#L270">Cursor</a></h3>
+				<h3 id="KCDB.Cursor">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=8185:8222#L335">Cursor</a></h3>
 				<p><code>func (kc *KCDB) Cursor() (kcc *KCCUR)</code></p>
 				
-				<h3 id="KCDB.Del">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=693:714#L30">Del</a></h3>
+				<h3 id="KCDB.Del">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2921:2942#L95">Del</a></h3>
 				<p><code>func (kc *KCDB) Del()</code></p>
 				
-				<h3 id="KCDB.Dump">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2515:2567#L120">Dump</a></h3>
+				<h3 id="KCDB.Dump">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=4612:4664#L185">Dump</a></h3>
 				<p><code>func (kc *KCDB) Dump(filename string) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.EndTran">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=3380:3431#L163">EndTran</a></h3>
+				<h3 id="KCDB.EndTran">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=5421:5472#L228">EndTran</a></h3>
 				<p><code>func (kc *KCDB) EndTran(commit bool) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Get">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=5981:6041#L252">Get</a></h3>
+				<h3 id="KCDB.Get">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=7769:7829#L317">Get</a></h3>
 				<p><code>func (kc *KCDB) Get(key []byte) (value []byte, err os.Error)</code></p>
 				
-				<h3 id="KCDB.IncrDouble">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=5730:5799#L244">IncrDouble</a></h3>
+				<h3 id="KCDB.IncrDouble">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=7541:7610#L309">IncrDouble</a></h3>
 				<p><code>func (kc *KCDB) IncrDouble(key []byte, amount float64) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.IncrInt">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=5483:5547#L236">IncrInt</a></h3>
+				<h3 id="KCDB.IncrInt">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=7320:7384#L301">IncrInt</a></h3>
 				<p><code>func (kc *KCDB) IncrInt(key []byte, amount int64) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Items">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=10246:10286#L465">Items</a></h3>
+				<h3 id="KCDB.Items">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=11777:11817#L530">Items</a></h3>
 				<p><code>func (kc *KCDB) Items() (out chan *Item)</code></p>
 				
-				<h3 id="KCDB.Keys">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=9600:9640#L420">Keys</a></h3>
+				<h3 id="KCDB.Keys">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=11129:11169#L485">Keys</a></h3>
 				<p><code>func (kc *KCDB) Keys() (out chan []byte)</code></p>
 				
-				<h3 id="KCDB.Load">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2736:2788#L128">Load</a></h3>
+				<h3 id="KCDB.Load">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=4818:4870#L193">Load</a></h3>
 				<p><code>func (kc *KCDB) Load(filename string) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.MatchPrefix">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=10548:10635#L485">MatchPrefix</a></h3>
+				<h3 id="KCDB.MatchPrefix">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=12079:12166#L550">MatchPrefix</a></h3>
 				<p><code>func (kc *KCDB) MatchPrefix(prefix []byte, max int) (matches chan []byte, err os.Error)</code></p>
 				
-				<h3 id="KCDB.MatchRegex">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=11112:11197#L505">MatchRegex</a></h3>
+				<h3 id="KCDB.MatchRegex">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=12610:12695#L570">MatchRegex</a></h3>
 				<p><code>func (kc *KCDB) MatchRegex(regex string, max int) (matches chan []byte, err os.Error)</code></p>
 				
-				<h3 id="KCDB.Merge">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2212:2272#L108">Merge</a></h3>
+				<h3 id="KCDB.Merge">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=4338:4398#L173">Merge</a></h3>
 				<p><code>func (kc *KCDB) Merge(sdbs []*KCDB, mode int) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Open">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=344:396#L14">Open</a></h3>
+				<h3 id="KCDB.Open">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2604:2656#L79">Open</a></h3>
 				<p><code>func (kc *KCDB) Open(filename string) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Path">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=743:793#L34">Path</a></h3>
+				<h3 id="KCDB.Path">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=2966:3016#L99">Path</a></h3>
 				<p><code>func (kc *KCDB) Path() (path string, err os.Error)</code></p>
 				
-				<h3 id="KCDB.Remove">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=4796:4845#L212">Remove</a></h3>
+				<h3 id="KCDB.Remove">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6700:6749#L277">Remove</a></h3>
 				<p><code>func (kc *KCDB) Remove(key []byte) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Replace">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=4190:4247#L194">Replace</a></h3>
+				<h3 id="KCDB.Replace">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=6156:6213#L259">Replace</a></h3>
 				<p><code>func (kc *KCDB) Replace(key, value []byte) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Set">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=3598:3651#L176">Set</a></h3>
+				<h3 id="KCDB.Set">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=5626:5679#L241">Set</a></h3>
 				<p><code>func (kc *KCDB) Set(key, value []byte) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Size">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=1354:1404#L64">Size</a></h3>
+				<h3 id="KCDB.Size">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=3542:3592#L129">Size</a></h3>
 				<p><code>func (kc *KCDB) Size() (size uint64, err os.Error)</code></p>
 				
-				<h3 id="KCDB.Status">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=954:1008#L44">Status</a></h3>
+				<h3 id="KCDB.Status">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=3162:3216#L109">Status</a></h3>
 				<p><code>func (kc *KCDB) Status() (status string, err os.Error)</code></p>
 				
-				<h3 id="KCDB.Sync">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=1633:1679#L81">Sync</a></h3>
+				<h3 id="KCDB.Sync">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=3811:3857#L146">Sync</a></h3>
 				<p><code>func (kc *KCDB) Sync(hard bool) (err os.Error)</code></p>
 				
-				<h3 id="KCDB.Values">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=9896:9938#L440">Values</a></h3>
+				<h3 id="KCDB.Values">func (*KCDB) <a href="/src/pkg/bitbucket.org/ww/cabinet/cabinet.go?s=11425:11467#L505">Values</a></h3>
 				<p><code>func (kc *KCDB) Values() (out chan []byte)</code></p>
 				
-	<h2>Other packages</h2>
-	<p>
-	<a href="?p=main">main</a><br />
-	</p>
 	<h2 id="Subdirectories">Subdirectories</h2>
 	<p>
 	<table class="layout">
 package cabinet
 import "bitbucket.org/ww/cabinet"
 
-Created by cgo - DO NOT EDIT
-line cabinet.go:1
+ Kyoto Cabinet bindings for Go.
+
+ Copyleft by William Waites in 2011
+
+ This program is free software: you can redistribute it and/or modify it under the terms of
+ the GNU General Public License as published by the Free Software Foundation, either version
+ 3 of the License, or any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with this program.
+ If not, see <http://www.gnu.org/licenses/>.
+
+ These bindings have been tested with Kyoto Cabinet version 1.2.46.
+ They are known not to work with 1.2.7 because of the absent
+ kcdbreplace() function call. Once Kyoto Cabinet is installed, building
+ the bindings should be a simple matter of running:
+
+     goinstall -u -v bitbucket.org/ww/cabinet
+
+ Simple usage will be along the lines of,
+
+     import (
+         "bitbucket.org/ww/cabinet
+     )
+
+     ...
+
+     kc := cabinet.New()
+     err = kc.Open("some_db.kch")
+     err = kc.Set([]byte("hello"), []byte("world"))
+     world, err = kc.Get([]byte("hello"))
+     err = kc.Close()
+     kc.Del()
+
+ Obviously checking the relevant errors...
+
+ The API follows the Kyoto Cabinet C API closely, for some examples see
+ http://fallabs.com/kyotocabinet/api/
+
+ Most input and output variables are []byte and not string. This is because
+ Kyoto Cabinet is not particularly concerned with strings and it is possible
+ to use any byte array as either key or value. An example from the test
+ suite to read an integer out of the database:
+
+     v, err = kc.Get([]byte("numbers"))
+     binary.Read(bytes.NewBuffer(v), binary.BigEndian, &n)
+
+ Some functions have been added for convenience using Go. The Keys()
+ Values() and Items() on the cursor object return a channel over which
+ their results will be sent, for example. This probably obviates the need
+ for implementing the visitor-callback pattern when using Kyoto Cabinet
+ with Go.
+
+ If you use this module please feel free to contact me, ww@styx.org
+ with any questions, comments or bug reports.
 
 
 CONSTANTS
 
 const KCMADD int = C.KCMADD
 
-const KCMADD int = _Cconst_KCMADD
-
 const KCMAPPEND int = C.KCMAPPEND
 
-const KCMAPPEND int = _Cconst_KCMAPPEND
-
 const KCMREPLACE int = C.KCMREPLACE
 
-const KCMREPLACE int = _Cconst_KCMREPLACE
-
 const KCMSET int = C.KCMSET
 
-const KCMSET int = _Cconst_KCMSET
-
 
 TYPES
 
 func (kc *KCDB) Values() (out chan []byte)
 
 
-OTHER PACKAGES
-
-main
-
 SUBDIRECTORIES
 
 	.hg
  You should have received a copy of the GNU General Public License along with this program.
  If not, see <http://www.gnu.org/licenses/>.
 
+ These bindings have been tested with Kyoto Cabinet version 1.2.46.
+ They are known not to work with 1.2.7 because of the absent
+ kcdbreplace() function call. Once Kyoto Cabinet is installed, building
+ the bindings should be a simple matter of running:
+
+     goinstall -u -v bitbucket.org/ww/cabinet
+
  Simple usage will be along the lines of,
 
+     import (
+         "bitbucket.org/ww/cabinet
+     )
+
+     ...
+
      kc := cabinet.New()
      err = kc.Open("some_db.kch")
      err = kc.Set([]byte("hello"), []byte("world"))
 
  Obviously checking the relevant errors...
 
+ The API follows the Kyoto Cabinet C API closely, for some examples see
+ http://fallabs.com/kyotocabinet/api/
+
+ Most input and output variables are []byte and not string. This is because
+ Kyoto Cabinet is not particularly concerned with strings and it is possible
+ to use any byte array as either key or value. An example from the test 
+ suite to read an integer out of the database:
+
+     v, err = kc.Get([]byte("numbers"))
+     binary.Read(bytes.NewBuffer(v), binary.BigEndian, &n)
+
+ Some functions have been added for convenience using Go. The Keys()
+ Values() and Items() on the cursor object return a channel over which
+ their results will be sent, for example. This probably obviates the need
+ for implementing the visitor-callback pattern when using Kyoto Cabinet
+ with Go.
+
+ If you use this module please feel free to contact me, ww@styx.org
+ with any questions, comments or bug reports.
 */
-
 package cabinet
 
 // #cgo CFLAGS: -I/usr/local/include