]> Nishi Git Mirror - gwion.git/commitdiff
:art: update librarie system
authorfennecdjay <fennecdjay@gmail.com>
Wed, 25 Jan 2023 21:43:44 +0000 (22:43 +0100)
committerfennecdjay <fennecdjay@gmail.com>
Wed, 25 Jan 2023 21:49:48 +0000 (22:49 +0100)
79 files changed:
.gitignore
Makefile
include/driver.h
include/import.h
include/lang_private.h
include/plug.h
scripts/embed.bash [new file with mode: 0644]
scripts/gw_embed.sh [deleted file]
src/gwion.c
src/lib/engine.c
src/lib/modules.c
src/lib/prim.c
src/lib/ugen.c
src/main.c
src/plug.c
tests/driver/non_driver.c
tests/driver/simple_driver.c
tests/module/get_module.c
tests/module/module.c
tests/plug/array.c
tests/plug/array_in_var_name.c
tests/plug/array_in_var_name_fail.c
tests/plug/array_incoherent_in_var_name.c
tests/plug/array_invalid_in_var_name.c
tests/plug/class_template_invalid.c
tests/plug/compile_file.c
tests/plug/deps.c
tests/plug/empty_union.c
tests/plug/enum.c
tests/plug/enum_fail.c
tests/plug/enum_fail2.c
tests/plug/enum_fail3.c
tests/plug/extend_array.c
tests/plug/fail_on_next_arg2.c
tests/plug/fptr.c
tests/plug/fptr_tmpl.c
tests/plug/fptr_tmpl_fail.c
tests/plug/func_fail.c
tests/plug/func_fail2.c
tests/plug/func_fail3.c
tests/plug/func_fail4.c
tests/plug/func_subscript_not_empty.c
tests/plug/func_tmpl_fail.c
tests/plug/func_too_many_arg.c
tests/plug/global_func.c
tests/plug/global_var.c
tests/plug/invalid_arg.c
tests/plug/invalid_array.c
tests/plug/invalid_func.c
tests/plug/invalid_names.c
tests/plug/invalid_names0.c
tests/plug/invalid_names1.c
tests/plug/invalid_names2.c
tests/plug/invalid_names3.c
tests/plug/invalid_type1.c
tests/plug/invalid_type2.c
tests/plug/invalid_type3.c
tests/plug/mk_type_array.c
tests/plug/not_importing.c
tests/plug/pass.c
tests/plug/specialid_emit.c
tests/plug/static_string.c
tests/plug/str2decl.c
tests/plug/str2list_fail.c
tests/plug/struct.c
tests/plug/template_arg.c
tests/plug/typedef.c
tests/plug/typedef_fail.c
tests/plug/typedef_tmpl.c
tests/plug/union.c
tests/plug/union_fail_exp.c
tests/plug/union_name.c
tests/plug/union_tmpl.c
tests/plug/union_tmpl_fail.c
tests/plug/union_tmpl_fail2.c
tests/plug/union_tmpl_fail3.c
tests/plug/vm_remove.c
tests/sh/opt.sh
util

index f2aec4ea31fae9d6b69b8a17e9d5bf72ff94bf92..fcaca41a3ed2e0c82cd283a377016824a81af431 100644 (file)
@@ -16,3 +16,5 @@ mkdocs.yml
 .vscode
 # ignore gwiond for dev
 gwiond
+embed
+gwion.config.json
index 82c630dcf22e7155060769a02f1276cedb10d17b..f91c102c39cf8e0f8d2f6a24dc0b1c8bf67f8542 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -58,6 +58,11 @@ ifeq ($(shell uname), Linux)
 LDFLAGS += -lrt
 endif
 
+ifeq (${USE_CONFIG}, 1)
+config_obj := embed/embed.o
+include embed/embed.mk
+endif
+
 ALMOST_LIBS := fmt/libgwion_fmt.a
 ALMOST_LIBS += ast/libgwion_ast.a ast/libprettyerr/libprettyerr.a
 ALMOST_LIBS += util/libgwion_util.a
@@ -71,20 +76,19 @@ CFLAGS += -DGWION_BUILTIN
 
 all: options-show prg
 
-prg: ${GWLIBS} src/main.o
+prg: ${GWLIBS} ${config_obj} src/main.o
        @$(info link ${PRG})
-       @${CC} src/main.o -o ${PRG} ${LDFLAGS} ${LIBS}
+       ${CC} src/main.o -o ${PRG} ${config_obj} ${PLUGLIBS} ${LDFLAGS} ${LIBS}
 
 options-show:
        @$(call _options)
        @$(info libs: ${GWLIBS})
 
-embed_gw:
+with_config:
+       bash scripts/embed.bash gwion.config.json
+       touch src/main.c
+       USE_CONFIG=1 CFLAGS="-DGWION_EMBED_GW -Iembed $(eval ${CFLAGS})" ${MAKE}
        touch src/main.c
-       mkdir -p embed
-       bash scripts/gw_embed.sh ${GWION_EMBED_GW} > src/embed.c
-       CFLAGS="-DGWION_EMBED_GW -Iembed $(eval ${CFLAGS})" ${MAKE}
-       rm -rf embed src/embed.c
 
 almost_gwion: ${almost_obj} ${ALMOST_LIBS}
 
index 2a13eb7d53a1c637e4814e0c18d8e3ea59f0ceb7..3118941e3db22a90c867c8f6b9720914ae0b01a5 100644 (file)
@@ -12,7 +12,6 @@ typedef struct DriverData_ {
   f_drvdel del;
 } DriverData;
 
-typedef void (*f_bbqset)(struct DriverData_ *);
 typedef void (*f_bbqrun)(const struct VM_ *);
 
 typedef struct BBQ_ {
@@ -20,7 +19,7 @@ typedef struct BBQ_ {
   m_float *           in;
   m_float *           out;
   struct SoundInfo_ * si;
-  f_bbqset            func;
+  gwdriver_t          func;
   f_bbqrun            run;
   struct DriverData_ *driver;
   bool                is_running;
index b173e81910335f9dd09de8dbe506507e5ba7d20f..ae35ef8420a66bfba1b9d74f87fc982f564a942e 100644 (file)
@@ -37,7 +37,7 @@ typedef struct Gwi_ *Gwi;
     gwi_set_loc(gwi, __FILE__, __LINE__);                                      \
     (void)(a);                                                                 \
   }
-#define GWION_IMPORT(a) ANN m_bool import_##a(const Gwi gwi)
+#define GWION_IMPORT(a) ANN m_bool gwimport_##a(const Gwi gwi)
 #else
 #define GWI_BB(a)                                                              \
   {                                                                            \
@@ -49,7 +49,7 @@ typedef struct Gwi_ *Gwi;
     gwi_set_loc(gwi, (m_str)__FILE__, __LINE__);                               \
     CHECK_OB(a);                                                               \
   }
-#define GWION_IMPORT(a) ANN m_bool import(const Gwi gwi)
+#define GWION_IMPORT(a) ANN m_bool gwimport_##a(const Gwi gwi)
 #endif
 #define ALLOC_PTR(p, a, b, c)                                                  \
   b *a = (b *)_mp_calloc(p, sizeof(b));                                        \
index 9973412c420addf1b644a70c0f277b85a820ed8b..5c6fd9723b535e43802d5445405838f9788398a1 100644 (file)
@@ -1,24 +1,24 @@
 #ifndef __LANG_PRIVATE
 #define __LANG_PRIVATE
-ANN m_bool import_class(const Gwi gwi);
-ANN m_bool import_prim(const Gwi gwi);
-ANN m_bool import_enum(const Gwi gwi);
-ANN m_bool import_object(const Gwi gwi);
-ANN m_bool import_func(const Gwi gwi);
-ANN m_bool import_string(const Gwi gwi);
-ANN m_bool import_shred(const Gwi gwi);
-ANN m_bool import_event(const Gwi gwi);
-ANN m_bool import_ugen(const Gwi gwi);
-ANN m_bool import_array(const Gwi gwi);
-ANN m_bool import_xork(const Gwi gwi);
-ANN m_bool import_modules(const Gwi gwi);
-ANN m_bool import_object_op(const Gwi gwi);
-ANN m_bool import_values(const Gwi gwi);
-ANN m_bool import_union(const Gwi gwi);
-ANN m_bool import_ref(const Gwi gwi);
-ANN m_bool import_deep_equal(const Gwi gwi);
-ANN m_bool import_dict(const Gwi gwi);
-ANN m_bool import_gack(const Gwi gwi);
-ANN m_bool import_sift(const Gwi gwi);
-ANN m_bool import_locale(const Gwi gwi);
+ANN m_bool gwimport_class(const Gwi gwi);
+ANN m_bool gwimport_prim(const Gwi gwi);
+ANN m_bool gwimport_enum(const Gwi gwi);
+ANN m_bool gwimport_object(const Gwi gwi);
+ANN m_bool gwimport_func(const Gwi gwi);
+ANN m_bool gwimport_string(const Gwi gwi);
+ANN m_bool gwimport_shred(const Gwi gwi);
+ANN m_bool gwimport_event(const Gwi gwi);
+ANN m_bool gwimport_ugen(const Gwi gwi);
+ANN m_bool gwimport_array(const Gwi gwi);
+ANN m_bool gwimport_xork(const Gwi gwi);
+ANN m_bool gwimport_modules(const Gwi gwi);
+ANN m_bool gwimport_object_op(const Gwi gwi);
+ANN m_bool gwimport_values(const Gwi gwi);
+ANN m_bool gwimport_union(const Gwi gwi);
+ANN m_bool gwimport_ref(const Gwi gwi);
+ANN m_bool gwimport_deep_equal(const Gwi gwi);
+ANN m_bool gwimport_dict(const Gwi gwi);
+ANN m_bool gwimport_gack(const Gwi gwi);
+ANN m_bool gwimport_sift(const Gwi gwi);
+ANN m_bool gwimport_locale(const Gwi gwi);
 #endif
index 1953d4e22bd1b0cd7dbafe3c49dee40cf907bef5..7bac9fb4c54d52a4f0de0c52f369e1bcdfbc9544 100644 (file)
@@ -1,45 +1,51 @@
 #ifndef __PLUG
 #define __PLUG
 
+struct DriverData_;
+struct Gwi_;
+typedef m_bool (*gwplugin_t) (struct Gwi_*);
+typedef void*  (*gwmodini_t) (struct Gwion_ const* gwion, const Vector args);
+typedef void*  (*gwmodend_t) (struct Gwion_ const* gwion, void *self);
+typedef void   (*gwdriver_t) (struct DriverData_ *);
+typedef m_str* (*gwdepend_t) (void);
+
+typedef struct Plug_ {
+  void *dl;
+  void *self;
+  Nspc nspc;
+  gwplugin_t plugin;
+  gwdriver_t driver;
+  gwmodini_t modini;
+  gwmodend_t modend;
+  gwdepend_t depend;
+} * Plug;
+
+ANN static inline Plug new_plug(MemPool p) {
+  return (Plug)mp_calloc(p, Plug);
+}
+
 ANN m_bool plug_ini(const struct Gwion_ *, const Vector);
 ANN m_bool driver_ini(const struct Gwion_ *);
 ANN m_bool plug_run(const struct Gwion_ *, const Map);
 ANN void   free_plug(const Gwion);
 ANN void * get_module(const struct Gwion_ *, const m_str);
-ANN void   set_module(const struct Gwion_ *gwion, const m_str name,
+ANN m_bool   set_module(const struct Gwion_ *gwion, const m_str name,
                       void *const ptr);
 ANN m_bool plugin_ini(struct Gwion_ *gwion, const m_str iname, const loc_t);
 
-struct DriverData_;
-struct Gwi_;
-typedef m_bool (*gwplugin_t) (struct Gwi_*);
-typedef void*  (*gwmodini_t) (struct Gwion_ const* gwion, const Vector args);
-typedef void*  (*gwmodend_t) (struct Gwion_ const* gwion, void *self);
-typedef void*  (*gwdriver_t) (struct DriverData_ *);
-typedef m_str* (*gwdepend_t) (void);
 
-#define GWIMPORT_NAME import
-#define GWMODINI_NAME gwmodini
-#define GWMODEND_NAME gwmodend
-#define GWDRIVER_NAME gwdriver
-#define GWDEPEND_NAME gwdepend
+#define GWIMPORT_NAME(a) gwimport_##a
+#define GWMODINI_NAME(a) gwmodini_##a
+#define GWMODEND_NAME(a) gwmodend_##a
+#define GWDRIVER_NAME(a) gwdriver_##a
+#define GWDEPEND_NAME(a) gwdepend_##a
 
-#ifndef GWION_BUILTIN
-#define GWMODINI(a)                                                              \
-  ANN2(1)                                                                        \
-  void *GWMODINI_NAME(struct Gwion_ *const gwion NUSED, const Vector args NUSED)
-#define GWMODEND(a)                                                              \
-  ANN void GWMODEND_NAME(struct Gwion_ *const gwion NUSED, void *self NUSED)
-#define GWDRIVER(a) ANN void GWDRIVER_NAME(DriverData *d)
-#define GWDEPEND(a) ANN m_str const *GWDEPEND_NAME(void)
-#else
-#define GWIMODINI(a)                                                             \
+#define GWMODINI(a)                                                             \
   ANN2(1)                                                                        \
   void *gwmodini_##a(struct Gwion_ *const gwion NUSED, const Vector args NUSED)
 #define GWMODEND(a)                                                              \
   ANN void gwmodend_##a(struct Gwion_ *const gwion NUSED, void *self NUSED)
-#define GWDRIVER(a) gwdriver_##a(a) ANN void GWDRIVER_NAME(DriverData *d)
-#define GWDEPEND(a) gwdepend_##a    ANN m_str const *GWDEPEND_NAME(void)
-#endif
+#define GWDRIVER(a) ANN void gwdriver_##a(DriverData *d)
+#define GWDEPEND(a) ANN m_str const *gwdepend_##a(void)
 
 #endif
diff --git a/scripts/embed.bash b/scripts/embed.bash
new file mode 100644 (file)
index 0000000..bf56e91
--- /dev/null
@@ -0,0 +1,121 @@
+#!/usr/bin/bash
+mkdir -p embed
+rm -f embed/*
+
+#json=$(jq -c '.' "$1")
+json=$(cat "$1")
+
+cat  << EOF >> embed/embed_head
+#include "gwion_util.h"
+#include "gwion_ast.h"
+#include "gwion_env.h"
+#include "vm.h"
+#include "instr.h"
+#include "emit.h"
+#include "compile.h"
+#include "gwion.h"
+#include "object.h"
+#include "operator.h"
+#include "import.h"
+#include "gwi.h"
+
+EOF
+
+header() {
+  echo "$1" >> embed/embed_head
+}
+
+config() {
+  echo "$1" >> embed/embed.mk
+}
+
+has_func() {
+  nm "$2" | grep "${1}_${3}" > /dev/null
+}
+plugin() {
+  has_func "gwimport" "$1" "$2" && {
+    header "extern m_bool gwimport_${2}(const Gwi);"
+    echo "  plug->plugin = gwimport_${2};"
+  }
+}
+driver() {
+  has_func "gwdriver" "$1" "$2" && {
+    header "extern void *gwdriver_$2(struct DriverData_*);"
+    echo "  plug->driver = gwdriver_$2;"
+  }
+}
+modini() {
+  has_func "gwmodini" "$1" "$2" && {
+    header "extern m_bool gwmodini_${2}(gwion);"
+    echo "  plug->modini = gwmodini_${2};"
+  }
+}
+modend() {
+  has_func "gwmodend" "$1" "$2" && {
+    header "extern m_bool gwmodend_${2}(gwion);"
+    echo "  plug->modend = gwmodend_${2};"
+  }
+}
+
+handle_lib() {
+  cat << EOF >> embed/embed_body
+ANN static void embed_${name}(const Gwion gwion) {
+  Plug plug = new_plug(gwion->mp);
+$(modini "$1" "$2")$(modend "$1" "$2")$(plugin "$1" "$2")$(driver "$1" "$2")
+  map_set(&gwion->data->plugs->map, (vtype)strdup("${2}"), (vtype)plug);
+}
+
+EOF
+}
+
+cat << EOF >> embed/embed_foot
+ANN static void compile_script(const Gwion gwion, const m_str filename,
+                              const m_str content, const size_t sz)  {
+  const m_str str = mp_malloc2(gwion->mp, sz + 1);
+  memcpy(str, content, sz);
+  str[sz] = 0;
+  compile_string(gwion, filename, str);
+  mp_free2(gwion->mp, sz + 1, str);
+}
+
+EOF
+
+echo "ANN void gwion_embed(const Gwion gwion) {" >> embed/embed_foot
+jq -rc '.libraries|.[]' <<< "$json" |
+  while read -r lib
+  do
+    path=$(jq -c '.path' <<< "$lib" | sed -e 's/^"//' -e 's/"$//')
+    names=$(jq -c '.names' <<< "$lib")
+    config "LDFLAGS += $path"
+    if [ "$names" != "null" ]
+    then
+      jq -c '.[]' <<< "$names" | sed -e 's/^"//' -e 's/"$//' |
+      while read -r name
+      do
+        echo "  embed_${name}(gwion);" >> embed/embed_foot
+        handle_lib "$path" "$name"
+      done
+    fi
+  done
+
+handle_script() {
+  name="script$2"
+  xxd -name "$name" -i "$1" > "embed/${name}.h"
+  header "#include \"${name}.h\""
+  echo "  compile_script(gwion, \"$name\", ${name}, ${name}_len);"
+}
+
+handle_scripts() {
+  i=0
+  jq -r '.scripts|.[]' <<< "$json"  |
+    while read -r name;
+    do handle_script "$name" "$i"; i=$((i+1));
+    done
+}
+
+handle_scripts >> embed/embed_foot
+echo "}" >> embed/embed_foot
+
+cat embed/embed_head embed/embed_body embed/embed_foot > embed/embed.c
+rm embed/embed_head embed/embed_body embed/embed_foot
+
diff --git a/scripts/gw_embed.sh b/scripts/gw_embed.sh
deleted file mode 100644 (file)
index 391bf03..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/sh
-header_name() {
-  echo "$1" | sed 's/\./_/' | sed 's#/#_#g'
-}
-
-cat << EOF
-#include "gwion_util.h"
-#include "gwion_ast.h"
-#include "gwion_env.h"
-#include "vm.h"
-#include "instr.h"
-#include "emit.h"
-#include "compile.h"
-#include "gwion.h"
-
-static void compile_embed_gw(const Gwion gwion, const m_str filename,
-                              const m_str content, const size_t sz)  {
-  const m_str str = mp_malloc2(gwion->mp, sz + 1);
-  memcpy(str, content, sz);
-  str[sz] = 0;
-  compile_string(gwion, filename, str);
-  mp_free2(gwion->mp, sz + 1, str);
-}
-
-EOF
-
-for file in $GWION_EMBED_GW
-do
-  name=$(header_name "$file")
-  xxd -i "$file" > embed/"${name}.h"
-  echo "#include \"${name}.h\""
-done
-
-
-
-echo "void embed_gw(const Gwion gwion) {"
-
-for file in $GWION_EMBED_GW
-do
-  name=$(header_name "$file")
-  xxd -i "$file" > "${name}.h"
-  echo "  compile_embed_gw(gwion, \"$file\", ${name}, ${name}_len);"
-
-done
-
-echo "}"
index 7b11dedb5b76ff89ff2943b5975fce79fd74af4c..a2754a3bbdd96fdeb3b21780fc10d35a889ba26d 100644 (file)
@@ -5,8 +5,9 @@
 #include "vm.h"
 #include "instr.h"
 #include "emit.h"
-#include "driver.h"
 #include "gwion.h"
+#include "plug.h"
+#include "driver.h"
 #include "engine.h"
 #include "arg.h"
 #include "compile.h"
@@ -78,11 +79,9 @@ ANN static m_bool gwion_ok(const Gwion gwion, CliArg *arg) {
   if (gwion_audio(gwion) > 0) {
     CHECK_BB(plug_run(gwion, &arg->mod));
     if (type_engine_init(gwion)) {
-     // embed_plug(gwion);
       vector_add(&gwion->data->plugs->vec, (m_uint)gwion->env->global_nspc);
       gwion->vm->cleaner_shred = gwion_cleaner(gwion);
       gwion->emit->locale = gwion_locale(gwion);
-     // (void)arg_compile(gwion, arg);
       return GW_OK;
     }
   }
index 5cfe0f21491109879624596e0a1e0f972ac4b1e1..8148b7ac7a4001371b985b3a4b3fc2ccebebc8f9 100644 (file)
@@ -105,32 +105,32 @@ ANN static m_bool import_core_libs(const Gwi gwi) {
 
   gwidoc(gwi, "internal base of all objects and structures.");
 
-  GWI_BB(import_enum(gwi));
+  GWI_BB(gwimport_enum(gwi));
 
   const Type t_compound = gwi_mk_type(gwi, "@Compound", SZ_INT, NULL);
   GWI_BB(gwi_gack(gwi, t_compound, gack_compound))
   GWI_BB(gwi_set_global_type(gwi, t_compound, et_compound))
 
-  GWI_BB(import_object(gwi))
+  GWI_BB(gwimport_object(gwi))
 
-  GWI_BB(import_prim(gwi))
-  GWI_BB(import_func(gwi))
-  GWI_BB(import_object_op(gwi))
-  GWI_BB(import_values(gwi))
-  GWI_BB(import_union(gwi))
+  GWI_BB(gwimport_prim(gwi))
+  GWI_BB(gwimport_func(gwi))
+  GWI_BB(gwimport_object_op(gwi))
+  GWI_BB(gwimport_values(gwi))
+  GWI_BB(gwimport_union(gwi))
 
-  GWI_BB(import_array(gwi))
-  GWI_BB(import_event(gwi))
-  GWI_BB(import_ugen(gwi))
-  GWI_BB(import_xork(gwi))
+  GWI_BB(gwimport_array(gwi))
+  GWI_BB(gwimport_event(gwi))
+  GWI_BB(gwimport_ugen(gwi))
+  GWI_BB(gwimport_xork(gwi))
   GWI_BB(gwi_oper_ini(gwi, NULL, (m_str)OP_ANY_TYPE, NULL))
   GWI_BB(gwi_oper_add(gwi, opck_new))
   GWI_BB(gwi_oper_emi(gwi, opem_new))
   GWI_BB(gwi_oper_end(gwi, "new", NULL))
-  GWI_BB(import_ref(gwi))
-  GWI_BB(import_string(gwi))
-  GWI_BB(import_shred(gwi))
-  GWI_BB(import_modules(gwi))
+  GWI_BB(gwimport_ref(gwi))
+  GWI_BB(gwimport_string(gwi))
+  GWI_BB(gwimport_shred(gwi))
+  GWI_BB(gwimport_modules(gwi))
 
   gwidoc(gwi, "allow member access.");
   GWI_BB(gwi_oper_ini(gwi, "@Compound", (m_str)OP_ANY_TYPE, NULL))
@@ -138,19 +138,19 @@ ANN static m_bool import_core_libs(const Gwi gwi) {
   GWI_BB(gwi_oper_emi(gwi, opem_object_dot))
   GWI_BB(gwi_oper_end(gwi, ".", NULL))
 
-  GWI_BB(import_class(gwi))
+  GWI_BB(gwimport_class(gwi))
 
   gwidoc(gwi, "allow static access.");
   GWI_BB(gwi_oper_ini(gwi, "Class", (m_str)OP_ANY_TYPE, NULL))
   GWI_BB(gwi_oper_add(gwi, opck_object_dot))
   GWI_BB(gwi_oper_emi(gwi, opem_object_dot))
   GWI_BB(gwi_oper_end(gwi, ".", NULL))
-  GWI_BB(import_deep_equal(gwi));
+  GWI_BB(gwimport_deep_equal(gwi));
 
-  GWI_BB(import_dict(gwi));
-  GWI_BB(import_gack(gwi));
-  GWI_BB(import_sift(gwi));
-  GWI_BB(import_locale(gwi));
+  GWI_BB(gwimport_dict(gwi));
+  GWI_BB(gwimport_gack(gwi));
+  GWI_BB(gwimport_sift(gwi));
+  GWI_BB(gwimport_locale(gwi));
 
 
   // seemed need at a point to ease liking
index 46564054f200a4260a0a5088c020bda79579c545..737add0b0d96ba2783ea5469ccbfc6430879fcc5 100644 (file)
@@ -286,11 +286,11 @@ static GWION_IMPORT(usrugen) {
 }
 
 GWION_IMPORT(modules) {
-  GWI_BB(import_gain(gwi))
-  GWI_BB(import_impulse(gwi))
-  GWI_BB(import_fullrect(gwi))
-  GWI_BB(import_halfrect(gwi))
-  GWI_BB(import_step(gwi))
-  GWI_BB(import_zerox(gwi))
-  return import_usrugen(gwi);
+  GWI_BB(gwimport_gain(gwi))
+  GWI_BB(gwimport_impulse(gwi))
+  GWI_BB(gwimport_fullrect(gwi))
+  GWI_BB(gwimport_halfrect(gwi))
+  GWI_BB(gwimport_step(gwi))
+  GWI_BB(gwimport_zerox(gwi))
+  return gwimport_usrugen(gwi);
 }
index ae2be81c3e35054ad1a97cc921e666893cf528c6..084719621514f0bc4a073a0d349aca8bb50c2384 100644 (file)
@@ -278,13 +278,13 @@ static GWION_IMPORT(int_values) {
 }
 
 static GWION_IMPORT(int) {
-  GWI_BB(import_int_values(gwi))
+  GWI_BB(gwimport_int_values(gwi))
   GWI_BB(gwi_oper_cond(gwi, "int", BranchEqInt, BranchNeqInt))
   GWI_BB(gwi_oper_ini(gwi, "int", "int", "int"))
-  GWI_BB(import_int_op(gwi))
-  GWI_BB(import_int_logical(gwi))
-  GWI_BB(import_int_r(gwi))
-  GWI_BB(import_int_unary(gwi))
+  GWI_BB(gwimport_int_op(gwi))
+  GWI_BB(gwimport_int_logical(gwi))
+  GWI_BB(gwimport_int_r(gwi))
+  GWI_BB(gwimport_int_unary(gwi))
   return GW_OK;
 }
 
@@ -613,7 +613,7 @@ static GWION_IMPORT(float) {
   return GW_OK;
 }
 
-ANN static m_bool import_ux(const Gwi gwi) {
+ANN static GWION_IMPORT(ux) {
   char c[8] = { 'u' };
   const Env env = gwi->gwion->env;
   for(uint i = 1; i <= SZ_INT; i *= 2) {
@@ -625,11 +625,11 @@ ANN static m_bool import_ux(const Gwi gwi) {
 }
 
 GWION_IMPORT(prim) {
-  GWI_BB(import_int(gwi))
-  GWI_BB(import_ux(gwi));
-  GWI_BB(import_float(gwi))    // const folded
-  GWI_BB(import_intfloat(gwi)) // const folded
-  GWI_BB(import_floatint(gwi)) // const folded
-  GWI_BB(import_dur(gwi))
-  return import_time(gwi);
+  GWI_BB(gwimport_int(gwi))
+  GWI_BB(gwimport_ux(gwi));
+  GWI_BB(gwimport_float(gwi))    // const folded
+  GWI_BB(gwimport_intfloat(gwi)) // const folded
+  GWI_BB(gwimport_floatint(gwi)) // const folded
+  GWI_BB(gwimport_dur(gwi))
+  return gwimport_time(gwi);
 }
index 59cdfe8e10cdc247e690d724f1f7ce86d8f6e5ee..d6ea4f614236e346500812a32cb52e2330b0396d 100644 (file)
@@ -446,5 +446,5 @@ GWION_IMPORT(ugen) {
   _CHECK_OP(":~>", chuck_ugen, TrigAUConnect)
   _CHECK_OP(":~<", chuck_ugen, TrigAUDisconnect)
 
-  return import_global_ugens(gwi);
+  return gwimport_global_ugens(gwi);
 }
index 1184752cc5a1f911affb38a1f9a73ad0974d7f71..9959c8c083019352df6b6c3bcdc92cd54dfaff3f 100644 (file)
@@ -44,7 +44,7 @@ int main(int argc, char **argv) {
 #else
 
 #ifdef GWION_EMBED_GW
-void embed_gw(const Gwion);
+void gwion_embed(const Gwion);
 #endif
 
 int main(int argc, char **argv) {
@@ -52,13 +52,11 @@ int main(int argc, char **argv) {
   signal(SIGINT, sig);
   signal(SIGTERM, sig);
   const m_bool  ini   = gwion_ini(&gwion, &arg);
-//  embed_plug(&gwion);
-gwion_embed(&gwion);
-  arg_compile(&gwion, &arg);
-  arg_release(&arg);
 #ifdef GWION_EMBED_GW
-//  embed_gw(&gwion);
+  gwion_embed(&gwion);
 #endif
+  arg_compile(&gwion, &arg);
+  arg_release(&arg);
   if (ini > 0) gwion_run(&gwion);
   gwion_end(&gwion);
   gwion.vm = NULL;
index 802606972265ed0e139b4612fe8bcbc93388c23d..fe6f73df88df393da8dde4a0133d7eeb692afc1f 100644 (file)
 #include "import.h"
 #include "gwi.h"
 
-typedef m_bool (*plugin)(Gwi);
-
 struct PlugHandle {
   MemPool mp;
   Map     map;
   size_t  len;
 };
 
-typedef struct Plug_ {
-  void *dl;
-  void *self;
-  Nspc nspc;
-  gwplugin_t plugin;
-  gwdriver_t driver;
-  gwmodini_t modini;
-  gwmodend_t modend;
-  gwdepend_t depend;
-} * Plug;
-
-ANN static struct Plug_ *new_plug(MemPool p, void *dl) {
-  struct Plug_ *plug = mp_calloc(p, Plug);
-  plug->dl           = dl;
-  plug->plugin = DLSYM(plug->dl, gwplugin_t, GWIMPORT_NAME);
-  plug->modini = DLSYM(plug->dl, gwmodini_t, GWMODINI_NAME);
-  plug->modend = DLSYM(plug->dl, gwmodend_t, GWMODEND_NAME);
-  plug->depend = DLSYM(plug->dl, gwdepend_t, GWDEPEND_NAME);
+ANN static struct Plug_ *new_dl_plug(MemPool p, void *dl, const char *name) {
+  Plug plug = new_plug(p);
+  plug->dl     = dl;
+  char s[256] = { [0] = 'g', [1] = 'w', [8] = '_' };
+  strcpy(s + 9, name);
+  memcpy(s + 2, "import", 6);
+  plug->plugin = DLSYM(plug->dl, gwplugin_t, s);
+  memcpy(s + 2, "modini", 6);
+  plug->modini = DLSYM(plug->dl, gwmodini_t, s);
+  memcpy(s + 2, "modend", 6);
+  plug->modend = DLSYM(plug->dl, gwmodend_t, s);
+  memcpy(s + 2, "driver", 6);
+  plug->driver = DLSYM(plug->dl, gwdriver_t, s);
+  memcpy(s + 2, "depend", 6);
+  plug->depend = DLSYM(plug->dl, gwdepend_t, s);
   return plug;
 }
 
@@ -52,7 +47,7 @@ ANN static void plug_get(struct PlugHandle *h, const m_str c) {
   memcpy(name, pname, sz);
   name[sz] = '\0';
   if (dl) {
-    Plug plug = new_plug(h->mp, dl);
+    Plug plug = new_dl_plug(h->mp, dl, name);
     map_set(h->map, (vtype)strdup(name), (vtype)plug);
   } else
     gw_err(_("{+R}error{0} in {/+}%s{0}."), DLERROR());
@@ -89,7 +84,7 @@ ANN m_bool plug_ini(const struct Gwion_ *gwion, const Vector list) {
     const m_str dir = (m_str)vector_at(list, i - 1);
     h.len           = strlen(dir);
     char name[PATH_MAX];
-    sprintf(name, "%s/*.so" /**/, dir);
+    sprintf(name, "%s/*.so", dir);
     plug_get_all(&h, name);
   }
   return GW_OK;
@@ -108,7 +103,7 @@ void free_plug(const Gwion gwion) {
     const gwmodend_t end  = plug->modend;
     if (end && plug->self) end(gwion, plug->self);
     free((m_str)VKEY(map, i));
-    DLCLOSE(plug->dl);
+    if(plug->dl) DLCLOSE(plug->dl);
   }
   map_release(map);
   mp_free2(gwion->mp, sizeof(Plugs), gwion->data->plugs);
@@ -120,19 +115,18 @@ ANN static void plug_free_arg(MemPool p, const Vector v) {
   free_vector(p, v);
 }
 
-ANN void set_module(const struct Gwion_ *gwion, const m_str name,
+ANN m_bool set_module(const struct Gwion_ *gwion, const m_str name,
                     void *const ptr) {
   const Map map = &gwion->data->plugs->map;
   for (m_uint j = 0; j < map_size(map); ++j) {
     if (!strcmp(name, (m_str)VKEY(map, j))) {
       Plug plug  = (Plug)VVAL(map, j);
       plug->self = ptr;
-      return;
+      return GW_OK;
     }
   }
-  const Plug plug  = new_plug(gwion->mp, name);
-  plug->self = ptr;
-  map_set(map, (m_uint)name, (m_uint)plug);
+  gw_err("module %s not found\n", name);
+  return GW_ERROR;
 }
 
 ANN m_bool plug_run(const struct Gwion_ *gwion, const Map mod) {
@@ -249,9 +243,11 @@ ANN m_bool driver_ini(const struct Gwion_ *gwion) {
   if (opt) *opt = '\0';
   for (m_uint i = 0; i < map_size(map); ++i) {
     const m_str name = (m_str)VKEY(map, i);
+    printf("%s %s\n", name, dname);
     if (!strcmp(name, dname)) {
+      puts("hey");
       const Plug     plug = (Plug)VVAL(map, i);
-      const f_bbqset drv  = DLSYM(plug->dl, f_bbqset, GWDRIVER_NAME);
+      const gwdriver_t drv  = plug->driver;
       if (!drv) break;
       gwion->vm->bbq->func = drv;
       if (opt) *opt = c;
index 2c020b3b45a735aa39325f611a295cec8e265633..edce9916cda03c0d970185f81fedb7eeeef787cc 100644 (file)
@@ -8,7 +8,7 @@
 #include "instr.h"
 #include "import.h"
 
-GWION_IMPORT(end_class) {
+GWION_IMPORT(non_driver) {
   (void)gwi;
   return GW_OK;
 }
index 97bb056dc57253dba533e6d9c6fd251c75fa08a5..6490254f609e00e4fe32a6877a572c013ff8ed52 100644 (file)
@@ -4,9 +4,9 @@
 #include "gwion_ast.h"
 #include "gwion_env.h"
 #include "vm.h"
+#include "plug.h"
 #include "driver.h"
 #include "gwion.h"
-#include "plug.h"
 
 static DRVRUN(simple_driver_run) {
   while (di->is_running) {
index 789b6ec843d24c71c48dbc887d4ad50a7dacc393..c44b1773c26e88e3d123d6218dad5e806820fc8d 100644 (file)
@@ -4,7 +4,6 @@
 #include "gwion_ast.h"
 #include "gwion_env.h"
 #include "vm.h"
-#include "driver.h"
 #include "gwion.h"
 #include "object.h"
 #include "instr.h"
@@ -12,6 +11,7 @@
 #include "import.h"
 #include "gwi.h"
 #include "plug.h"
+#include "driver.h"
 
 GWMODINI(get_module) {
   puts(__func__);
@@ -20,8 +20,8 @@ GWMODINI(get_module) {
 
 GWMODEND(get_module) { puts(__func__); }
 
-GWION_IMPORT(dummy_module) {
-  set_module(gwi->gwion, "get_module", (void *)1);
+GWION_IMPORT(get_module) {
+  CHECK_BB(set_module(gwi->gwion, "get_module", (void *)1));
   GWI_OB(get_module(gwi->gwion, "get_module"))
   puts("test passed");
   get_module(gwi->gwion, "non_existant_module");
index dffddb40f083c47d5b795add0e93e55397c14427..7deb36b5eff87e830b092cc76bbf0819a9d1efa4 100644 (file)
@@ -4,9 +4,9 @@
 #include "gwion_ast.h"
 #include "gwion_env.h"
 #include "vm.h"
+#include "plug.h"
 #include "driver.h"
 #include "gwion.h"
-#include "plug.h"
 
 GWMODINI(dummy_module) {
   puts(__func__);
index ad287f2e4240a4b46a2a67e2c673a746dc5e35cb..54a71d5033ae41decba23762f34dc56818c33006 100644 (file)
@@ -11,7 +11,7 @@
 
 MFUN(test_mfun) {}
 
-GWION_IMPORT(array_test) {
+GWION_IMPORT(array) {
   GWI_OB(gwi_class_ini(gwi, "ArrayTest", NULL))
   GWI_BB(gwi_item_ini(gwi, "int[]", "int_array"))
   GWI_BB(gwi_item_end(gwi, 0, obj, NULL)) // import array var
index aaf8567067f69725e611579ae55d648cb6097810..995a8ee4f1529f7cb99bb77e4b18317f5894c9c7 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "gwi.h"
 
-GWION_IMPORT(checker) {
+GWION_IMPORT(array_in_var_name) {
   gwi_item_ini(gwi, "int", "array[2][3]");
   return GW_OK;
 }
index 235246d0c7dff46a8096e42a6134dc5b71652313..ab791ebeaea3a2dbe0a37faa587bd517be63e237 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "gwi.h"
 
-GWION_IMPORT(checker) {
+GWION_IMPORT(array_in_var_name_fail) {
   GWI_BB(gwi_union_ini(gwi, "U"))
   GWI_BB(gwi_union_add(gwi, "int", "i"))
   return GW_OK;
index 04299027f171b2d7d74309316954fe8dbae24ac2..1cbd95aebafa8805e72fc15b6aa0319458f0e0fa 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "gwi.h"
 
-GWION_IMPORT(checker) {
+GWION_IMPORT(array_incoherent_in_var_name) {
   gwi_item_ini(gwi, "int", "array[2][3][]");
   return GW_OK;
 }
index c0c41944f9f68b02a1d0864c4d6a5ed714ab5969..5ad58b8c6354381cfb34b0cc6e6f3063ab3d39a9 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "gwi.h"
 
-GWION_IMPORT(checker) {
+GWION_IMPORT(array_invalid_in_var_name) {
   gwi_item_ini(gwi, "int", "array[.]");
   return GW_OK;
 }
index 47a4209b2e7c5bf36365a9b9d26665ea3a1480e0..4bd0dd2f114a5dc5e69cd989d015dc7c9bc6cd6a 100644 (file)
@@ -14,7 +14,7 @@ static m_int o_map_value;
 #define MAP_KEY(a) *((M_Object *)(a->data + o_map_key))
 #define MAP_VAL(a) *((M_Object *)(a->data + o_map_value))
 
-GWION_IMPORT(class_template) {
+GWION_IMPORT(class_template_invalid) {
   GWI_OB(gwi_class_ini(gwi, "ClassTemplate:[A,B]", NULL))
   GWI_BB(gwi_item_ini(gwi, "A[]", "key"))
   GWI_BB((o_map_key = gwi_item_end(gwi, ae_flag_none, obj, NULL)))
index 9745d80822eb90ae90c5d3bf9cc7a14d016e4b3c..5a23095949da6c9334e16d4f321bdc9fb7dcb80d 100644 (file)
@@ -12,7 +12,7 @@
 
 #define _XOPEN_SOURCE 500
 #include <string.h>
-GWION_IMPORT(compile_string) {
+GWION_IMPORT(compile_file) {
   DECL_OB(FILE *, file, = fopen("rm_me.gw", "w+"));
   fprintf(file, "1;");
   rewind(file);
index b66381f2782b5946dc7afa4f4e9800268529b502..d614ea95c489df7b516c981db137f355904ebd28 100644 (file)
@@ -15,4 +15,4 @@ GWION_IMPORT(deps) {
 }
 
 static const m_str deps[] = {"array", NULL};
-GWDEPEND { return deps; }
+GWDEPEND(deps) { return deps; }
index 2b10e1df78089a3392e101296d6e5d5ec5e26b39..ca107e848d7e3b3baefaeda2a92fddd16d400ece 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(empty_union_test) {
+GWION_IMPORT(empty_union) {
   GWI_BB(gwi_union_ini(gwi, "U"))
   GWI_OB(gwi_union_end(gwi, 0))
   return GW_OK;
index cac4005bcccbb41df05c951ff6246c5a743f1048..a9b35cec3d7358eafe39eac5dbc3fdbabec0eb4b 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(enum_test) {
+GWION_IMPORT(enum) {
   GWI_BB(gwi_enum_ini(gwi, "test"))
   GWI_BB(gwi_enum_add(gwi, "TYPED_ENUM0", 0))
   GWI_BB(gwi_enum_add(gwi, "TYPED_ENUM1", 1))
index cba7eb0f6339fd46da40cbd6b36a8ea835ade0a1..c2cafd572f2b242c3bcfa18b801d984c96577254 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(enum_test) {
+GWION_IMPORT(enum_fail) {
   GWI_BB(gwi_enum_ini(gwi, "int"))
   GWI_BB(gwi_enum_add(gwi, "zero", 0))
   GWI_OB(gwi_enum_end(gwi))
index 4ec536f15a92439adfb6be36e4cd057081ef6bda..63f85fddc18fec220829bb3fca7f8a989ea92626 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(enum_test) {
+GWION_IMPORT(enum_fail2) {
   GWI_BB(gwi_enum_ini(gwi, "tmp"))
   GWI_BB(gwi_enum_add(gwi, "adc", 0))
   GWI_OB(gwi_enum_end(gwi))
index 03c16b22c82ece04209871d459051c67510960a0..a6c4f0c6fdaa8566794f7cdcb504e0208814d1e7 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(enum_test) {
+GWION_IMPORT(enum_fail3) {
   GWI_BB(gwi_enum_ini(gwi, "test"))
   GWI_BB(gwi_enum_add(gwi, "adc", 0))
   GWI_BB(gwi_enum_ini(gwi, "error"))
index be46b12fe5137caf77b4939d4a13de7e349c8137..3633ba279748e9effee127fdf578c926df6d853b 100644 (file)
@@ -10,7 +10,7 @@
 #include "import.h"
 #include "gwi.h"
 
-GWION_IMPORT(extend_array_test) {
+GWION_IMPORT(extend_array) {
   GWI_OB(gwi_class_ini(gwi, "ArrayExt", "float[1]"))
   GWI_BB(gwi_class_end(gwi))
   return GW_OK;
index 329b036627bed563fdf3db56868a42bd992dcd66..1abbd5bf679277ec037799fbf3bf982617b8d3ed 100644 (file)
@@ -12,7 +12,7 @@
 #include "ugen.h"
 #include "gwi.h"
 
-GWION_IMPORT(fail_on_next_arg) {
+GWION_IMPORT(fail_on_next_arg2) {
   GWI_BB(gwi_func_ini(gwi, "void", "test"))
   GWI_BB(gwi_func_arg(gwi, "int", "i"))
   GWI_BB(gwi_func_arg(gwi, "i;t", "j"))
index 7ad1fd498cef6a3fbaeb8f9b9aff9f5ca311ab83..7a321531c7c4905152c8ba4c083cd28d77508344 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 
 static MFUN(test_func) { puts("test"); }
-GWION_IMPORT(typedef_test) {
+GWION_IMPORT(fptr) {
   GWI_BB(gwi_fptr_ini(gwi, "void", "PtrType"))
   GWI_OB(gwi_fptr_end(gwi, 0))
 
index efdcfd31f5242f97c822902af55dcb3a3c166edd..d46872ad7ebee2ed2f2fdc6bb2662b9819d91154 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(typedef_test) {
+GWION_IMPORT(fptr_tmpl) {
   Type t_func_typedef;
   GWI_OB((t_func_typedef = gwi_mk_type(gwi, "FuncTypedef", SZ_INT, NULL)))
   GWI_BB(gwi_fptr_ini(gwi, "int", "test:[test]"))
index 08483e404d0f84efa9f12f5198f3982dc54bc181..cee2c9d9e4ae62e34c27968020858147eb041807 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(typedef_test) {
+GWION_IMPORT(fptr_tmpl_fail) {
   GWI_BB(gwi_fptr_ini(gwi, "int~", "test:[A]"))
   GWI_OB(gwi_fptr_end(gwi, 0))
   return GW_OK;
index 9a53e09420093656a2f1c6abb57729ce0c18181c..6a9850ed6fafadbafdfb08145e31158eb19c8273 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "instr.h"
 
-GWION_IMPORT(too_many_args) {
+GWION_IMPORT(func_fail) {
   GWI_BB(gwi_func_ini(gwi, "int", "test"))
   GWI_BB(gwi_func_arg(gwi, "int", "i[][]"))
   GWI_BB(gwi_func_arg(gwi, "Int", "i"))
index e7fd722258df0e3a27374aa75796ab7559b45f8d..72d631e94e97c5ddcb4473cf3bcfafb23e660a3b 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "instr.h"
 
-GWION_IMPORT(too_many_args) {
+GWION_IMPORT(func_fail2) {
   GWI_BB(gwi_func_ini(gwi, ":[int]Ptr", "test"))
   GWI_BB(gwi_func_arg(gwi, "int", "i[][]"))
   GWI_BB(gwi_func_arg(gwi, "int", "me"))
index b2292dc1ca620514453c6f09d1ed455e6af8a965..6dbe5912ef47696edb8fc91bf5c634b63a8a7851 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "instr.h"
 
-GWION_IMPORT(too_many_args) {
+GWION_IMPORT(func_fail3) {
   GWI_BB(gwi_func_ini(gwi, "Ptr:[int]", "test:[A]"))
   GWI_BB(gwi_func_ini(gwi, "int", "test"))
   GWI_BB(gwi_func_arg(gwi, "int", "i[][]"))
index fca1a1080935c0b06e2d7220077778f939b23926..33bd39b61423dc56cdd7202d9444aaf6499020a1 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "instr.h"
 
-GWION_IMPORT(too_many_args) {
+GWION_IMPORT(func_fail4) {
   GWI_BB(gwi_func_ini(gwi, "Ptr:[int]", "test:[A]"))
   GWI_BB(gwi_func_arg(gwi, "int", "i[][]"))
   GWI_BB(gwi_item_end(gwi, ae_flag_none, num, 0))
index 8e007f590278a456100d5fe2b2c371b55b419d44..66b3f14fe4c83f4b340971952165481a9f75d2e5 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "instr.h"
 
-GWION_IMPORT(too_many_args) {
+GWION_IMPORT(func_subscript_not_empty) {
   GWI_BB(gwi_func_ini(gwi, "int[]", "test"))
   GWI_BB(gwi_func_end(gwi, (f_xfun)1, ae_flag_none))
   return GW_OK;
index 5b57176517fd17c9af292240127a888691693f63..1eef6c8a5ee6de58ba56f93531683c029148b85e 100644 (file)
@@ -11,7 +11,7 @@
 
 static SFUN(func_tmpl_xfun) {}
 
-GWION_IMPORT(func_tmpl) {
+GWION_IMPORT(func_tmpl_fail) {
   GWI_BB(gwi_func_ini(gwi, "voit", "test:[A]"))
   GWI_BB(gwi_func_end(gwi, func_tmpl_xfun, ae_flag_none))
   return GW_OK;
index 88a735d6d456a5975e58df87bb019c298acc8553..80d30711f6e1a8d371724b45afbe077f5cf20051 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "instr.h"
 
-GWION_IMPORT(too_many_args) {
+GWION_IMPORT(func_too_many_arg) {
   GWI_BB(gwi_func_ini(gwi, "int", "test"))
   GWI_BB(gwi_func_arg(gwi, "int", "i"))
   GWI_BB(gwi_func_arg(gwi, "int", "j"))
index b9c69bbe157931276e11048cab2e61f9f9a880f8..1494d3d307546e4d016a26d30dbb3c5a5e221b81 100644 (file)
@@ -14,7 +14,7 @@ SFUN(coverage_int) {
   *(m_int *)RETURN = *(m_int *)MEM(0);
 }
 
-GWION_IMPORT(global_func_test) {
+GWION_IMPORT(global_func) {
   GWI_BB(gwi_func_ini(gwi, "int", "test"))
   GWI_BB(gwi_func_arg(gwi, "int", "i"))
   GWI_BB(gwi_func_end(gwi, coverage_int, ae_flag_none))
index 44eeaf2d46d63012a31cbe0837ef6a8584936052..fee9f06330f7f0f93b67c6aec18f207550e66058 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "gwi.h"
 
-GWION_IMPORT(global_var_test) {
+GWION_IMPORT(global_var) {
   const M_Object o =
       new_object(gwi->gwion->mp, gwi->gwion->type[et_string]);
   STRING(o) = s_name(insert_symbol(gwi->gwion->st, "test"));
index 27cb25ad9cb6add30a640f7276c0c245ae8ac5da..4739c9d85189538210ae02ef938182ca6e2dcecb 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 
 static MFUN(test_mfun) {}
-GWION_IMPORT(invalid_arg_test) {
+GWION_IMPORT(invalid_arg) {
   GWI_OB(gwi_class_ini(gwi, "InvalidArg", NULL))
   GWI_BB(gwi_func_ini(gwi, "int[]", "func"))
   GWI_BB(gwi_func_arg(gwi, ".int", "i"))
index 339aae28ceaa4fabc87e1f13d18b4fee45e7ae31..12d841b1d5db2e4e147b3a2e4d4858a7ffe15800 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 
 static MFUN(test_mfun) {}
-GWION_IMPORT(invalid_array_test) {
+GWION_IMPORT(invalid_array) {
   GWI_OB(gwi_class_ini(gwi, "InvalidArray", NULL))
   GWI_BB(gwi_func_ini(gwi, "int[]", "func"))
   GWI_BB(gwi_func_arg(gwi, "int[][]", "i"))
index f30b7398abcc735edbbd76dffbf2af217e9617d5..c2a6e89f465374b4664812353133bc20810f05bd 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 
 static MFUN(test_mfun) {}
-GWION_IMPORT(invalid_func_test) {
+GWION_IMPORT(invalid_func) {
   GWI_OB(gwi_class_ini(gwi, "t_invalid_var_type", NULL))
   GWI_BB(gwi_func_ini(gwi, ".int", "i"))
   GWI_BB(gwi_func_end(gwi, test_mfun, ae_flag_static))
index 1ace8d46e28b6c26932be3227f3e29db2eade583..df7f9873b87ab3586019e4ea700cdcb7da181a4a 100644 (file)
@@ -12,7 +12,7 @@
 #include "ugen.h"
 #include "gwi.h"
 
-GWION_IMPORT(trig) {
+GWION_IMPORT(invalid_names) {
   DECL_OB(const Type, t0, = gwi_mk_type(gwi, "T~", SZ_INT, NULL));
   gwi_add_type(gwi, t0);
 
index bfa055fa012d5ef92f64fe60d133e01fd8a563a5..186e9c1eaf3056937c3b2efacdbccc0a9651efa9 100644 (file)
@@ -12,7 +12,7 @@
 #include "ugen.h"
 #include "gwi.h"
 
-GWION_IMPORT(trig) {
+GWION_IMPORT(invalid_names0) {
   DECL_OB(const Type, t0, = gwi_mk_type(gwi, "T~", SZ_INT, NULL));
   gwi_add_type(gwi, t0);
   return GW_OK;
index 5874a5d21011da7fc444b2accb9e3a6b6d3fe46d..b8aa08505e0d71a8df5fc9643ba0a39c331dd9a1 100644 (file)
@@ -12,7 +12,7 @@
 #include "ugen.h"
 #include "gwi.h"
 
-GWION_IMPORT(trig) {
+GWION_IMPORT(invalid_names1) {
   DECL_OB(const Type, t0, = gwi_mk_type(gwi, "T,", SZ_INT, NULL));
   gwi_add_type(gwi, t0);
   return GW_OK;
index a7cd0f9c985ecbe935670d9ac97058ddaedb2ff2..f62630cb7947aedcf5b0f08ea6af870b732ca3a5 100644 (file)
@@ -12,7 +12,7 @@
 #include "ugen.h"
 #include "gwi.h"
 
-GWION_IMPORT(trig) {
+GWION_IMPORT(invalid_names2) {
   DECL_OB(const Type, t0, = gwi_mk_type(gwi, "T<a>", SZ_INT, NULL));
   gwi_add_type(gwi, t0);
   return GW_OK;
index 02db53060d284b6e293f5340a81989066555c885..8c125b070312341717204de0aa7382ea9e5a6f08 100644 (file)
@@ -12,7 +12,7 @@
 #include "ugen.h"
 #include "gwi.h"
 
-GWION_IMPORT(trig) {
+GWION_IMPORT(invalid_names3) {
   DECL_OB(const Type, t0, = gwi_mk_type(gwi, "T:[a]", SZ_INT, NULL));
   gwi_add_type(gwi, t0);
   return GW_OK;
index 2656c619dcb64ccfc60e2bd09bd4af4750e6cc92..b735d71633cc80d14646158a1504032efb406b66 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(invalid_type1_test) {
+GWION_IMPORT(invalid_type1) {
   GWI_OB(gwi_class_ini(gwi, "invalid_var_type", NULL))
   GWI_BB(gwi_item_ini(gwi, "i|nt", "test"))
   GWI_BB(gwi_item_end(gwi, 0, num, 0))
index 6b123756dac427ac9c7e89901b939eb3f2631192..78b624bb9ea73fb0e1b99c8a3810c14bd95d1029 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(invalid_type2_test) {
+GWION_IMPORT(invalid_type2) {
   GWI_OB(gwi_class_ini(gwi, "invalid_var_type", NULL))
   GWI_BB(gwi_item_ini(gwi, ".int", "test"))
   GWI_BB(gwi_item_end(gwi, 0, num, 0))
index e33fa0fa5854e5838b7c762e82518819554d17aa..4c820386773bbfb882a3f7735a7d65ad2dfa5e81 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(invalid_type3_test) {
+GWION_IMPORT(invalid_type3) {
   GWI_OB(gwi_class_ini(gwi, "InvalidVarType", NULL))
   GWI_BB(gwi_item_ini(gwi, ".int", "test"))
   GWI_BB(gwi_item_end(gwi, 0, num, 0))
index 2d9959d3c4d248311e227ca217e48b44c894a2cf..cd2dd528ab3d1aa26542ba4409d18b57fd417e89 100644 (file)
@@ -10,7 +10,7 @@
 #include "gwi.h"
 
 MFUN(test_mfun) {}
-GWION_IMPORT(begin_class) {
+GWION_IMPORT(mk_type_array) {
   Type t_invalid_var_name;
   GWI_OB((t_invalid_var_name =
               gwi_mk_type(gwi, "invalid_var_name", SZ_INT, "Object[]")))
index 3d7dbd3b741a4e13d6606e44fb2edf254935d94a..beb3cce55bd9470d1af43b125c3ee37ae5aea11d 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(enum_test) {
+GWION_IMPORT(not_importing) {
   GWI_BB(gwi_enum_add(gwi, "adc", 0))
   return GW_OK;
 }
index 5b64aea6135566a77ad4e2510cb5a676eab1129f..be0cfa80a64fcd1bbdffdd857e70e89368c04be0 100644 (file)
@@ -11,7 +11,7 @@
 
 ANN static m_bool pass(Env nv NUSED, Ast *ast NUSED) { return GW_OK; }
 
-GWION_IMPORT(array_test) {
+GWION_IMPORT(pass) {
   gwi_register_pass(gwi, "dummy", pass);
   return GW_OK;
 }
index 4ed3043095705ee994e9feaeeef3e1fff93108d3..aa8e717391cab2ca50b008aeb63ddb5b8da7c2f8 100644 (file)
@@ -17,7 +17,7 @@ static ID_EMIT(spidem) {
   return GW_OK;
 }
 
-GWION_IMPORT(spid_test) {
+GWION_IMPORT(specialid_emit) {
   struct SpecialId_ spid = {
       .type = gwi->gwion->type[et_int], .em = spidem, .is_const = 1};
   gwi_specialid(gwi, "testid", &spid);
index 59b24170998e8e87332d40b7e9eeffbb3c0e274e..c8b1d85f1600a617f74ef50eedc97abe651b80d1 100644 (file)
@@ -10,7 +10,7 @@
 #include "import.h"
 #include "gwi.h"
 
-GWION_IMPORT(static_string_test) {
+GWION_IMPORT(static_string) {
   const M_Object o =
       new_object(gwi->gwion->mp, gwi->gwion->type[et_string]);
   STRING(o) = s_name(insert_symbol(gwi->gwion->st, "test static string"));
index acbffe279930f2d711866940e36754a52dbceabb..68128f1074dbbf8f5d1c6e8ad17eab7efeb89b08 100644 (file)
@@ -12,7 +12,7 @@
 #include "ugen.h"
 #include "gwi.h"
 
-GWION_IMPORT(str2td) {
+GWION_IMPORT(str2decl) {
   GWI_OB(gwi_class_ini(gwi, "Test", NULL))
   GWI_OB(gwi_class_ini(gwi, "Child", NULL))
   GWI_BB(gwi_class_end(gwi))
index 77ae59dd27a1551d8199e6b594b58329952b868d..0d3ad08dd1762a0ef5f7e4ad57f5adefd5b545ac 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 #include "gwi.h"
 
-GWION_IMPORT(global_var_test) {
+GWION_IMPORT(str2list_fail) {
   GWI_BB(gwi_item_ini(gwi, "SoemClass.child", "i"))
   GWI_BB(gwi_item_end(gwi, ae_flag_none, num, 0))
   return GW_OK;
index 641159131e8fec56ad86f5820f925aefc8fdf39b..6f767ae4bc5552c0878e272371b005139eb04aba 100644 (file)
@@ -12,7 +12,7 @@
 SFUN(coverage_int) { *(m_uint *)RETURN = 0; }
 SFUN(coverage_float) { *(m_float *)RETURN = 0; }
 
-GWION_IMPORT(coverage) {
+GWION_IMPORT(struct) {
   GWI_OB(gwi_struct_ini(gwi, "Struct"))
   GWI_BB(gwi_func_ini(gwi, "int", "i"))
   GWI_BB(gwi_func_end(gwi, coverage_int, ae_flag_static))
index 75c33ad148e8ec2d97e5ee1cab2a95bf36294bdc..ab585e6bdf801a9997c98ecc456d97502ac2f053 100644 (file)
@@ -9,7 +9,7 @@
 #include "import.h"
 
 static MFUN(template_arg_fun) {}
-GWION_IMPORT(template_arg_test) {
+GWION_IMPORT(template_arg) {
   GWI_OB(gwi_class_ini(gwi, "TemplateArg", NULL))
   GWI_BB(gwi_func_ini(gwi, "int", "set"))
   GWI_BB(gwi_func_arg(gwi, "Pair<Ptr<int>,float>", "test"))
index 634859ebc18f2b4dce8c6dc6e5af6f84e4f57265..1f5257c80ac443561882b6b7546c7630c862567c 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(typedef_test) {
+GWION_IMPORT(typedef) {
   GWI_OB(gwi_typedef_ini(gwi, "int", "Typedef"))
   GWI_OB(gwi_typedef_end(gwi, ae_flag_none))
   return GW_OK;
index 714e63bd15502d2641ca7dbbe9c15f4cfc4f2f7a..08aed56ecb4b96c6792b13f10df6aeb0b4319539 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(typedef_test) {
+GWION_IMPORT(typedef_fail) {
   GWI_BB(gwi_typedef_ini(gwi, "int", "Typedef:[A]"))
   GWI_BB(gwi_typedef_ini(gwi, "int", "Typedef:[A]"))
   return GW_OK;
index a82a59888907acfdfa5663f0b85a7c4c70847c31..26818f1dc7421a3591c700d2d03e23517d48ff49 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(typedef_test) {
+GWION_IMPORT(typedef_tmpl) {
   GWI_BB(gwi_typedef_ini(gwi, "Ptr:[A]", "Typedef:[A]"))
   GWI_OB(gwi_typedef_end(gwi, ae_flag_none))
   return GW_OK;
index 31c44a441cd4f478178c0784536e71c6e8bf8052..951ee97144b9a184cd7486818d8ea61a095aa1d6 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(union_test) {
+GWION_IMPORT(union) {
   GWI_BB(gwi_union_ini(gwi, "U"))
   GWI_BB(gwi_union_add(gwi, "float", "f"))
   GWI_BB(gwi_union_add(gwi, "int", "i"))
index 692679871aa60f7497f53519339e4e7b3c17a669..7ec3736474a450100bb9b8df23829e3a09aed31d 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(union_test) {
+GWION_IMPORT(union_fail_exp) {
   GWI_BB(gwi_union_ini(gwi, "U"))
   GWI_BB(gwi_union_add(gwi, "Float", "f"))
   GWI_BB(gwi_union_add(gwi, "int", "i"))
index 81d804fd1a0a5ce3b4f17f4e4fabb3a0f9032d06..bf75229416722a63afd252e59ceb693a4a9a6d0c 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(union_test) {
+GWION_IMPORT(union_name) {
   GWI_BB(gwi_union_ini(gwi, "my_union"))
   GWI_BB(gwi_union_add(gwi, "float", "f"))
   GWI_BB(gwi_union_add(gwi, "int", "i"))
index 771240755252642e0c6b9281397a0ffafa5c675b..9e4ced33596d94909a5a485a8e87822bfa88c2e3 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(union_test) {
+GWION_IMPORT(union_tmpl) {
   GWI_BB(gwi_union_ini(gwi, "U:[A]"))
   GWI_BB(gwi_union_add(gwi, "float", "f"))
   GWI_BB(gwi_union_add(gwi, "int", "i"))
index 771240755252642e0c6b9281397a0ffafa5c675b..25662a6cf5f13de2bdc2f11849f1c8c7abaee042 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(union_test) {
+GWION_IMPORT(union_tmpl_fail) {
   GWI_BB(gwi_union_ini(gwi, "U:[A]"))
   GWI_BB(gwi_union_add(gwi, "float", "f"))
   GWI_BB(gwi_union_add(gwi, "int", "i"))
index f0e48a374efe62eeed484c3f6893d7765fb943df..75c80e920272ff675222773c69ccf6c5e49e33f5 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(union_test) {
+GWION_IMPORT(union_tmpl_fail2) {
   GWI_BB(gwi_union_ini(gwi, "U:[A]"))
   GWI_BB(gwi_union_add(gwi, "float", "f"))
   GWI_BB(gwi_union_add(gwi, "int", "i"))
index 771240755252642e0c6b9281397a0ffafa5c675b..94e5a1a4dd066ca165150b34198b0f1b9f5981c1 100644 (file)
@@ -8,7 +8,7 @@
 #include "operator.h"
 #include "import.h"
 
-GWION_IMPORT(union_test) {
+GWION_IMPORT(union_tmpl_fail3) {
   GWI_BB(gwi_union_ini(gwi, "U:[A]"))
   GWI_BB(gwi_union_add(gwi, "float", "f"))
   GWI_BB(gwi_union_add(gwi, "int", "i"))
index 119a6ffbd15c22b4f700bd6449a1b8382981c9e7..e4fe869425153521c2f111b84508b2bc8b2ceee5 100644 (file)
@@ -11,7 +11,7 @@
 
 SFUN(coverage_int) { vm_remove(shred->info->vm, *(m_int *)MEM(0)); }
 
-GWION_IMPORT(gwion_remove_test) {
+GWION_IMPORT(vm_remove) {
   GWI_BB(gwi_func_ini(gwi, "int", "test"))
   GWI_BB(gwi_func_arg(gwi, "int", "i"))
   GWI_BB(gwi_func_end(gwi, coverage_int, ae_flag_none))
index 1c86d66a8b0eb64bbf3caf566a57f285594da5a0..19d68b19a1cd585ef9c90caf6461224487fe5148 100644 (file)
@@ -1,15 +1,14 @@
 #!/bin/bash
-# [test] #24
+# [test] #23
 
 n=0
 [ "$1" ] && n="$1"
 [ "$n" -eq 0 ] && n=1
 source tests/sh/common.sh
 
-run "$n" "test arguments" "examples/shred.gw:12" "file"
+run "$n" "test arguments" "examples/array_lit:12" "file"
 
 n=$((n+1))
-N=$(printf "% 4i" "$n")
 run "$n" "simple run" "" "file"
 
 # help
@@ -78,10 +77,6 @@ run "$n" "no pass" "-g nopass" "file"
 n=$((n+1))
 run "$n" "option needs argument" "-p" "file"
 
-# option needs argument
-n=$((n+1))
-echo "<<< __file__ >>>;" | run "$n" "stdin" "-" "file"
-
 # invalid global type
 n=$((n+1))
 run "$n" "invalid global type" "examples/complex/invalid_type0.gw examples/complex/invalid_type1.gw" "file"
diff --git a/util b/util
index 3779cb727cf3bf1dd379702b7f3665a1432041a2..d12448118cc4366fb8871f1f149626969fad775a 160000 (submodule)
--- a/util
+++ b/util
@@ -1 +1 @@
-Subproject commit 3779cb727cf3bf1dd379702b7f3665a1432041a2
+Subproject commit d12448118cc4366fb8871f1f149626969fad775a