bug fix and renamed file builtin object to files
This commit is contained in:
@@ -53,7 +53,7 @@ gcc -c src/runtime/o_staticmap.c -o temp/runtime/o_staticmap.o $FLAGS
|
|||||||
|
|
||||||
mkdir temp/builtins
|
mkdir temp/builtins
|
||||||
gcc -c src/builtins/basic.c -o temp/builtins/basic.o $FLAGS
|
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
|
gcc -c src/builtins/math.c -o temp/builtins/math.o $FLAGS
|
||||||
|
|
||||||
rm -rf build
|
rm -rf build
|
||||||
@@ -101,7 +101,7 @@ gcc src/main.c \
|
|||||||
temp/runtime/o_func.o \
|
temp/runtime/o_func.o \
|
||||||
temp/runtime/o_staticmap.o \
|
temp/runtime/o_staticmap.o \
|
||||||
temp/builtins/basic.o \
|
temp/builtins/basic.o \
|
||||||
temp/builtins/file.o \
|
temp/builtins/files.o \
|
||||||
temp/builtins/math.o \
|
temp/builtins/math.o \
|
||||||
temp/common/executable.o \
|
temp/common/executable.o \
|
||||||
-o build/noja $FLAGS -Lbuild/ -lnoja-compile -lnoja-objects -lm
|
-o build/noja $FLAGS -Lbuild/ -lnoja-compile -lnoja-objects -lm
|
||||||
|
|||||||
@@ -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);
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "basic.h"
|
#include "basic.h"
|
||||||
#include "file.h"
|
#include "files.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
|
|
||||||
static Object *bin_print(Runtime *runtime, Object **argv, unsigned int argc, Error *error)
|
static Object *bin_print(Runtime *runtime, Object **argv, unsigned int argc, Error *error)
|
||||||
@@ -130,7 +130,7 @@ static Object *bin_sliceBuffer(Runtime *runtime, Object **argv, unsigned int arg
|
|||||||
|
|
||||||
const StaticMapSlot bins_basic[] = {
|
const StaticMapSlot bins_basic[] = {
|
||||||
{ "math", SM_SMAP, .as_smap = bins_math, },
|
{ "math", SM_SMAP, .as_smap = bins_math, },
|
||||||
{ "file", SM_SMAP, .as_smap = bins_file, },
|
{ "files", SM_SMAP, .as_smap = bins_files, },
|
||||||
// { "net", SM_SMAP, .as_smap = bins_net, },
|
// { "net", SM_SMAP, .as_smap = bins_net, },
|
||||||
|
|
||||||
{ "newBuffer", SM_FUNCT, .as_funct = bin_newBuffer, .argc = 1 },
|
{ "newBuffer", SM_FUNCT, .as_funct = bin_newBuffer, .argc = 1 },
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
#include "../runtime/o_staticmap.h"
|
|
||||||
extern const StaticMapSlot bins_file[];
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include "file.h"
|
#include "files.h"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MD_READ = 0,
|
MD_READ = 0,
|
||||||
@@ -20,7 +20,7 @@ static Object *bin_openFile(Runtime *runtime, Object **argv, unsigned int argc,
|
|||||||
|
|
||||||
if(!Object_IsInt(argv[1]))
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ static Object *bin_read(Runtime *runtime, Object **argv, unsigned int argc, Erro
|
|||||||
|
|
||||||
if(!Object_IsBuffer(argv[1]))
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ static Object *bin_write(Runtime *runtime, Object **argv, unsigned int argc, Err
|
|||||||
|
|
||||||
if(!Object_IsBuffer(argv[1]))
|
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;
|
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);
|
return Object_FromString(ent->d_name, -1, heap, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
const StaticMapSlot bins_file[] = {
|
const StaticMapSlot bins_files[] = {
|
||||||
{ "READ", SM_INT, .as_int = MD_READ, },
|
{ "READ", SM_INT, .as_int = MD_READ, },
|
||||||
{ "WRITE", SM_INT, .as_int = MD_WRITE, },
|
{ "WRITE", SM_INT, .as_int = MD_WRITE, },
|
||||||
{ "APPEND", SM_INT, .as_int = MD_APPEND, },
|
{ "APPEND", SM_INT, .as_int = MD_APPEND, },
|
||||||
{ "openFile", SM_FUNCT, .as_funct = bin_openFile, .argc = 2, },
|
{ "openFile", SM_FUNCT, .as_funct = bin_openFile, .argc = 2, },
|
||||||
{ "openDir", SM_FUNCT, .as_funct = bin_openDir, .argc = 1, },
|
{ "openDir", SM_FUNCT, .as_funct = bin_openDir, .argc = 1, },
|
||||||
{ "nextDirItem", SM_FUNCT, .as_funct = bin_nextDirItem, .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, },
|
{ "write", SM_FUNCT, .as_funct = bin_write, .argc = 3, },
|
||||||
{ NULL, SM_END, {}, {} },
|
{ NULL, SM_END, {}, {} },
|
||||||
};
|
};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
#include "../runtime/o_staticmap.h"
|
||||||
|
extern const StaticMapSlot bins_files[];
|
||||||
@@ -44,8 +44,6 @@ static void print_error(const char *type, Error *error)
|
|||||||
|
|
||||||
static Executable *build(Source *src)
|
static Executable *build(Source *src)
|
||||||
{
|
{
|
||||||
// Compile the code. This section transforms
|
|
||||||
// a [Source] into an [Executable].
|
|
||||||
Executable *exe;
|
Executable *exe;
|
||||||
|
|
||||||
// Create a bump-pointer allocator to hold the AST.
|
// Create a bump-pointer allocator to hold the AST.
|
||||||
|
|||||||
Reference in New Issue
Block a user