1
0
mirror of https://github.com/janet-lang/janet synced 2025-10-30 23:23:07 +00:00

Begin implementing module system.

This commit is contained in:
Calvin Rose
2017-04-12 21:21:46 -04:00
parent ded3d06387
commit e28e31f818
10 changed files with 90 additions and 62 deletions

View File

@@ -20,14 +20,14 @@ struct GstCompiler {
/* Initialize the Compiler */
void gst_compiler(GstCompiler *c, Gst *vm);
/* Register an environment for compilation */
void gst_compiler_env(GstCompiler *c, GstValue env);
/* Add many globals */
void gst_compiler_globals(GstCompiler *c, GstObject *env);
/* Register a global for the compilation environment. */
void gst_compiler_add_global(GstCompiler *c, const char *name, GstValue x);
void gst_compiler_global(GstCompiler *c, const char *name, GstValue x);
/* Register a global c function for the compilation environment. */
void gst_compiler_add_global_cfunction(GstCompiler *c, const char *name, GstCFunction f);
/* Use a module */
void gst_compiler_usemodule(GstCompiler *c, const char *modulename);
/* Compile a function that evaluates the given form. */
GstFunction *gst_compiler_compile(GstCompiler *c, GstValue form);

View File

@@ -131,6 +131,15 @@ typedef union GstValueUnion GstValueUnion;
/* Definitely implementation details */
typedef struct GstBucket GstBucket;
/* API Types */
typedef struct GstModuleItem GstModuleItem;
/* C Api data types */
struct GstModuleItem {
const char *name;
GstCFunction data;
};
/* Union datatype */
union GstValueUnion {
GstBoolean boolean;
@@ -174,7 +183,7 @@ struct GstThread {
} status;
};
/* A dynamic array type. Useful for implementing a stack. */
/* A dynamic array type. */
struct GstArray {
uint32_t count;
uint32_t capacity;
@@ -257,7 +266,7 @@ struct Gst {
/* Thread */
GstThread *thread;
/* A GC root */
GstValue rootenv;
GstObject *rootenv;
/* Return state */
const char *crash;
GstValue ret; /* Returned value from gst_start. Also holds errors. */
@@ -462,4 +471,11 @@ GstValue gst_arg(Gst *vm, uint16_t index);
void gst_set_arg(Gst *vm, uint16_t index, GstValue x);
uint16_t gst_count_args(Gst *vm);
/***/
/* C Api */
/***/
GstObject *gst_c_module(Gst *vm, const GstModuleItem *mod);
void gst_c_register(Gst *vm, const char *packagename, GstObject *mod);
#endif // GST_H_defined

View File

@@ -2,10 +2,9 @@
#define stl_h_INCLUDED
#include <gst/gst.h>
#include <gst/compile.h>
/* Load the standard library */
void gst_stl_load(GstCompiler *c);
void gst_stl_load(Gst *vm);
#endif // stl_h_INCLUDED