bionic (3) tcfdb.3.gz

Provided by: libtokyocabinet-dev_1.4.48-11_amd64 bug

NAME

       tcfdb - the fixed-length database API

DESCRIPTION

       Fixed-length  database  is  a  file  containing an array of fixed-length elements and is handled with the
       fixed-length database API.

       To use the fixed-length database API, include `tcutil.h', `tcfdb.h', and related standard  header  files.
       Usually, write the following description near the front of a source file.

              #include <tcutil.h>
              #include <tcfdb.h>
              #include <stdlib.h>
              #include <stdbool.h>
              #include <stdint.h>

       Objects  whose  type  is  pointer  to  `TCFDB' are used to handle fixed-length databases.  A fixed-length
       database object is created with the function `tcfdbnew' and is deleted with the function `tcfdbdel'.   To
       avoid memory leak, it is important to delete every object when it is no longer in use.

       Before  operations  to store or retrieve records, it is necessary to open a database file and connect the
       fixed-length database object to it.  The function `tcfdbopen' is used to open a  database  file  and  the
       function  `tcfdbclose'  is  used  to close the database file.  To avoid data missing or corruption, it is
       important to close every database file when it is no  longer  in  use.   It  is  forbidden  for  multible
       database objects in a process to open the same database at the same time.

API

       The function `tcfdberrmsg' is used in order to get the message string corresponding to an error code.

              const char *tcfdberrmsg(int ecode);
                     `ecode' specifies the error code.
                     The return value is the message string of the error code.

       The function `tcfdbnew' is used in order to create a fixed-length database object.

              TCFDB *tcfdbnew(void);
                     The return value is the new fixed-length database object.

       The function `tcfdbdel' is used in order to delete a fixed-length database object.

              void tcfdbdel(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object.
                     If  the  database is not closed, it is closed implicitly.  Note that the deleted object and
                     its derivatives can not be used anymore.

       The function `tcfdbecode' is used in order to get the last happened error code of a fixed-length database
       object.

              int tcfdbecode(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object.
                     The return value is the last happened error code.
                     The  following error codes are defined: `TCESUCCESS' for success, `TCETHREAD' for threading
                     error, `TCEINVALID' for invalid operation, `TCENOFILE' for file not found, `TCENOPERM'  for
                     no  permission,  `TCEMETA'  for  invalid  meta  data, `TCERHEAD' for invalid record header,
                     `TCEOPEN' for open error, `TCECLOSE' for close error, `TCETRUNC' for trunc error, `TCESYNC'
                     for  sync  error,  `TCESTAT'  for  stat error, `TCESEEK' for seek error, `TCEREAD' for read
                     error, `TCEWRITE' for write error, `TCEMMAP' for mmap  error,  `TCELOCK'  for  lock  error,
                     `TCEUNLINK'  for  unlink  error,  `TCERENAME' for rename error, `TCEMKDIR' for mkdir error,
                     `TCERMDIR' for rmdir error, `TCEKEEP' for existing record, `TCENOREC' for no record  found,
                     and `TCEMISC' for miscellaneous error.

       The  function `tcfdbsetmutex' is used in order to set mutual exclusion control of a fixed-length database
       object for threading.

              bool tcfdbsetmutex(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object which is not opened.
                     If successful, the return value is true, else, it is false.
                     Note that the mutual exclusion control is needed if the object is shared by plural  threads
                     and this function should be called before the database is opened.

       The function `tcfdbtune' is used in order to set the tuning parameters of a fixed-length database object.

              bool tcfdbtune(TCFDB *fdb, int32_t width, int64_t limsiz);
                     `fdb' specifies the fixed-length database object which is not opened.
                     `width'  specifies  the  width  of the value of each record.  If it is not more than 0, the
                     default value is specified.  The default value is 255.
                     `limsiz' specifies the limit size of the database file.  If it is  not  more  than  0,  the
                     default value is specified.  The default value is 268435456.
                     If successful, the return value is true, else, it is false.
                     Note that the tuning parameters should be set before the database is opened.

       The  function  `tcfdbopen'  is  used in order to open a database file and connect a fixed-length database
       object.

              bool tcfdbopen(TCFDB *fdb, const char *path, int omode);
                     `fdb' specifies the fixed-length database object which is not opened.
                     `path' specifies the path of the database file.
                     `omode' specifies the connection mode: `FDBOWRITER' as a writer, `FDBOREADER' as a  reader.
                     If  the  mode is `FDBOWRITER', the following may be added by bitwise-or: `FDBOCREAT', which
                     means it creates a new database if not exist, `FDBOTRUNC', which means  it  creates  a  new
                     database  regardless if one exists, `FDBOTSYNC', which means every transaction synchronizes
                     updated contents with the device.  Both of `FDBOREADER' and `FDBOWRITER' can be added to by
                     bitwise-or:  `FDBONOLCK',  which  means it opens the database file without file locking, or
                     `FDBOLCKNB', which means locking is performed without blocking.
                     If successful, the return value is true, else, it is false.

       The function `tcfdbclose' is used in order to close a fixed-length database object.

              bool tcfdbclose(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object.
                     If successful, the return value is true, else, it is false.
                     Update of a database is assured to be written when the database is  closed.   If  a  writer
                     opens a database but does not close it appropriately, the database will be broken.

       The function `tcfdbput' is used in order to store a record into a fixed-length database object.

              bool tcfdbput(TCFDB *fdb, int64_t id, const void *vbuf, int vsiz);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `id'  specifies the ID number.  It should be more than 0.  If it is `FDBIDMIN', the minimum
                     ID number of existing records is specified.  If it is `FDBIDPREV', the number less  by  one
                     than  the  minimum  ID  number  of existing records is specified.  If it is `FDBIDMAX', the
                     maximum ID number of existing records is specified.   If  it  is  `FDBIDNEXT',  the  number
                     greater by one than the maximum ID number of existing records is specified.
                     `vbuf' specifies the pointer to the region of the value.
                     `vsiz'  specifies the size of the region of the value.  If the size of the value is greater
                     than the width tuning parameter of the database, the size is cut down to the width.
                     If successful, the return value is true, else, it is false.
                     If a record with the same key exists in the database, it is overwritten.

       The function `tcfdbput2' is used in order to store a record  with  a  decimal  key  into  a  fixed-length
       database object.

              bool tcfdbput2(TCFDB *fdb, const void *kbuf, int ksiz, const void *vbuf, int vsiz);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `kbuf'  specifies  the pointer to the region of the decimal key.  It should be more than 0.
                     If it is "min", the minimum ID number of existing records is specified.  If it  is  "prev",
                     the  number less by one than the minimum ID number of existing records is specified.  If it
                     is "max", the maximum ID number of existing records is specified.  If  it  is  "next",  the
                     number greater by one than the maximum ID number of existing records is specified.
                     `ksiz' specifies the size of the region of the key.
                     `vbuf' specifies the pointer to the region of the value.
                     `vsiz'  specifies the size of the region of the value.  If the size of the value is greater
                     than the width tuning parameter of the database, the size is cut down to the width.
                     If successful, the return value is true, else, it is false.
                     If a record with the same key exists in the database, it is overwritten.

       The function `tcfdbput3' is used in order to store a string record with a decimal key into a fixed-length
       database object.

              bool tcfdbput3(TCFDB *fdb, const char *kstr, const void *vstr);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `kstr' specifies the string of the decimal key.  It should be more than 0.  If it is "min",
                     the minimum ID number of existing records is specified.  If it is "prev", the  number  less
                     by  one  than  the minimum ID number of existing records is specified.  If it is "max", the
                     maximum ID number of existing records is specified.  If it is "next", the number greater by
                     one than the maximum ID number of existing records is specified.
                     `vstr' specifies the string of the value.
                     If successful, the return value is true, else, it is false.
                     If a record with the same key exists in the database, it is overwritten.

       The function `tcfdbputkeep' is used in order to store a new record into a fixed-length database object.

              bool tcfdbputkeep(TCFDB *fdb, int64_t id, const void *vbuf, int vsiz);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `id'  specifies the ID number.  It should be more than 0.  If it is `FDBIDMIN', the minimum
                     ID number of existing records is specified.  If it is `FDBIDPREV', the number less  by  one
                     than  the  minimum  ID  number  of existing records is specified.  If it is `FDBIDMAX', the
                     maximum ID number of existing records is specified.   If  it  is  `FDBIDNEXT',  the  number
                     greater by one than the maximum ID number of existing records is specified.
                     `vbuf' specifies the pointer to the region of the value.
                     `vsiz'  specifies the size of the region of the value.  If the size of the value is greater
                     than the width tuning parameter of the database, the size is cut down to the width.
                     If successful, the return value is true, else, it is false.
                     If a record with the same key exists in the database, this function has no effect.

       The function `tcfdbputkeep2' is used in  order  to  store  a  new  record  with  a  decimal  key  into  a
       fixed-length database object.

              bool tcfdbputkeep2(TCFDB *fdb, const void *kbuf, int ksiz, const void *vbuf, int vsiz);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `kbuf'  specifies  the pointer to the region of the decimal key.  It should be more than 0.
                     If it is "min", the minimum ID number of existing records is specified.  If it  is  "prev",
                     the  number less by one than the minimum ID number of existing records is specified.  If it
                     is "max", the maximum ID number of existing records is specified.  If  it  is  "next",  the
                     number greater by one than the maximum ID number of existing records is specified.
                     `ksiz' specifies the size of the region of the key.
                     `vbuf' specifies the pointer to the region of the value.
                     `vsiz'  specifies the size of the region of the value.  If the size of the value is greater
                     than the width tuning parameter of the database, the size is cut down to the width.
                     If successful, the return value is true, else, it is false.
                     If a record with the same key exists in the database, this function has no effect.

       The function `tcfdbputkeep3' is used in order to store a new string record with  a  decimal  key  into  a
       fixed-length database object.

              bool tcfdbputkeep3(TCFDB *fdb, const char *kstr, const void *vstr);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `kstr' specifies the string of the decimal key.  It should be more than 0.  If it is "min",
                     the minimum ID number of existing records is specified.  If it is "prev", the  number  less
                     by  one  than  the minimum ID number of existing records is specified.  If it is "max", the
                     maximum ID number of existing records is specified.  If it is "next", the number greater by
                     one than the maximum ID number of existing records is specified.
                     `vstr' specifies the string of the value.
                     If successful, the return value is true, else, it is false.
                     If a record with the same key exists in the database, this function has no effect.

       The function `tcfdbputcat' is used in order to concatenate a value at the end of the existing record in a
       fixed-length database object.

              bool tcfdbputcat(TCFDB *fdb, int64_t id, const void *vbuf, int vsiz);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `id' specifies the ID number.  It should be more than 0.  If it is `FDBIDMIN', the  minimum
                     ID  number  of existing records is specified.  If it is `FDBIDPREV', the number less by one
                     than the minimum ID number of existing records is specified.   If  it  is  `FDBIDMAX',  the
                     maximum  ID  number  of  existing  records  is specified.  If it is `FDBIDNEXT', the number
                     greater by one than the maximum ID number of existing records is specified.
                     `vbuf' specifies the pointer to the region of the value.
                     `vsiz' specifies the size of the region of the value.  If the size of the value is  greater
                     than the width tuning parameter of the database, the size is cut down to the width.
                     If successful, the return value is true, else, it is false.
                     If there is no corresponding record, a new record is created.

       The  function `tcfdbputcat2' is used in order to concatenate a value with a decimal key in a fixed-length
       database object.

              bool tcfdbputcat2(TCFDB *fdb, const void *kbuf, int ksiz, const void *vbuf, int vsiz);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `kbuf' specifies the pointer to the region of the decimal key.  It should be more  than  0.
                     If  it  is "min", the minimum ID number of existing records is specified.  If it is "prev",
                     the number less by one than the minimum ID number of existing records is specified.  If  it
                     is  "max",  the  maximum  ID number of existing records is specified.  If it is "next", the
                     number greater by one than the maximum ID number of existing records is specified.
                     `ksiz' specifies the size of the region of the key.
                     `vbuf' specifies the pointer to the region of the value.
                     `vsiz' specifies the size of the region of the value.  If the size of the value is  greater
                     than the width tuning parameter of the database, the size is cut down to the width.
                     If successful, the return value is true, else, it is false.
                     If there is no corresponding record, a new record is created.

       The  function  `tcfdbputcat3'  is  used  in  order  to concatenate a string value with a decimal key in a
       fixed-length database object.

              bool tcfdbputcat3(TCFDB *fdb, const char *kstr, const void *vstr);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `kstr' specifies the string of the decimal key.  It should be more than 0.  If it is "min",
                     the  minimum  ID number of existing records is specified.  If it is "prev", the number less
                     by one than the minimum ID number of existing records is specified.  If it  is  "max",  the
                     maximum ID number of existing records is specified.  If it is "next", the number greater by
                     one than the maximum ID number of existing records is specified.
                     `vstr' specifies the string of the value.
                     If successful, the return value is true, else, it is false.
                     If there is no corresponding record, a new record is created.

       The function `tcfdbout' is used in order to remove a record of a fixed-length database object.

              bool tcfdbout(TCFDB *fdb, int64_t id);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `id' specifies the ID number.  It should be more than 0.  If it is `FDBIDMIN', the  minimum
                     ID  number of existing records is specified.  If it is `FDBIDMAX', the maximum ID number of
                     existing records is specified.
                     If successful, the return value is true, else, it is false.

       The function `tcfdbout2' is used in order to remove a  record  with  a  decimal  key  of  a  fixed-length
       database object.

              bool tcfdbout2(TCFDB *fdb, const void *kbuf, int ksiz);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `kbuf'  specifies  the pointer to the region of the decimal key.  It should be more than 0.
                     If it is "min", the minimum ID number of existing records is specified.  If  it  is  "max",
                     the maximum ID number of existing records is specified.
                     `ksiz' specifies the size of the region of the key.
                     If successful, the return value is true, else, it is false.

       The  function `tcfdbout3' is used in order to remove a string record with a decimal key of a fixed-length
       database object.

              bool tcfdbout3(TCFDB *fdb, const char *kstr);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `kstr' specifies the string of the decimal key.  It should be more than 0.  If it is "min",
                     the  minimum  ID  number  of existing records is specified.  If it is "max", the maximum ID
                     number of existing records is specified.
                     If successful, the return value is true, else, it is false.

       The function `tcfdbget' is used in order to retrieve a record in a fixed-length database object.

              void *tcfdbget(TCFDB *fdb, int64_t id, int *sp);
                     `fdb' specifies the fixed-length database object.
                     `id' specifies the ID number.  It should be more than 0.  If it is `FDBIDMIN', the  minimum
                     ID  number of existing records is specified.  If it is `FDBIDMAX', the maximum ID number of
                     existing records is specified.
                     `sp' specifies the pointer to the variable into which the size of the region of the  return
                     value is assigned.
                     If  successful,  the  return  value  is  the  pointer  to  the  region  of the value of the
                     corresponding record.  `NULL' is returned if no record corresponds.
                     Because an additional zero code is appended at the end of the region of the  return  value,
                     the  return  value  can be treated as a character string.  Because the region of the return
                     value is allocated with the `malloc' call, it should be released with the `free' call  when
                     it is no longer in use.

       The  function  `tcfdbget2'  is  used  in  order to retrieve a record with a decimal key in a fixed-length
       database object.

              void *tcfdbget2(TCFDB *fdb, const void *kbuf, int ksiz, int *sp);
                     `fdb' specifies the fixed-length database object.
                     `kbuf' specifies the pointer to the region of the decimal key.  It should be more  than  0.
                     If  it  is  "min", the minimum ID number of existing records is specified.  If it is "max",
                     the maximum ID number of existing records is specified.
                     `ksiz' specifies the size of the region of the key.
                     `sp' specifies the pointer to the variable into which the size of the region of the  return
                     value is assigned.
                     If  successful,  the  return  value  is  the  pointer  to  the  region  of the value of the
                     corresponding record.  `NULL' is returned if no record corresponds.
                     Because an additional zero code is appended at the end of the region of the  return  value,
                     the  return  value  can be treated as a character string.  Because the region of the return
                     value is allocated with the `malloc' call, it should be released with the `free' call  when
                     it is no longer in use.

       The  function  `tcfdbget3'  is  used  in  order  to  retrieve  a  string  record  with a decimal key in a
       fixed-length database object.

              char *tcfdbget3(TCFDB *fdb, const char *kstr);
                     `fdb' specifies the fixed-length database object.
                     `kstr' specifies the string of the decimal key.  It should be more than 0.  If it is "min",
                     the  minimum  ID  number  of existing records is specified.  If it is "max", the maximum ID
                     number of existing records is specified.
                     If successful, the return value is the string of the value  of  the  corresponding  record.
                     `NULL' is returned if no record corresponds.
                     Because  an  additional zero code is appended at the end of the region of the return value,
                     the return value can be treated as a character string.  Because the region  of  the  return
                     value  is allocated with the `malloc' call, it should be released with the `free' call when
                     it is no longer in use.

       The function `tcfdbget4' is used in order to retrieve a record in  a  fixed-length  database  object  and
       write the value into a buffer.

              int tcfdbget4(TCFDB *fdb, int64_t id, void *vbuf, int max);
                     `fdb' specifies the fixed-length database object.
                     `id'  specifies the ID number.  It should be more than 0.  If it is `FDBIDMIN', the minimum
                     ID number of existing records is specified.  If it is `FDBIDMAX', the maximum ID number  of
                     existing records is specified.
                     `vbuf' specifies the pointer to the buffer into which the value of the corresponding record
                     is written.
                     `max' specifies the size of the buffer.
                     If successful, the return value is the size of the written data, else, it  is  -1.   -1  is
                     returned if no record corresponds to the specified key.
                     Note  that  an additional zero code is not appended at the end of the region of the writing
                     buffer.

       The function `tcfdbvsiz' is used in order to get the size of the value of  a  record  in  a  fixed-length
       database object.

              int tcfdbvsiz(TCFDB *fdb, int64_t id);
                     `fdb' specifies the fixed-length database object.
                     `id'  specifies the ID number.  It should be more than 0.  If it is `FDBIDMIN', the minimum
                     ID number of existing records is specified.  If it is `FDBIDMAX', the maximum ID number  of
                     existing records is specified.
                     If successful, the return value is the size of the value of the corresponding record, else,
                     it is -1.

       The function `tcfdbvsiz2' is used in order to get the  size  of  the  value  with  a  decimal  key  in  a
       fixed-length database object.

              int tcfdbvsiz2(TCFDB *fdb, const void *kbuf, int ksiz);
                     `fdb' specifies the fixed-length database object.
                     `kbuf'  specifies  the pointer to the region of the decimal key.  It should be more than 0.
                     If it is "min", the minimum ID number of existing records is specified.  If  it  is  "max",
                     the maximum ID number of existing records is specified.
                     `ksiz' specifies the size of the region of the key.
                     If successful, the return value is the size of the value of the corresponding record, else,
                     it is -1.

       The function `tcfdbvsiz3' is used in order to get the size of the string value with a decimal  key  in  a
       fixed-length database object.

              int tcfdbvsiz3(TCFDB *fdb, const char *kstr);
                     `fdb' specifies the fixed-length database object.
                     `kstr' specifies the string of the decimal key.  It should be more than 0.  If it is "min",
                     the minimum ID number of existing records is specified.  If it is  "max",  the  maximum  ID
                     number of existing records is specified.
                     If successful, the return value is the size of the value of the corresponding record, else,
                     it is -1.

       The function `tcfdbiterinit' is used in order to initialize  the  iterator  of  a  fixed-length  database
       object.

              bool tcfdbiterinit(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object.
                     If successful, the return value is true, else, it is false.
                     The iterator is used in order to access the key of every record stored in a database.

       The function `tcfdbiternext' is used in order to get the next ID number of the iterator of a fixed-length
       database object.

              uint64_t tcfdbiternext(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object.
                     If successful, the return value is the next ID number of the iterator, else, it is 0.  0 is
                     returned when no record is to be get out of the iterator.
                     It is possible to access every record by iteration of calling this function.  It is allowed
                     to update or remove records whose keys are fetched while the iteration.  The order of  this
                     traversal access method is ascending of the ID number.

       The  function  `tcfdbiternext2'  is  used  in  order  to  get  the  next decimay key of the iterator of a
       fixed-length database object.

              void *tcfdbiternext2(TCFDB *fdb, int *sp);
                     `fdb' specifies the fixed-length database object.
                     `sp' specifies the pointer to the variable into which the size of the region of the  return
                     value is assigned.
                     If successful, the return value is the pointer to the region of the next decimal key, else,
                     it is `NULL'.  `NULL' is returned when no record is to be get out of the iterator.
                     Because an additional zero code is appended at the end of the region of the  return  value,
                     the  return  value  can be treated as a character string.  Because the region of the return
                     value is allocated with the `malloc' call, it should be released with the `free' call  when
                     it is no longer in use.  It is possible to access every record by iteration of calling this
                     function.  It is allowed to update or remove records  whose  keys  are  fetched  while  the
                     iteration.  The order of this traversal access method is ascending of the ID number.

       The  function  `tcfdbiternext3'  is used in order to get the next decimay key string of the iterator of a
       fixed-length database object.

              char *tcfdbiternext3(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object.
                     If successful, the return value is the string of the next decimal key, else, it is  `NULL'.
                     `NULL' is returned when no record is to be get out of the iterator.
                     Because  the  region  of the return value is allocated with the `malloc' call, it should be
                     released with the `free' call when it is no longer in use.  It is possible to access  every
                     record  by  iteration  of calling this function.  It is allowed to update or remove records
                     whose keys are fetched while the iteration.  The order of this traversal access  method  is
                     ascending of the ID number.

       The  function  `tcfdbrange'  is used in order to get range matching ID numbers in a fixed-length database
       object.

              uint64_t *tcfdbrange(TCFDB *fdb, int64_t lower, int64_t upper, int max, int *np);
                     `fdb' specifies the fixed-length database object.
                     `lower' specifies the lower limit of the range.  If it is `FDBIDMIN',  the  minimum  ID  is
                     specified.
                     `upper'  specifies  the  upper  limit of the range.  If it is `FDBIDMAX', the maximum ID is
                     specified.
                     `max' specifies the maximum number of keys to be fetched.  If it is negative, no  limit  is
                     specified.
                     `np'  specifies the pointer to the variable into which the number of elements of the return
                     value is assigned.
                     If successful, the return  value  is  the  pointer  to  an  array  of  ID  numbers  of  the
                     corresponding  records.  `NULL' is returned on failure.  This function does never fail.  It
                     returns an empty array even if no key corresponds.
                     Because the region of the return value is allocated with the `malloc' call,  it  should  be
                     released with the `free' call when it is no longer in use.

       The function `tcfdbrange2' is used in order to get range matching decimal keys in a fixed-length database
       object.

              TCLIST *tcfdbrange2(TCFDB *fdb, const void *lbuf, int lsiz, const void *ubuf, int usiz, int max);
                     `fdb' specifies the fixed-length database object.
                     `lbuf' specifies the pointer to the region of the lower key.  If it is "min",  the  minimum
                     ID number of existing records is specified.
                     `lsiz' specifies the size of the region of the lower key.
                     `ubuf'  specifies  the pointer to the region of the upper key.  If it is "max", the maximum
                     ID number of existing records is specified.
                     `usiz' specifies the size of the region of the upper key.
                     `max' specifies the maximum number of keys to be fetched.  If it is negative, no  limit  is
                     specified.
                     The  return  value  is a list object of the corresponding decimal keys.  This function does
                     never fail.  It returns an empty list even if no key corresponds.
                     Because the object of the return value is created with the function `tclistnew', it  should
                     be  deleted  with  the  function  `tclistdel'  when it is no longer in use.  Note that this
                     function may be very slow because every key in the database is scanned.

       The function `tcfdbrange3' is used in order to  get  range  matching  decimal  keys  with  strings  in  a
       fixed-length database object.

              TCLIST *tcfdbrange3(TCFDB *fdb, const char *lstr, const char *ustr, int max);
                     `fdb' specifies the fixed-length database object.
                     `lstr'  specifies  the  string  of the lower key.  If it is "min", the minimum ID number of
                     existing records is specified.
                     `ustr' specifies the string of the upper key.  If it is "max", the  maximum  ID  number  of
                     existing records is specified.
                     `max'  specifies  the maximum number of keys to be fetched.  If it is negative, no limit is
                     specified.
                     The return value is a list object of the corresponding decimal keys.   This  function  does
                     never fail.  It returns an empty list even if no key corresponds.
                     Because  the object of the return value is created with the function `tclistnew', it should
                     be deleted with the function `tclistdel' when it is no  longer  in  use.   Note  that  this
                     function may be very slow because every key in the database is scanned.

       The  function  `tcfdbrange4'  is  used  in  order to get keys with an interval notation in a fixed-length
       database object.

              TCLIST *tcfdbrange4(TCFDB *fdb, const void *ibuf, int isiz, int max);
                     `fdb' specifies the fixed-length database object.
                     `ibuf' specifies the pointer to the region of the interval notation.
                     `isiz' specifies the size of the region of the interval notation.
                     `max' specifies the maximum number of keys to be fetched.  If it is negative, no  limit  is
                     specified.
                     The  return  value  is a list object of the corresponding decimal keys.  This function does
                     never fail.  It returns an empty list even if no key corresponds.
                     Because the object of the return value is created with the function `tclistnew', it  should
                     be  deleted  with  the  function  `tclistdel'  when it is no longer in use.  Note that this
                     function may be very slow because every key in the database is scanned.

       The function `tcfdbrange5' is used  in  order  to  get  keys  with  an  interval  notation  string  in  a
       fixed-length database object.

              TCLIST *tcfdbrange5(TCFDB *fdb, const void *istr, int max);
                     `fdb' specifies the fixed-length database object.
                     `istr' specifies the pointer to the region of the interval notation string.
                     `max'  specifies  the maximum number of keys to be fetched.  If it is negative, no limit is
                     specified.
                     The return value is a list object of the corresponding decimal keys.   This  function  does
                     never fail.  It returns an empty list even if no key corresponds.
                     Because  the object of the return value is created with the function `tclistnew', it should
                     be deleted with the function `tclistdel' when it is no  longer  in  use.   Note  that  this
                     function may be very slow because every key in the database is scanned.

       The  function  `tcfdbaddint'  is  used  in order to add an integer to a record in a fixed-length database
       object.

              int tcfdbaddint(TCFDB *fdb, int64_t id, int num);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `id' specifies the ID number.  It should be more than 0.  If it is `FDBIDMIN', the  minimum
                     ID  number  of existing records is specified.  If it is `FDBIDPREV', the number less by one
                     than the minimum ID number of existing records is specified.   If  it  is  `FDBIDMAX',  the
                     maximum  ID  number  of  existing  records  is specified.  If it is `FDBIDNEXT', the number
                     greater by one than the maximum ID number of existing records is specified.
                     `num' specifies the additional value.
                     If successful, the return value is the summation value, else, it is `INT_MIN'.
                     If the corresponding record exists, the value is treated as an integer and is added to.  If
                     no record corresponds, a new record of the additional value is stored.

       The  function  `tcfdbadddouble'  is  used  in  order  to  add a real number to a record in a fixed-length
       database object.

              double tcfdbadddouble(TCFDB *fdb, int64_t id, double num);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `id' specifies the ID number.  It should be more than 0.  If it is `FDBIDMIN', the  minimum
                     ID  number  of existing records is specified.  If it is `FDBIDPREV', the number less by one
                     than the minimum ID number of existing records is specified.   If  it  is  `FDBIDMAX',  the
                     maximum  ID  number  of  existing  records  is specified.  If it is `FDBIDNEXT', the number
                     greater by one than the maximum ID number of existing records is specified.
                     `num' specifies the additional value.
                     If successful, the return value is the summation value, else, it is Not-a-Number.
                     If the corresponding record exists, the value is treated as a real number and is added  to.
                     If no record corresponds, a new record of the additional value is stored.

       The  function  `tcfdbsync'  is  used  in order to synchronize updated contents of a fixed-length database
       object with the file and the device.

              bool tcfdbsync(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     If successful, the return value is true, else, it is false.
                     This function is useful when another process connects to the same database file.

       The function `tcfdboptimize' is used in order to optimize the file of a fixed-length database object.

              bool tcfdboptimize(TCFDB *fdb, int32_t width, int64_t limsiz);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     `width' specifies the width of the value of each record.  If it is not  more  than  0,  the
                     current setting is not changed.
                     `limsiz'  specifies  the  limit  size  of the database file.  If it is not more than 0, the
                     current setting is not changed.
                     If successful, the return value is true, else, it is false.

       The function `tcfdbvanish' is used in order to remove all records of a fixed-length database object.

              bool tcfdbvanish(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     If successful, the return value is true, else, it is false.

       The function `tcfdbcopy' is used in order to copy the database file of a fixed-length database object.

              bool tcfdbcopy(TCFDB *fdb, const char *path);
                     `fdb' specifies the fixed-length database object.
                     `path' specifies the path of the destination file.  If it begins  with  `@',  the  trailing
                     substring is executed as a command line.
                     If  successful,  the  return  value  is  true, else, it is false.  False is returned if the
                     executed command returns non-zero code.
                     The database file is assured to be kept synchronized and not modified while the copying  or
                     executing operation is in progress.  So, this function is useful to create a backup file of
                     the database file.

       The function `tcfdbtranbegin' is used in order to  begin  the  transaction  of  a  fixed-length  database
       object.

              bool tcfdbtranbegin(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     If successful, the return value is true, else, it is false.
                     The database is locked by the thread while the transaction so that only one transaction can
                     be activated with a database object at the same time.   Thus,  the  serializable  isolation
                     level  is assumed if every database operation is performed in the transaction.  All updated
                     regions are kept track of by write ahead logging while the transaction.  If the database is
                     closed during transaction, the transaction is aborted implicitly.

       The  function  `tcfdbtrancommit'  is  used  in order to commit the transaction of a fixed-length database
       object.

              bool tcfdbtrancommit(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     If successful, the return value is true, else, it is false.
                     Update in the transaction is fixed when it is committed successfully.

       The function `tcfdbtranabort' is used in order to  abort  the  transaction  of  a  fixed-length  database
       object.

              bool tcfdbtranabort(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object connected as a writer.
                     If successful, the return value is true, else, it is false.
                     Update  in  the  transaction is discarded when it is aborted.  The state of the database is
                     rollbacked to before transaction.

       The function `tcfdbpath' is used in order to get the file path of a fixed-length database object.

              const char *tcfdbpath(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object.
                     The return value is the path of the database file or `NULL' if the object does not  connect
                     to any database file.

       The function `tcfdbrnum' is used in order to get the number of records of a fixed-length database object.

              uint64_t tcfdbrnum(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object.
                     The  return  value  is  the  number  of  records or 0 if the object does not connect to any
                     database file.

       The function `tcfdbfsiz' is used in order to get the size of the database file of a fixed-length database
       object.

              uint64_t tcfdbfsiz(TCFDB *fdb);
                     `fdb' specifies the fixed-length database object.
                     The  return  value  is the size of the database file or 0 if the object does not connect to
                     any database file.

SEE ALSO

       tcftest(1), tcfmttest(1), tcfmgr(1), tokyocabinet(3)