configure.ac: Add checks for Flex/Yacc/Bison and other furry animals, for the new...
[platform/upstream/gst-plugins-good.git] / gst / goom / goomsl.h
1 #ifndef _GOOMSL_H
2 #define _GOOMSL_H
3
4 #include "goomsl_hash.h"
5
6 typedef struct _GoomSL GoomSL;
7 typedef void (*GoomSL_ExternalFunction)(GoomSL *gsl, GoomHash *global_vars, GoomHash *local_vars);
8
9 GoomSL*gsl_new(void);
10 void   gsl_free(GoomSL *gss);
11
12 char *gsl_init_buffer(const char *file_name);
13 void  gsl_append_file_to_buffer(const char *file_name, char **buffer);
14
15 void   gsl_compile (GoomSL *scanner, const char *script);
16 void   gsl_execute (GoomSL *scanner);
17 int    gsl_is_compiled  (GoomSL *gss);
18 void   gsl_bind_function(GoomSL *gss, const char *fname, GoomSL_ExternalFunction func);
19
20 int    gsl_malloc  (GoomSL *_this, int size);
21 void  *gsl_get_ptr (GoomSL *_this, int id);
22 void   gsl_free_ptr(GoomSL *_this, int id);
23
24 GoomHash *gsl_globals(GoomSL *_this);
25
26 #define GSL_LOCAL_PTR(gsl,local,name)   gsl_get_ptr(gsl, *(int*)goom_hash_get(local,name)->ptr)
27 #define GSL_LOCAL_INT(gsl,local,name)   (*(int*)goom_hash_get(local,name)->ptr)
28 #define GSL_LOCAL_FLOAT(gsl,local,name) (*(float*)goom_hash_get(local,name)->ptr)
29
30 #define GSL_GLOBAL_PTR(gsl,name)   gsl_get_ptr(gsl, *(int*)goom_hash_get(gsl_globals(gsl),name)->ptr)
31 #define GSL_GLOBAL_INT(gsl,name)   (*(int*)goom_hash_get(gsl_globals(gsl),name)->ptr)
32 #define GSL_GLOBAL_FLOAT(gsl,name) (*(float*)goom_hash_get(gsl_globals(gsl),name)->ptr)
33
34 #endif