|  |  |  | Evolution-Data-Server Manual: Utilities (libedataserver) |  | 
|---|---|---|---|---|
| Top | Description | ||||
                    ESExp;
                    ESExpSymbol;
                    ESExpResult;
                    ESExpTerm;
ESExp *             e_sexp_new                          (void);
void                e_sexp_ref                          (ESExp *f);
void                e_sexp_unref                        (ESExp *f);
void                e_sexp_add_function                 (ESExp *f,
                                                         gint scope,
                                                         const gchar *name,
                                                         ESExpFunc *func,
                                                         gpointer data);
void                e_sexp_add_ifunction                (ESExp *f,
                                                         gint scope,
                                                         const gchar *name,
                                                         ESExpIFunc *func,
                                                         gpointer data);
void                e_sexp_add_variable                 (ESExp *f,
                                                         gint scope,
                                                         gchar *name,
                                                         ESExpTerm *value);
void                e_sexp_remove_symbol                (ESExp *f,
                                                         gint scope,
                                                         const gchar *name);
gint                e_sexp_set_scope                    (ESExp *f,
                                                         gint scope);
void                e_sexp_input_text                   (ESExp *f,
                                                         const gchar *text,
                                                         gint len);
void                e_sexp_input_file                   (ESExp *f,
                                                         gint fd);
gint                e_sexp_parse                        (ESExp *f);
ESExpResult *       e_sexp_eval                         (ESExp *f);
ESExpResult *       e_sexp_term_eval                    (struct _ESExp *f,
                                                         struct _ESExpTerm *t);
ESExpResult *       e_sexp_result_new                   (struct _ESExp *f,
                                                         gint type);
void                e_sexp_result_free                  (struct _ESExp *f,
                                                         struct _ESExpResult *t);
void                e_sexp_resultv_free                 (struct _ESExp *f,
                                                         gint argc,
                                                         struct _ESExpResult **argv);
void                e_sexp_encode_bool                  (GString *s,
                                                         gboolean state);
void                e_sexp_encode_string                (GString *s,
                                                         const gchar *string);
void                e_sexp_fatal_error                  (struct _ESExp *f,
                                                         const gchar *why,
                                                         ...);
const gchar *       e_sexp_error                        (struct _ESExp *f);
ESExpTerm *         e_sexp_parse_value                  (ESExp *f);
typedef struct {
#ifdef E_SEXP_IS_G_OBJECT
	GObject parent_object;
#else
	gint refcount;
#endif
	GScanner *scanner;	/* for parsing text version */
	ESExpTerm *tree;	/* root of expression tree */
	/* private stuff */
	jmp_buf failenv;
	gchar *error;
	GSList *operators;
	/* TODO: may also need a pool allocator for term strings, so we dont lose them
	   in error conditions? */
	struct _EMemChunk *term_chunks;
	struct _EMemChunk *result_chunks;
} ESExp;
typedef struct {
	gint type;		/* ESEXP_TERM_FUNC or ESEXP_TERM_VAR */
	gchar *name;
	gpointer data;
	union {
		ESExpFunc *func;
		ESExpIFunc *ifunc;
	} f;
} ESExpSymbol;
typedef struct {
	enum _ESExpResultType type;
	union {
		GPtrArray *ptrarray;
		gint number;
		gchar *string;
		gint bool;
		time_t time;
	} value;
} ESExpResult;
typedef struct {
	enum _ESExpTermType type;
	union {
		gchar *string;
		gint number;
		gint bool;
		time_t time;
		struct {
			struct _ESExpSymbol *sym;
			struct _ESExpTerm **terms;
			gint termcount;
		} func;
		struct _ESExpSymbol *var;
	} value;
} ESExpTerm;
void e_sexp_add_function (ESExp *f, gint scope, const gchar *name, ESExpFunc *func, gpointer data);
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | 
void e_sexp_add_ifunction (ESExp *f, gint scope, const gchar *name, ESExpIFunc *func, gpointer data);
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | 
void e_sexp_add_variable (ESExp *f, gint scope, gchar *name, ESExpTerm *value);
| 
 | |
| 
 | |
| 
 | |
| 
 | 
void e_sexp_remove_symbol (ESExp *f, gint scope, const gchar *name);
| 
 | |
| 
 | |
| 
 | 
void e_sexp_input_text (ESExp *f, const gchar *text, gint len);
| 
 | |
| 
 | |
| 
 | 
ESExpResult * e_sexp_term_eval (struct _ESExp *f, struct _ESExpTerm *t);
| 
 | |
| 
 | |
| Returns : | 
ESExpResult * e_sexp_result_new (struct _ESExp *f, gint type);
| 
 | |
| 
 | |
| Returns : | 
void                e_sexp_resultv_free                 (struct _ESExp *f,
                                                         gint argc,
                                                         struct _ESExpResult **argv);
| 
 | |
| 
 | |
| 
 | 
void                e_sexp_encode_bool                  (GString *s,
                                                         gboolean state);
Encode a bool into an s-expression s.  Bools are
encoded using t f syntax.
| 
 | |
| 
 | 
void                e_sexp_encode_string                (GString *s,
                                                         const gchar *string);
Add a c string string to the s-expression stored in
the gstring s.  Quotes are added, and special characters
are escaped appropriately.
| 
 | Destination string. | 
| 
 | String expression. | 
void                e_sexp_fatal_error                  (struct _ESExp *f,
                                                         const gchar *why,
                                                         ...);
| 
 | |
| 
 | |
| 
 |