---
 software/include/fpvm/fpvm.h |    4 ++--
 software/libfpvm/fpvm.c      |   37 +++++++++++++------------------------
 2 files changed, 15 insertions(+), 26 deletions(-)

diff --git a/software/include/fpvm/fpvm.h b/software/include/fpvm/fpvm.h
index 7b79e57..2b0ed48 100644
--- a/software/include/fpvm/fpvm.h
+++ b/software/include/fpvm/fpvm.h
@@ -42,13 +42,13 @@ struct fpvm_binding {
        int isvar;
        union {
                float c;
-               char v[FPVM_MAXSYMLEN];
+               const char *v;
        } b;
 };
 
 struct fpvm_tbinding {
        int reg;
-       char sym[FPVM_MAXSYMLEN];
+       const char *sym;
 };
 
 enum {
diff --git a/software/libfpvm/fpvm.c b/software/libfpvm/fpvm.c
index 0d169c7..87e938e 100644
--- a/software/libfpvm/fpvm.c
+++ b/software/libfpvm/fpvm.c
@@ -23,6 +23,7 @@
 #include <fpvm/fpvm.h>
 
 #include "ast.h"
+#include "unique.h"
 #include "parser_helper.h"
 #include "parser.h"
 
@@ -39,30 +40,18 @@ void fpvm_init(struct fpvm_fragment *fragment, int 
vector_mode)
 
        fragment->nbindings = 3;
        fragment->bindings[0].isvar = 1;
-       fragment->bindings[0].b.v[0] = '_';
-       fragment->bindings[0].b.v[1] = 'X';
-       fragment->bindings[0].b.v[2] = 'i';
-       fragment->bindings[0].b.v[3] = 0;
+       fragment->bindings[0].b.v = unique("_Xi");
        fragment->bindings[1].isvar = 1;
-       fragment->bindings[1].b.v[0] = '_';
-       fragment->bindings[1].b.v[1] = 'Y';
-       fragment->bindings[1].b.v[2] = 'i';
-       fragment->bindings[1].b.v[3] = 0;
+       fragment->bindings[1].b.v = unique("_Yi");
        /* Prevent binding of R2 (we need it for "if") */
        fragment->bindings[2].isvar = 1;
-       fragment->bindings[2].b.v[0] = 0;
+       fragment->bindings[2].b.v = "";
 
        fragment->ntbindings = 2;
        fragment->tbindings[0].reg = -1;
-       fragment->tbindings[0].sym[0] = '_';
-       fragment->tbindings[0].sym[1] = 'X';
-       fragment->tbindings[0].sym[2] = 'o';
-       fragment->tbindings[0].sym[3] = 0;
+       fragment->tbindings[0].sym = unique("_Xo");
        fragment->tbindings[1].reg = -2;
-       fragment->tbindings[1].sym[0] = '_';
-       fragment->tbindings[1].sym[1] = 'Y';
-       fragment->tbindings[1].sym[2] = 'o';
-       fragment->tbindings[1].sym[3] = 0;
+       fragment->tbindings[1].sym = unique("_Yo");
 
        fragment->nrenamings = 0;
 
@@ -101,7 +90,7 @@ int fpvm_bind(struct fpvm_fragment *fragment, const char 
*sym)
        }
        r = fragment->nbindings++;
        fragment->bindings[r].isvar = 1;
-       strcpy(fragment->bindings[r].b.v, sym);
+       fragment->bindings[r].b.v = sym;
        if(fragment->bind_callback != NULL)
                fragment->bind_callback(fragment->bind_callback_user, sym, r);
        return r;
@@ -109,22 +98,22 @@ int fpvm_bind(struct fpvm_fragment *fragment, const char 
*sym)
 
 void fpvm_set_xin(struct fpvm_fragment *fragment, const char *sym)
 {
-       strcpy(fragment->bindings[0].b.v, sym);
+       fragment->bindings[0].b.v = sym;
 }
 
 void fpvm_set_yin(struct fpvm_fragment *fragment, const char *sym)
 {
-       strcpy(fragment->bindings[1].b.v, sym);
+       fragment->bindings[1].b.v = sym;
 }
 
 void fpvm_set_xout(struct fpvm_fragment *fragment, const char *sym)
 {
-       strcpy(fragment->tbindings[0].sym, sym);
+       fragment->tbindings[0].sym = sym;
 }
 
 void fpvm_set_yout(struct fpvm_fragment *fragment, const char *sym)
 {
-       strcpy(fragment->tbindings[1].sym, sym);
+       fragment->tbindings[1].sym = sym;
 }
 
 static int lookup(struct fpvm_fragment *fragment, const char *sym)
@@ -152,7 +141,7 @@ static int tbind(struct fpvm_fragment *fragment, const char 
*sym)
                return FPVM_INVALID_REG;
        }
        fragment->tbindings[fragment->ntbindings].reg = fragment->next_sur;
-       strcpy(fragment->tbindings[fragment->ntbindings].sym, sym);
+       fragment->tbindings[fragment->ntbindings].sym = sym;
        fragment->ntbindings++;
        return fragment->next_sur--;
 }
@@ -173,7 +162,7 @@ static int rename_reg(struct fpvm_fragment *fragment, const 
char *sym, int reg)
                return 0;
        }
        fragment->renamings[fragment->nrenamings].reg = reg;
-       strcpy(fragment->renamings[fragment->nrenamings].sym, sym);
+       fragment->renamings[fragment->nrenamings].sym = sym;
        fragment->nrenamings++;
        return 1;
 }
-- 
1.7.1

_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkymist@Freenode

Reply via email to