|
#ifndef RAVA_REPL_SESSION_H
|
|
#define RAVA_REPL_SESSION_H
|
|
|
|
#include "repl_types.h"
|
|
#include "repl_history.h"
|
|
|
|
typedef struct {
|
|
RavaREPLVariable_t *variables;
|
|
size_t variable_count;
|
|
size_t variable_capacity;
|
|
|
|
RavaREPLMethod_t *methods;
|
|
size_t method_count;
|
|
size_t method_capacity;
|
|
|
|
RavaREPLClass_t *classes;
|
|
size_t class_count;
|
|
size_t class_capacity;
|
|
|
|
RavaProgram_t *program;
|
|
RavaClass_t *session_class;
|
|
RavaVM_t *vm;
|
|
|
|
RavaREPLHistory_t *history;
|
|
time_t start_time;
|
|
int execution_count;
|
|
bool debug_mode;
|
|
char *last_error;
|
|
} RavaREPLSession_t;
|
|
|
|
RavaREPLSession_t* rava_repl_session_create(void);
|
|
void rava_repl_session_destroy(RavaREPLSession_t *session);
|
|
|
|
bool rava_repl_session_add_variable(RavaREPLSession_t *session, const char *name,
|
|
const char *type_name, const char *initializer,
|
|
RavaValueType_e type, RavaValue_t value);
|
|
RavaREPLVariable_t* rava_repl_session_get_variable(RavaREPLSession_t *session, const char *name);
|
|
bool rava_repl_session_set_variable(RavaREPLSession_t *session, const char *name, RavaValue_t value);
|
|
void rava_repl_session_clear_variables(RavaREPLSession_t *session);
|
|
|
|
bool rava_repl_session_add_method(RavaREPLSession_t *session, const char *name,
|
|
const char *return_type, const char *source);
|
|
RavaREPLMethod_t* rava_repl_session_get_method(RavaREPLSession_t *session, const char *name);
|
|
|
|
bool rava_repl_session_add_class(RavaREPLSession_t *session, const char *name, const char *source);
|
|
RavaREPLClass_t* rava_repl_session_get_class(RavaREPLSession_t *session, const char *name);
|
|
|
|
char* rava_repl_session_generate_source(RavaREPLSession_t *session);
|
|
bool rava_repl_session_recompile(RavaREPLSession_t *session);
|
|
|
|
void rava_repl_session_set_error(RavaREPLSession_t *session, const char *error);
|
|
const char* rava_repl_session_get_error(RavaREPLSession_t *session);
|
|
|
|
#endif
|