From 6017f99b073340fc9694ab6a898ef18a87853e11 Mon Sep 17 00:00:00 2001 From: cozis Date: Sat, 12 Mar 2022 23:52:04 +0100 Subject: [PATCH] bug fix and renamed file builtin object to files --- build.sh | 4 ++-- samples/read_file.noja | 7 +++++++ src/builtins/basic.c | 6 +++--- src/builtins/file.h | 2 -- src/builtins/{file.c => files.c} | 12 ++++++------ src/builtins/files.h | 2 ++ src/main.c | 2 -- 7 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 samples/read_file.noja delete mode 100644 src/builtins/file.h rename src/builtins/{file.c => files.c} (93%) create mode 100644 src/builtins/files.h diff --git a/build.sh b/build.sh index f2f6d1f..627de43 100755 --- a/build.sh +++ b/build.sh @@ -53,7 +53,7 @@ gcc -c src/runtime/o_staticmap.c -o temp/runtime/o_staticmap.o $FLAGS mkdir temp/builtins gcc -c src/builtins/basic.c -o temp/builtins/basic.o $FLAGS -gcc -c src/builtins/file.c -o temp/builtins/file.o $FLAGS +gcc -c src/builtins/files.c -o temp/builtins/files.o $FLAGS gcc -c src/builtins/math.c -o temp/builtins/math.o $FLAGS rm -rf build @@ -101,7 +101,7 @@ gcc src/main.c \ temp/runtime/o_func.o \ temp/runtime/o_staticmap.o \ temp/builtins/basic.o \ - temp/builtins/file.o \ + temp/builtins/files.o \ temp/builtins/math.o \ temp/common/executable.o \ -o build/noja $FLAGS -Lbuild/ -lnoja-compile -lnoja-objects -lm diff --git a/samples/read_file.noja b/samples/read_file.noja new file mode 100644 index 0000000..86de4d5 --- /dev/null +++ b/samples/read_file.noja @@ -0,0 +1,7 @@ +buff = newBuffer(1024); +name = 'samples/bubble_sort.noja'; +hdle = files.openFile(name, files.READ); +n = files.read(hdle, buff); +resl = sliceBuffer(buff, 0, n); +print('Read ', n, ' bytes.\n'); +print(resl); \ No newline at end of file diff --git a/src/builtins/basic.c b/src/builtins/basic.c index 33582f6..f890a8e 100644 --- a/src/builtins/basic.c +++ b/src/builtins/basic.c @@ -2,7 +2,7 @@ #include #include #include "basic.h" -#include "file.h" +#include "files.h" #include "math.h" static Object *bin_print(Runtime *runtime, Object **argv, unsigned int argc, Error *error) @@ -129,8 +129,8 @@ static Object *bin_sliceBuffer(Runtime *runtime, Object **argv, unsigned int arg } const StaticMapSlot bins_basic[] = { - { "math", SM_SMAP, .as_smap = bins_math, }, - { "file", SM_SMAP, .as_smap = bins_file, }, + { "math", SM_SMAP, .as_smap = bins_math, }, + { "files", SM_SMAP, .as_smap = bins_files, }, // { "net", SM_SMAP, .as_smap = bins_net, }, { "newBuffer", SM_FUNCT, .as_funct = bin_newBuffer, .argc = 1 }, diff --git a/src/builtins/file.h b/src/builtins/file.h deleted file mode 100644 index ba697b9..0000000 --- a/src/builtins/file.h +++ /dev/null @@ -1,2 +0,0 @@ -#include "../runtime/o_staticmap.h" -extern const StaticMapSlot bins_file[]; \ No newline at end of file diff --git a/src/builtins/file.c b/src/builtins/files.c similarity index 93% rename from src/builtins/file.c rename to src/builtins/files.c index f68e6d2..90d2167 100644 --- a/src/builtins/file.c +++ b/src/builtins/files.c @@ -1,6 +1,6 @@ #include #include -#include "file.h" +#include "files.h" enum { MD_READ = 0, @@ -20,7 +20,7 @@ static Object *bin_openFile(Runtime *runtime, Object **argv, unsigned int argc, if(!Object_IsInt(argv[1])) { - Error_Report(error, 0, "Expected second argument to be an int, but it's a %s", Object_GetName(argv[0])); + Error_Report(error, 0, "Expected second argument to be an int, but it's a %s", Object_GetName(argv[1])); return NULL; } @@ -85,7 +85,7 @@ static Object *bin_read(Runtime *runtime, Object **argv, unsigned int argc, Erro if(!Object_IsBuffer(argv[1])) { - Error_Report(error, 0, "Expected first argument to be a buffer, but it's a %s", Object_GetName(argv[0])); + Error_Report(error, 0, "Expected second argument to be a buffer, but it's a %s", Object_GetName(argv[1])); return NULL; } @@ -146,7 +146,7 @@ static Object *bin_write(Runtime *runtime, Object **argv, unsigned int argc, Err if(!Object_IsBuffer(argv[1])) { - Error_Report(error, 0, "Expected first argument to be a buffer, but it's a %s", Object_GetName(argv[0])); + Error_Report(error, 0, "Expected second argument to be a buffer, but it's a %s", Object_GetName(argv[1])); return NULL; } @@ -265,14 +265,14 @@ static Object *bin_nextDirItem(Runtime *runtime, Object **argv, unsigned int arg return Object_FromString(ent->d_name, -1, heap, error); } -const StaticMapSlot bins_file[] = { +const StaticMapSlot bins_files[] = { { "READ", SM_INT, .as_int = MD_READ, }, { "WRITE", SM_INT, .as_int = MD_WRITE, }, { "APPEND", SM_INT, .as_int = MD_APPEND, }, { "openFile", SM_FUNCT, .as_funct = bin_openFile, .argc = 2, }, { "openDir", SM_FUNCT, .as_funct = bin_openDir, .argc = 1, }, { "nextDirItem", SM_FUNCT, .as_funct = bin_nextDirItem, .argc = 1, }, - { "read", SM_FUNCT, .as_funct = bin_read, .argc = 2, }, + { "read", SM_FUNCT, .as_funct = bin_read, .argc = 3, }, { "write", SM_FUNCT, .as_funct = bin_write, .argc = 3, }, { NULL, SM_END, {}, {} }, }; \ No newline at end of file diff --git a/src/builtins/files.h b/src/builtins/files.h new file mode 100644 index 0000000..f69f4e6 --- /dev/null +++ b/src/builtins/files.h @@ -0,0 +1,2 @@ +#include "../runtime/o_staticmap.h" +extern const StaticMapSlot bins_files[]; \ No newline at end of file diff --git a/src/main.c b/src/main.c index 406f15b..3f104a1 100644 --- a/src/main.c +++ b/src/main.c @@ -44,8 +44,6 @@ static void print_error(const char *type, Error *error) static Executable *build(Source *src) { - // Compile the code. This section transforms - // a [Source] into an [Executable]. Executable *exe; // Create a bump-pointer allocator to hold the AST.