feat: implement objects and classes
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
#ifndef FZL_CTABLE_H
|
||||
#define FZL_CTABLE_H
|
||||
|
||||
#include <common/fzl_types.h>
|
||||
#include <stddef.h>
|
||||
|
||||
// Class field descriptor
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
size_t slot_index;
|
||||
fzl_type_t type;
|
||||
} fzl_ctable_field_t;
|
||||
|
||||
// Class table descriptor
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
fzl_ctable_field_t *fields;
|
||||
size_t fields_count;
|
||||
size_t fields_remainder;
|
||||
} fzl_ctable_t;
|
||||
|
||||
// Allocate class table
|
||||
fzl_ctable_t *fzl_mkctable(char *name);
|
||||
|
||||
// Free class table
|
||||
void fzl_freectable(fzl_ctable_t *ct);
|
||||
|
||||
#endif // FZL_CTABLE_H
|
||||
@@ -10,7 +10,8 @@ typedef enum
|
||||
{
|
||||
FZL_SYMTABLE_RESULT_OK,
|
||||
FZL_SYMTABLE_RESULT_ERR,
|
||||
FZL_SYMTABLE_RESULT_EXISTS
|
||||
FZL_SYMTABLE_RESULT_EXISTS,
|
||||
FZL_SYMTABLE_RESULT_NOT_OBJECT
|
||||
} fzl_symtable_res_t;
|
||||
|
||||
// Symbols table entry descriptor
|
||||
@@ -19,6 +20,8 @@ typedef struct
|
||||
char *name;
|
||||
fzl_type_t type;
|
||||
size_t ip;
|
||||
|
||||
char *classname;
|
||||
} fzl_sym_t;
|
||||
|
||||
// Symbols table descriptor
|
||||
@@ -37,6 +40,10 @@ fzl_symtable_t *fzl_mksymt();
|
||||
fzl_symtable_res_t fzl_symt_put(fzl_symtable_t *symt, char *name,
|
||||
fzl_type_t type, uint64_t ip);
|
||||
|
||||
// Assign class name to object type
|
||||
fzl_symtable_res_t fzl_symt_setobjclass(fzl_symtable_t *symt, char *name,
|
||||
char *classname);
|
||||
|
||||
// Get entry from specified symtable
|
||||
bool fzl_symt_get(fzl_symtable_t *symt, char *name, fzl_sym_t *res);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user