GNU Info

Info Node: (elisp)Object Internals

(elisp)Object Internals


Prev: Writing Emacs Primitives Up: GNU Emacs Internals
Enter node , (file) or (file)node

Object Internals
================

   GNU Emacs Lisp manipulates many different types of data.  The actual
data are stored in a heap and the only access that programs have to it
is through pointers.  Pointers are thirty-two bits wide in most
implementations.  Depending on the operating system and type of machine
for which you compile Emacs, twenty-eight bits are used to address the
object, and the remaining four bits are used for a GC mark bit and the
tag that identifies the object's type.

   Because Lisp objects are represented as tagged pointers, it is always
possible to determine the Lisp data type of any object.  The C data type
`Lisp_Object' can hold any Lisp object of any data type.  Ordinary
variables have type `Lisp_Object', which means they can hold any type
of Lisp value; you can determine the actual data type only at run time.
The same is true for function arguments; if you want a function to
accept only a certain type of argument, you must check the type
explicitly using a suitable predicate (Note: Type Predicates).

Buffer Internals
Components of a buffer structure.
Window Internals
Components of a window structure.
Process Internals
Components of a process structure.

automatically generated by info2www version 1.2.2.9