Type encodings
What Encodings Are
An encoding is an object that represents another (usually more abstract)
object. Encodings have a number of uses, but their chief use is for
communicating objects over the network. In order to be shipped from one
agent to another, an object must be encoded as a sequence of
bytes.
A formal definition and an example
A type encoding is a mapping of objects from some type T to some type U.
(U may be the same as T.) An object of type T may map to more than one
object of type U, but any object of type U in the range of the mapping
must be mapped to by at most one object in type T. (In other words, the
encoding object must give enough information to rebuild the encoded
object.)
If it's easier to imagine, you can think of a decoding function
from type U to type T. A more detailed treatment of the formal semantics
of encodings can be found elsewhere.
For example, suppose we want to ship a group of pictures across the
network. We may encode them as a sequence of GIF files. This can then
be encoded into a single data stream as a Unix "tar" file. This tar file
is a sequence of bytes. We can therefore ship it across the network in
this form, accompanied by tags showing the original type of the object and the
encodings that were used to represent it as the sequence of bytes we send.
How encodings are defined
Types may have any number of encodings associated with them. Each is
defined by a unique encoding name (sometimes called the encoding method
or encoding format). The encoding definition also gives the type of the
object used for the encoding. For example, an integer may be encoded
with the method "ascii-rep", using a sequence of bytes for the encoding.
Encodings may also be registered with semantics describing them, but this
is optional.
Encodings are not inherited by subtypes. If you're
using identical encoding schemes for two types, though, you may be able
to define a trivial conversion for them..
Encodings are not part of the basic definition of a type.
Converting between encodings
Any number of conversions may be used
to turn an object of one encoding into an object of another encoding.
While some conversions are designed to create a new type of object,
others simply model the same object with a different representation.
This can be useful for agents that expect an object to be in a particular
format.
spok@cs.cmu.edu (Last updated 4-Jan-95)