Evolution-Data-Server Manual: Utilities (libedataserver) | ||||
---|---|---|---|---|
Top | Description |
Synopsis
enum ESExpResultType; struct ESExpResult; enum ESExpTermType; struct ESExpSymbol; struct ESExpTerm; struct ESExp; ESExp * e_sexp_new (void
); #define e_sexp_ref (f) #define e_sexp_unref (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
); gboolean e_sexp_evaluate_occur_times (ESExp *f
,time_t *start
,time_t *end
);
Details
enum ESExpResultType
typedef enum { ESEXP_RES_ARRAY_PTR=0, /* type is a ptrarray, what it points to is implementation dependant */ ESEXP_RES_INT, /* type is a number */ ESEXP_RES_STRING, /* type is a pointer to a single string */ ESEXP_RES_BOOL, /* boolean type */ ESEXP_RES_TIME, /* time_t type */ ESEXP_RES_UNDEFINED /* unknown type */ } ESExpResultType;
struct ESExpResult
struct ESExpResult { ESExpResultType type; union { GPtrArray *ptrarray; gint number; gchar *string; gint boolean; time_t time; } value; gboolean time_generator; time_t occuring_start; time_t occuring_end; };
enum ESExpTermType
typedef enum { ESEXP_TERM_INT = 0, /* integer literal */ ESEXP_TERM_BOOL, /* boolean literal */ ESEXP_TERM_STRING, /* string literal */ ESEXP_TERM_TIME, /* time_t literal (number of seconds past the epoch) */ ESEXP_TERM_FUNC, /* normal function, arguments are evaluated before calling */ ESEXP_TERM_IFUNC, /* immediate function, raw terms are arguments */ ESEXP_TERM_VAR /* variable reference */ } ESExpTermType;
struct ESExpSymbol
struct ESExpSymbol { gint type; /* ESEXP_TERM_FUNC or ESEXP_TERM_VAR */ gchar *name; gpointer data; union { ESExpFunc *func; ESExpIFunc *ifunc; } f; };
struct ESExpTerm
struct ESExpTerm { ESExpTermType type; union { gchar *string; gint number; gint boolean; time_t time; struct { struct _ESExpSymbol *sym; struct _ESExpTerm **terms; gint termcount; } func; struct _ESExpSymbol *var; } value; };
struct ESExp
struct ESExp { #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; };
e_sexp_add_function ()
void e_sexp_add_function (ESExp *f
,gint scope
,const gchar *name
,ESExpFunc *func
,gpointer data
);
e_sexp_add_ifunction ()
void e_sexp_add_ifunction (ESExp *f
,gint scope
,const gchar *name
,ESExpIFunc *func
,gpointer data
);
e_sexp_add_variable ()
void e_sexp_add_variable (ESExp *f
,gint scope
,gchar *name
,ESExpTerm *value
);
e_sexp_resultv_free ()
void e_sexp_resultv_free (struct _ESExp *f
,gint argc
,struct _ESExpResult **argv
);
e_sexp_encode_bool ()
void e_sexp_encode_bool (GString *s
,gboolean state
);
Encode a bool into an s-expression s
. Bools are
encoded using #t #f syntax.
e_sexp_encode_string ()
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. |
e_sexp_evaluate_occur_times ()
gboolean e_sexp_evaluate_occur_times (ESExp *f
,time_t *start
,time_t *end
);