Update Makefile to make tapetests. Add tape_load to tape
authorMichael Welch <michaelgwelch@gmail.com>
Wed, 14 Mar 2012 01:51:21 +0000 (20:51 -0500)
committerMichael Welch <michaelgwelch@gmail.com>
Wed, 14 Mar 2012 01:51:21 +0000 (20:51 -0500)
csrc/Makefile
csrc/tape.c
csrc/tape.h

index 9254542..9d6f46f 100644 (file)
@@ -1,5 +1,5 @@
 #IDIR =../include
-INC=/usr/local/include/glib-2.0 /usr/local/lib/glib-2.0/include
+INC=/usr/local/include/glib-2.0 /usr/local/lib/glib-2.0/include /usr/local/include
 IDIR=$(foreach d, $(INC), -I$d)
 CC=gcc
 CFLAGS=$(IDIR) -g
@@ -7,7 +7,7 @@ CFLAGS=$(IDIR) -g
 ODIR=obj
 LDIR =/usr/local/lib
 
-LIBS=-lglib-2.0
+LIBS=-lglib-2.0 -lcunit
 
 #_DEPS = tape.h
 #DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
@@ -16,6 +16,9 @@ DEPS = tape.h
 _OBJ = brainmess.o tape.o execute.o program.o
 OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
 
+_TAPETESTOBJ = tapetests.o tape.o 
+TAPETESTOBJ = $(patsubst %,$(ODIR)/%,$(_TAPETESTOBJ))
+
 
 $(ODIR)/%.o: %.c $(DEPS)
        $(CC) -c -o $@ $< $(CFLAGS)
@@ -23,6 +26,9 @@ $(ODIR)/%.o: %.c $(DEPS)
 brainmess: $(OBJ)
        gcc -o $@ $^ $(CFLAGS) $(LIBS)
 
+tapetests: $(TAPETESTOBJ)
+       gcc -o $@ $^ $(CFLAGS) $(LIBS)
+
 .PHONY: clean
 
 clean:
index 87ba606..844a097 100644 (file)
@@ -34,6 +34,25 @@ Tape* tape_new()
     return newTape;
 }
 
+Tape* tape_load(int* nums, int length, int current)
+{
+    Tape* newTape = tape_new();
+
+    int i = 0;
+    GList* currentCell;
+    while (i < length)
+    {
+        tape_set(newTape, nums[i]);
+        if (i == current)
+        {
+            currentCell = newTape->currentCell;
+        }
+        i++;
+    }
+
+    newTape->currentCell = currentCell;
+    return newTape;
+}
 void tape_free(Tape *tape)
 {
     g_list_free(g_list_first(tape->currentCell));
index a06ffdc..493335c 100644 (file)
@@ -7,6 +7,7 @@ typedef struct _Tape Tape;
 
 
 Tape* tape_new();
+Tape* tape_load(int* nums, int length, int current);
 void tape_free(Tape *tape);
 gchar* tape_to_string(const Tape *tape);
 void tape_increment(Tape *tape);