/* generic s-exp evaluator class */ #ifndef _E_SEXP_H #define _E_SEXP_H #include <glib.h> #include <gtk/gtk.h> #define E_SEXP(obj) GTK_CHECK_CAST (obj, e_sexp_get_type (), ESExp) #define E_SEXP_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, e_sexp_get_type (), ESExpClass) #define FILTER_IS_SEXP(obj) GTK_CHECK_TYPE (obj, e_sexp_get_type ()) typedef struct _ESExp ESExp; typedef struct _ESExpClass ESExpClass; typedef struct _ESExpSymbol ESExpSymbol; typedef struct _ESExpResult ESExpResult; typedef struct _ESExpTerm ESExpTerm; typedef struct _ESExpResult *(ESExpFunc)(struct _ESExp *sexp, int argc, struct _ESExpResult **argv, void *data); typedef struct _ESExpResult *(ESExpIFunc)(struct _ESExp *sexp, int argc, struct _ESExpTerm **argv, void *data); enum _ESExpResultType { 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_UNDEFINED /* unknown type */ }; struct _ESExpResult { enum _ESExpResultType type; union { GPtrArray *ptrarray; int number; char *string; int bool; } value; }; enum _ESExpTermType { ESEXP_TERM_INT = 0, /* integer literal */ ESEXP_TERM_BOOL, /* boolean literal */ ESEXP_TERM_STRING, /* string literal */ ESEXP_TERM_FUNC, /* normal function, arguments are evaluated before calling */ ESEXP_TERM_IFUNC, /* immediate function, raw terms are arguments */ ESEXP_TERM_VAR, /* variable reference */ }; struct _ESExpSymbol { int type; /* ESEXP_TERM_FUNC or ESEXP_TERM_VAR */ char *name; void *data; union { ESExpFunc *func; ESExpIFunc *ifunc; } f; }; struct _ESExpTerm { enum _ESExpTermType type; union { char *string; int number; int bool; struct { struct _ESExpSymbol *sym; struct _ESExpTerm **terms; int termcount; } func; struct _ESExpSymbol *var; } value; }; struct _ESExp { GtkObject object; GScanner *scanner; /* for parsing text version */ ESExpTerm *tree; /* root of expression tree */ }; struct _ESExpClass { GtkObjectClass parent_class; }; guint e_sexp_get_type (void); ESExp *e_sexp_new (void); void e_sexp_add_function (ESExp *f, int scope, char *name, ESExpFunc *func, void *data); void e_sexp_add_ifunction (ESExp *f, int scope, char *name, ESExpIFunc *func, void *data); void e_sexp_add_variable (ESExp *f, int scope, char *name, ESExpTerm *value); void e_sexp_remove_symbol (ESExp *f, int scope, char *name); int e_sexp_set_scope (ESExp *f, int scope); void e_sexp_input_text (ESExp *f, const char *text, int len); void e_sexp_input_file (ESExp *f, int fd); void 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 (int type); void e_sexp_result_free (struct _ESExpResult *t); /* utility functions for creating s-exp strings. */ void e_sexp_encode_bool(GString *s, gboolean state); void e_sexp_encode_string(GString *s, const char *string); #endif /* _E_SEXP_H */ on6/files/elliptic-6.5.3'>dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.4'>dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.4</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/ini-1.3.8'>dependabot/npm_and_yarn/devel/electron6/files/ini-1.3.8</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/lodash-4.17.19'>dependabot/npm_and_yarn/devel/electron6/files/lodash-4.17.19</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2'>dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/node-fetch-2.6.1'>dependabot/npm_and_yarn/devel/electron6/files/node-fetch-2.6.1</option> <option value='dependabot/npm_and_yarn/devel/electron6/files/serve-10.1.2'>dependabot/npm_and_yarn/devel/electron6/files/serve-10.1.2</option> <option value='gnome-3.22'>gnome-3.22</option> <option value='gnome-3.24' selected='selected'>gnome-3.24</option> <option value='gnome-3.26'>gnome-3.26</option> <option value='gnome-3.28'>gnome-3.28</option> <option value='gnome-3.32'>gnome-3.32</option> <option value='gnome-3.36'>gnome-3.36</option> <option value='gstreamer'>gstreamer</option> <option value='gstreamer-1.16'>gstreamer-1.16</option> <option value='gstreamer0.10-removal'>gstreamer0.10-removal</option> <option value='main'>main</option> <option value='master'>master</option> <option value='mate-1.16'>mate-1.16</option> <option value='mate-1.18'>mate-1.18</option> <option value='mate-1.20'>mate-1.20</option> <option value='mate-1.22'>mate-1.22</option> </select> <input type='submit' value='switch'/></form></td></tr> <tr><td class='sub'>FreeBSD GNOME current development ports (https://github.com/freebsd/freebsd-ports-gnome)</td><td class='sub right'></td></tr></table> <table class='tabs'><tr><td> <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/about/?h=gnome-3.24'>about</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/?h=gnome-3.24'>summary</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/refs/?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>refs</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/ftp/junglemonkey/pkg-comment?h=gnome-3.24'>log</a><a class='active' href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/blame/ftp/junglemonkey/pkg-comment?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>blame</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/ftp/junglemonkey/pkg-comment?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>commit</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/diff/ftp/junglemonkey/pkg-comment?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>diff</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/stats/ftp/junglemonkey/pkg-comment?h=gnome-3.24'>stats</a></td><td class='form'><form class='right' method='get' action='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/ftp/junglemonkey/pkg-comment'> <input type='hidden' name='h' value='gnome-3.24'/><input type='hidden' name='id' value='c70543708dd95fad8547acb6e9fb4d707c152c68'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/blame/?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>root</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/blame/ftp?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>ftp</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/blame/ftp/junglemonkey?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>junglemonkey</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/blame/ftp/junglemonkey/pkg-comment?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>pkg-comment</a></div><div class='content'>blob: 207bda2d9b982f5c3c5cb4589407e5a24b93dd85 (<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/plain/ftp/junglemonkey/pkg-comment?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>plain</a>) (<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/tree/ftp/junglemonkey/pkg-comment?h=gnome-3.24&id=c70543708dd95fad8547acb6e9fb4d707c152c68'>tree</a>) <table class='blame blob'> <tr> <td class='hashes'><div class='alt'><pre><span class='sha1'><a title='author ade <ade@FreeBSD.org> 2000-05-19 00:08:02 +0800 committer ade <ade@FreeBSD.org> 2000-05-19 00:08:02 +0800 Jungle Monkey (JM) is a distributed file sharing program for GNOME/GTK.' href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/ftp/junglemonkey/pkg-comment?h=gnome-3.24&id=271ffd31d589e468acfc31f7eec84f166e371ac7'>271ffd31d589</a></span> </pre></div></td> <td class='linenumbers'><div class='alt'><pre><a id='n1' href='#n1'>1</a> </pre></div></td> <td class='lines'><div><div><div class='alt'><pre> </pre></div></div><pre><code>A distributed file sharing program for GNOME