+ /**
+ * Whether this node contains a symbol, a semantic type, a \c <*>, or a
+ * \c <>.
+ */
+ enum {
+ SYMLIST_SYMBOL, SYMLIST_TYPE,
+ SYMLIST_DEFAULT_TAGGED, SYMLIST_DEFAULT_TAGLESS
+ } content_type;
+ union {
+ /**
+ * The symbol or \c NULL iff
+ * <tt>symbol_list::content_type = SYMLIST_SYMBOL</tt>.
+ */
+ symbol *sym;
+ /**
+ * The semantic type iff <tt>symbol_list::content_type = SYMLIST_TYPE</tt>.
+ */
+ uniqstr type_name;
+ } content;