Difference between revisions of "StringHashMap"

From Free Pascal wiki
Jump to navigationJump to search
Line 33: Line 33:
 
Status: Stable
 
Status: Stable
  
Issues: There really should be such container classes included in FPC's libraries. Every other modern language / library has them.
+
Issues: It turned out there are about similar container classes in FPC's libraries so this one is not published in CCR.
 +
I published it in GitHub instead: http://github.com/JuhaManninen/Pascal
 +
 
 +
There is a "Download Source" button available.
  
 
=== Installation ===
 
=== Installation ===

Revision as of 18:22, 5 June 2010

About

StringHashMap is a string -> pointer associative map container. It is implemented in a fast and memory efficient way. The search time of a hash map is constant, it does not depend on the amount of data (assuming there is enough memory and no swapping). Hundreds of thousands of elements is no problem.

The unit name is StrHashMap.pas and it was modified from unit JclStrHashMap.pas which is part of Jcl library.

The purpose was to make it compile and work with FPC (Free Pascal Compiler). In the process lots of code with conditional compilation directives was removed and also many unit dependencies were removed.

The download contains:

  • Source unit file
  • Comprehensive demo program which builds a database of South Park episodes and then searches them swiftly using a hash map lookup :-)
  • README.txt file which basically tells you about this document and the demo program.

Author

Juha Manninen <juha dot manninen (at) phnet dot fi>

+ the original authors of Jcl code.

License

This code is licensed under the same terms as Jcl library.

Download

The latest stable release can be found on ... [will be released soon] ...

Change Log

  • Version 1.0 2009-11-25

Dependencies / System Requirements

  • None. Pure Pascal.

Status: Stable

Issues: It turned out there are about similar container classes in FPC's libraries so this one is not published in CCR. I published it in GitHub instead: http://github.com/JuhaManninen/Pascal

There is a "Download Source" button available.

Installation

Just include unit StrHashMap in the "uses" section. Set path for it in project settings if needed.

The HashMapDemo1 Example Application

To install and run:

  • From Example directory open HashMapDemo1.lpi
  • Build it
  • Run it at console so that you can see the output.
  • Inspect the source code based on the output.

The example application first builds a database of South Park episodes and then demonstrates the following features of StringHashMap:

  • Search data records with lightning speed using hash keys.
  • Array syntax: Map[Key]
  • Find function: Map.Find(Key, Pointer)
  • FindData function: Map.FindData(Pointer, Key)
  • Iterating elements
  • Using the data pointer as integer, making a very efficient word counter.