New library for interned strings.
authorBen Pfaff <blp@gnu.org>
Mon, 18 Jan 2010 23:13:02 +0000 (15:13 -0800)
committerBen Pfaff <blp@gnu.org>
Mon, 18 Jan 2010 23:13:02 +0000 (15:13 -0800)
commit3e30fb40d64fcf006b327a5f81934c14ef842111
tree66a218dff77d57d3d68b4728fc148c98dacd5271
parent3917875a58a5c90596639fd6ca3286f8d1ed733a
New library for interned strings.

An "interned" string is stored in a global hash table.  Only one copy of any
given string is kept in the hash table, which reduces memory usage in cases
where there might otherwise be many duplicates of a given string.

Interned strings can be compared for equality by comparing pointers, which
can also be a significant advantage in some cases.

Interned strings are immutable.

This commit adds a general-purpose implementation of interned strings and
adapts the implementation of value labels, which already had a
special-purpose and less convenient implementation of interned strings,
to use them.
src/data/value-labels.c
src/data/value-labels.h
src/libpspp/automake.mk
src/libpspp/intern.c [new file with mode: 0644]
src/libpspp/intern.h [new file with mode: 0644]