What is the "atom" data type?

c++, types, winapi

Solution

ATOM is a 16-bit Windows handle-like primitive. It's value is completely opaque to user-mode. It is not a pointer or an index.

typedef unsigned short ATOM;

Problem

I have encountered the `ATOM` type in the Win32api and also in the Acrobat API there is ASAtom. As far as I can tell, atoms are keys for a hash table usually of strings to enable fast look up and share data between applications. Is this correct and what is the etymology of the atom type? EDIT After some extensive searching I noticed Prolog uses atoms, so there must be some origin to this word. It seems it used to refer to any single piece of data.

Original source