24#ifndef MUTT_EXPANDO_NODE_H
25#define MUTT_EXPANDO_NODE_H
#define ARRAY_HEAD(name, type)
Define a named struct for arrays of elements of a certain type.
Convenience wrapper for the library headers.
struct ExpandoNode * node_new(void)
Create a new empty ExpandoNode.
ExpandoNodeType
Type of Expando Node.
@ ENT_EXPANDO
Expando, e.g. 'n'.
@ ENT_CONTAINER
Container for other nodes.
@ ENT_CONDITION
True/False condition.
@ ENT_CONDDATE
True/False date condition.
@ ENT_CONDBOOL
True/False boolean condition.
@ ENT_PADDING
Padding: soft, hard, EOL.
struct ExpandoNode * node_get_child(const struct ExpandoNode *node, int index)
Get a child of an ExpandoNode.
void node_add_child(struct ExpandoNode *node, struct ExpandoNode *child)
Add a child to an ExpandoNode.
struct ExpandoNode * node_last(struct ExpandoNode *node)
Find the last Node in a tree.
void node_free(struct ExpandoNode **ptr)
Free an ExpandoNode and its private data.
Render Expandos using Data.
uint8_t MuttFormatFlags
Flags for expando_render(), e.g. MUTT_FORMAT_FORCESUBJ.
String manipulation buffer.
int uid
Unique ID, e.g. ED_EMA_SIZE.
void * ndata
Private node data.
struct ExpandoFormat * format
Formatting info.
int(* render)(const struct ExpandoNode *node, const struct ExpandoRenderCallback *erc, struct Buffer *buf, int max_cols, void *data, MuttFormatFlags flags)
int did
Domain ID, e.g. ED_EMAIL.
const char * text
Node-specific text.
enum ExpandoNodeType type
Type of Node, e.g. ENT_EXPANDO.
void(* ndata_free)(void **ptr)
Function to free the private node data.
struct ExpandoNodeArray children
Children nodes.