项目作者: pdebuyl

项目描述 :
"" hash table in Fortran 2008
高级语言: Fortran
项目地址: git://github.com/pdebuyl/fortran_hash_table.git
创建时间: 2018-03-18T19:23:56Z
项目社区:https://github.com/pdebuyl/fortran_hash_table

开源协议:BSD 3-Clause "New" or "Revised" License

下载


Fortran hash table {#mainpage}

The module dictionary_m implements a ““ hash table based on the djb2 hash
function.

  1. program example_from_readme
  2. use dictionary_m
  3. implicit none
  4. type(dictionary_t) :: d
  5. call d%init(1024)
  6. call d%set('one', 'one')
  7. call d%set('pi', '3.14159')
  8. write(*,*) 'one', ' = ', d%get('one')
  9. write(*,*) 'pi', ' = ', d%get('pi')
  10. end program example_from_readme

Author: Pierre de Buyl

License: BSD

Code repository: https://github.com/pdebuyl/fortran_hash_table/

Project goals

  • Demonstrate a hash table in Fortran.
  • Use standard Fortran 2008.
  • Single file implementation.
  • No dependency.
  • No preprocessing.
  • Not design a generic container, dictionary_m just stores strings. It is of course
    possible to replace the “value” entry in the type entry_t for a single-datatype
    dictionary.

The hash table is based on plain allocatable arrays and the base data is stored in (len=:), allocatable character variables. Buckets are extended arbitrarily by reallocation, thus
collisions will slow down this implementation with respect to others using better data
structures.

The goal is not to beat other implementations performance-wise but to provide the
convenience for Fortran programmers to store configuration settings, or other auxiliary data
easily.

Installation

dictionary_m consists of a single Fortran file. You can just drop src/dictionary_m.f90
in your Fortran project.

The code requires Fortran 2008 support. For gfortran, I have tested version 6.3 and 7.2. For
Intel Fortran, I have tested version 16.0.3.

Documentation and coverage

If you read this page from the “GitHub pages” doxygen-generated
documentation, you can access:

See also

I am neither the first or the only person having implemented a hash table in Fortran. While
the implementations below did not fit my design goals, they might suit you just fine.

  • HASTY by Stefano Zaghi: HASh Table fortran container exploting coarraY.
  • In FLIBS by Arjen Markus, dictionaries is a Generic
    source code for implementing a mapping of strings to data.
  • The Fortran Wiki has a page on hash tables.