In a pure object-oriented system, the type of an object reference (or object id) is the only fundamental object type used within the system. In a hybrid object system such as Objective C, both object id's and other native data types are used together. The Swarm libraries make some basic assumptions about the compatibility of native C data types with the id pointer type of Objective C. These assumptions allow some of the more generic abstractions of the libraries (such as collections and actions) to provide one fundamental abstraction that can still be used under an identical implementation to support most of the other C data types.
The basic assumption made is that all data types except double may be case to and from a stored id type without losing the original value. This assumption is valid on all modern 32-bit or greater machines, including all machines on which Swarm is currently running or planning to run.