lang: Add new ModuleClass structure
This commit is contained in:
parent
d2726005da
commit
5986d221c2
2 changed files with 22 additions and 1 deletions
|
@ -1007,6 +1007,10 @@ static struct object_call CLASSNAME_calls[] = {
|
|||
%s{.name = NULL, /* end */ },
|
||||
};
|
||||
|
||||
static ModuleClass CLASSNAME_module_class = {
|
||||
.fields_count = 0,
|
||||
};
|
||||
|
||||
static struct object_class CLASSNAME_class = {
|
||||
.cleanup = CLASSNAME_cleanup,
|
||||
.calls = &CLASSNAME_calls[0],
|
||||
|
@ -1022,18 +1026,27 @@ def generate_c_class(class_ir):
|
|||
|
||||
def generate_metadata(node):
|
||||
uses = ""
|
||||
classes_ = ""
|
||||
for use in node.uses:
|
||||
uses += "\t\"%s\",\n" % (use)
|
||||
for class_ in node.classes_:
|
||||
name = class_.name
|
||||
classes_ += "\t&%s_module_class,\n" % (name)
|
||||
return """static const char* module_uses[] = {
|
||||
%s NULL, /* end */
|
||||
};
|
||||
|
||||
static ModuleClass *module_classes[] = {
|
||||
%s NULL, /* end */
|
||||
};
|
||||
|
||||
const ModuleInfo module_info_%s = {
|
||||
.name = "%s",
|
||||
.uses = module_uses,
|
||||
.classes = module_classes,
|
||||
.create = %s_create,
|
||||
};
|
||||
""" % (uses, node.id, node.name, node.name)
|
||||
""" % (uses, classes_, node.id, node.name, node.name)
|
||||
|
||||
def generate_c_file(module_args, ir, source):
|
||||
metadata = ""
|
||||
|
|
|
@ -20,10 +20,18 @@ void modules_free(VmState state);
|
|||
// the compiler's C code generator. Do not use for regular C code.
|
||||
#ifdef MODULE_INTERNAL_API
|
||||
|
||||
// A class in a module
|
||||
struct module_class {
|
||||
int fields_count;
|
||||
};
|
||||
|
||||
typedef struct module_class ModuleClass;
|
||||
|
||||
// Data structure for creating a module
|
||||
struct module_info {
|
||||
const char *name;
|
||||
const char **uses;
|
||||
ModuleClass **classes;
|
||||
Object (*create)(VmState state, Object use_modules);
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue