+/* --- @A_SUBNEW@ --- *
+ *
+ * Arguments: @type *p@ = a pointer to allocate
+ * @subarena *s@ = pointer to arena
+ *
+ * Returns: ---
+ *
+ * Use: Set @p@ to point to a freshly allocated block large enough to
+ * hold an object of the type pointed to by @p@. If there is
+ * not enough memory, the exception @EXC_NOMEM@ is thrown.
+ */
+
+#define A_SUBNEW(p, a) \
+ do { (p) = subarena_alloc((a), sizeof(*(p))); } while (0)
+