text: /******************************************************************************
   *                                                                            *
   * Copyright (c) 2021, Enno Boland <g@s01.de>                                 *
   *                                                                            *
   * Redistribution and use in source and binary forms, with or without         *
   * modification, are permitted provided that the following conditions are     *
   * met:                                                                       *
   *                                                                            *
   * * Redistributions of source code must retain the above copyright notice,   *
   *   this list of conditions and the following disclaimer.                    *
   * * Redistributions in binary form must reproduce the above copyright        *
   *   notice, this list of conditions and the following disclaimer in the      *
   *   documentation and/or other materials provided with the distribution.     *
   *                                                                            *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS    *
   * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  *
   * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR     *
   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR          *
   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,      *
   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,        *
   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR         *
   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF     *
   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING       *
   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS         *
   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.               *
   *                                                                            *
   ******************************************************************************/
  
  /**
   * @author      : Enno Boland (mail@eboland.de)
   * @file        : table
   * @created     : Sunday Sep 26, 2021 19:04:39 CEST
   */
  
  #include "../mapper/mapper.h"
  #include <stdint.h>
  
  #ifndef TABLE_H
  
  #define TABLE_H
  
  struct Hsqs;
  
  struct HsqsTable {
  	struct Hsqs *hsqs;
  	struct HsqsMapper *mapper;
  	struct HsqsMap lookup_table;
  	uint64_t start_block;
  	size_t element_size;
  	size_t element_count;
  };
  
  int hsqs_table_init(
  		struct HsqsTable *table, struct Hsqs *hsqs, off_t start_block,
  		size_t element_size, size_t element_count);
  int hsqs_table_get(const struct HsqsTable *table, off_t index, void *target);
  int hsqs_table_cleanup(struct HsqsTable *table);
  
  #endif /* end of include guard TABLE_H */
  