Objects Compiled
This commit is contained in:
parent
ba95747ef9
commit
64e1f78739
52 changed files with 384 additions and 370 deletions
75
Objects/applications/test.cpp
Normal file
75
Objects/applications/test.cpp
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
|
||||
#include "primitives/primitives.h"
|
||||
|
||||
#include "compiler/function.h"
|
||||
#include "interpreter/interpreter.h"
|
||||
|
||||
#include "CmdArgParser.h"
|
||||
|
||||
void compile(char argc, const char* argv[]) {
|
||||
tp::CmdArgParser args = {
|
||||
{ "script", tp::CmdArgParser::Arg::FILE_IN },
|
||||
{ "out", "out.mo" }
|
||||
};
|
||||
|
||||
if (!args.parse(argc, argv, true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& script_file = args.getFile("script");
|
||||
auto outpath = args.getString("out");
|
||||
|
||||
tp::string script;
|
||||
script.loadFile(&script_file);
|
||||
|
||||
auto method = obj::MethodObject::create(script);
|
||||
|
||||
obj::NDO->save(method, outpath);
|
||||
}
|
||||
|
||||
void execute(char argc, const char* argv[]) {
|
||||
tp::CmdArgParser args = {
|
||||
{ "object_path", tp::CmdArgParser::Arg::STR },
|
||||
{ "debug", false }
|
||||
};
|
||||
|
||||
if (!args.parse(argc, argv, true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto object_path = args.getString("object_path");
|
||||
auto debug = args.getBool("debug");
|
||||
|
||||
auto obj = obj::NDO->load(object_path);
|
||||
if (!obj) {
|
||||
printf("Invalid Object File\n");
|
||||
return;
|
||||
}
|
||||
|
||||
NDO_CASTV(obj::MethodObject, obj, method);
|
||||
if (!method) {
|
||||
printf("Object Is Not A Method\n");
|
||||
return;
|
||||
}
|
||||
|
||||
obj::Interpreter interpreter;
|
||||
interpreter.execAll(method);
|
||||
}
|
||||
|
||||
|
||||
int main(char argc, const char* argv[]) {
|
||||
|
||||
tp::ModuleManifest* ModuleDependencies[] = { &obj::gModuleObjects, NULL };
|
||||
tp::ModuleManifest TestModule("Test", NULL, NULL, ModuleDependencies);
|
||||
if (!TestModule.initialize()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef OBC
|
||||
compile(argc, argv);
|
||||
#elif OBVM
|
||||
execute(argc, argv);
|
||||
#endif // OBC
|
||||
|
||||
TestModule.deinitialize();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue