add null object and add load const
This commit is contained in:
10
src/runtime/objects/null/null.c
Normal file
10
src/runtime/objects/null/null.c
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "../../internals/hashmap/hashmap.h"
|
||||
#include "../object.h"
|
||||
#include <string.h>
|
||||
#include "null.h"
|
||||
|
||||
ArgonObject *ARGON_NULL = NULL;
|
||||
|
||||
void init_null() {
|
||||
ARGON_NULL = init_argon_object();
|
||||
}
|
||||
10
src/runtime/objects/null/null.h
Normal file
10
src/runtime/objects/null/null.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef NULL_H
|
||||
#define NULL_H
|
||||
#include "../object.h"
|
||||
|
||||
extern ArgonObject *ARGON_NULL;
|
||||
|
||||
void init_null();
|
||||
|
||||
|
||||
#endif // NULL_H
|
||||
@@ -3,10 +3,17 @@
|
||||
#include "../runtime.h"
|
||||
#include <string.h>
|
||||
|
||||
ArgonObject *BASE_OBJECT = NULL;
|
||||
|
||||
void init_base_field() {
|
||||
add_field(BASE_OBJECT, "test", BASE_OBJECT);
|
||||
}
|
||||
|
||||
ArgonObject* init_argon_object() {
|
||||
ArgonObject *object = ar_alloc(sizeof(ArgonObject));
|
||||
object->type = TYPE_OBJECT;
|
||||
object->typeObject = NULL;
|
||||
object->baseObject = BASE_OBJECT;
|
||||
object->fields = createHashmap();
|
||||
memset(&object->value, 0, sizeof(object->value));
|
||||
return object;
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include <gmp.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
extern ArgonObject *BASE_OBJECT;
|
||||
|
||||
struct string_struct {
|
||||
char *data;
|
||||
size_t length;
|
||||
@@ -21,6 +23,7 @@ typedef enum {
|
||||
|
||||
struct ArgonObject {
|
||||
ArgonType type;
|
||||
ArgonObject *baseObject;
|
||||
ArgonObject *typeObject;
|
||||
struct hashmap *fields; // dynamic fields/methods
|
||||
union {
|
||||
@@ -32,6 +35,7 @@ struct ArgonObject {
|
||||
} value;
|
||||
};
|
||||
typedef struct ArgonObject ArgonObject;
|
||||
void init_base_field();
|
||||
|
||||
ArgonObject *init_argon_object();
|
||||
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
#include "../object.h"
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
ArgonObject *ARGON_STRING_TYPE = NULL;
|
||||
ArgonObject *ARGON_STRING_BASE = NULL;
|
||||
|
||||
void init_string_type() {
|
||||
ARGON_STRING_TYPE = init_argon_object();
|
||||
|
||||
ARGON_STRING_BASE = init_argon_object();
|
||||
|
||||
}
|
||||
|
||||
ArgonObject *init_string_object(char*data, size_t length) {
|
||||
printf("%s\n", data);
|
||||
ArgonObject * object = init_argon_object();
|
||||
object->typeObject = ARGON_STRING_TYPE;
|
||||
object->baseObject = ARGON_STRING_BASE;
|
||||
object->value.as_str.data = data;
|
||||
object->value.as_str.length = length;
|
||||
return object;
|
||||
|
||||
Reference in New Issue
Block a user