--- /dev/null
+Table cdbtoplevel TopLevel_Command
+ cdb
+ subcmd enum(Cdb/_SubCommand, "cdb subcommand")
+ ... obj
+ cdb-wr
+ subcmd enum(CdbWr/_SubCommand, "cdb-wr subcommand")
+ ... obj
+
+Table cdb Cdb_SubCommand
+ open
+ path string
+ => iddata(&cdbtcl_databases)
+ lookup
+ db iddata(&cdbtcl_databases)
+ key obj
+ => obj
+ lookup-hb
+ db iddata(&cdbtcl_databases)
+ key hb
+ => hb
+ close
+ db iddata(&cdbtcl_databases)
+
+Table cdbwr CdbWr_SubCommand
+ open
+ pathb string
+ on_info obj
+ => iddata(&cdbtcl_rwdatabases)
+ # on_info <event> <xinfo>...:
+ # on_info
+ #
+ # files:
+ # <pathdb>.main
+ # <pathb>.cdb
+ # <pathdb>.log
+ # <pathb>.tmp (might be new .main or new .cdb)
+ # invariants:
+ fixme finish this
+ also mention file format
+ and whether cdb text format files are terminated
+ # .main always exists
+ # if .tmp exists it is irrelevant
+ # if .cdb exists it contains exactly the same
+ # as .main
+ # if .log exists, it _must_ be read and contents
+ # override values from .main or .cdb
+ create-empty
+ pathb string
+ lookup
+ db iddata(&cdbtcl_rwdatabases)
+ key obj
+ => obj
+ lookup-hb
+ db iddata(&cdbtcl_rwdatabases)
+ key hb
+ => hb
+ update
+ db iddata(&cdbtcl_rwdatabases)
+ key obj
+ value obj
+ update-hb
+ db iddata(&cdbtcl_rwdatabases)
+ key hb
+ value hb
+ update-quick
+ db iddata(&cdbtcl_rwdatabases)
+ key obj
+ value obj
+ update-quick-hb
+ db iddata(&cdbtcl_rwdatabases)
+ key hb
+ value hb
+
+ open-autolog
+
+
+ lookup
+ rrtype enum(CdbTclRRTypeInfo/, "rrtype")
+ domain string
+ ... obj
+ => obj
+ synch
+ rrtype enum(CdbTclRRTypeInfo/, "rrtype")
+ domain string
+ ... obj
+ => obj
+ asynch
+ on_yes obj
+ on_no obj
+ on_fail obj
+ xargs obj
+ rrtype enum(CdbTclRRTypeInfo/, "rrtype")
+ domain string
+ ... obj
+ => iddata(&cdbtcl_queries)
+ asynch-cancel
+ query iddata(&cdbtcl_queries)
+ new-resolver
+ ... obj
+ => iddata(&cdbtcl_resolvers)
+ set-default-resolver
+ res iddata(&cdbtcl_resolvers)
+ destroy-resolver
+ res iddata(&cdbtcl_resolvers)
+
+
+
+Type cdbresults: cdb_answer *@
+Init cdbresults @=0;
+Fini cdbresults free(@);
+
+Table cdbtoplevel TopLevel_Command
+ cdb
+ subcmd enum(Cdb/_SubCommand, "cdb subcommand")
+ ... obj
+