+/* --- @subarena_create@ --- *
+ *
+ * Arguments: @subarena *s@ = pointer to arena to initialize
+ * @arena *a@ = pointer to underlying arena block
+ *
+ * Returns: ---
+ *
+ * Use: Initialize a suballocation arena based on an underlying large
+ * blocks arena.
+ */
+
+extern void subarena_create(subarena */*s*/, arena */*a*/);
+
+/* --- @subarena_destroy@ --- *
+ *
+ * Arguments: @subarena *s@ = pointer to arena to destroy
+ *
+ * Returns: ---
+ *
+ * Use: Destroys a suballocation arena, freeing all of the memory it
+ * contains back to the underlying large blocks arena.
+ */
+
+extern void subarena_destroy(subarena */*s*/);
+
+/* --- @subarena_alloc@ --- *
+ *
+ * Arguments: @subarena *s@ = pointer to arena
+ * @size_t s@ = size of chunk wanted
+ *
+ * Returns: Pointer to a block at least as large as the one wanted.
+ *
+ * Use: Allocates a small block of memory from the given pool. The
+ * exception @EXC_NOMEM@ is raised if the underlying arena is
+ * full.
+ */
+
+extern void *subarena_alloc(subarena */*s*/, size_t /*sz*/);
+
+/* --- @subarena_free@ --- *
+ *
+ * Arguments: @subarena *s@ = pointer to arena
+ * @void *p@ = address of block to free
+ * @size_t s@ = size of block
+ *
+ * Returns: ---
+ *
+ * Use: Frees a block allocated by @subarena_alloc@.
+ */
+
+extern void subarena_free(subarena */*s*/, void */*p*/, size_t /*sz*/);
+
+/* --- @A_CREATE@ --- *
+ *
+ * Arguments: @subarena *s@ = pointer to arena
+ * @type@ = type of object required; must be passable to
+ * @sizeof@
+ *
+ * Returns: Pointer to a block sufficiently big to hold an object of the
+ * named type.
+ *
+ * Use: Allocates a block of the required type.
+ */
+
+#define A_CREATE(a, type) subarena_alloc((a), sizeof(type))
+
+/* --- @A_DESTROY@ --- *
+ *
+ * Arguments: @subarena *s@ = pointer to arena
+ * @void *p@ = pointer to an object
+ *
+ * Returns: ---
+ *
+ * Use: Frees the thing pointed to by @p@.
+ */
+
+#define A_DESTROY(a, p) subarena_free((a), (p), sizeof(*p))
+
+/*----- Shortcuts for the global pool -------------------------------------*/
+