diff options
author | Ash Wolf <ninji@wuffs.org> | 2022-10-07 20:02:27 +0100 |
---|---|---|
committer | Ash Wolf <ninji@wuffs.org> | 2022-10-07 20:02:27 +0100 |
commit | 97f6a2438df1eaeb4128ce36f29346ea38a3db4a (patch) | |
tree | 78260f8f0f2b84fc70fadb1e50e7fc104390eee4 /UMain.c | |
download | MWCC-97f6a2438df1eaeb4128ce36f29346ea38a3db4a.tar.gz MWCC-97f6a2438df1eaeb4128ce36f29346ea38a3db4a.zip |
first very unfinished commit lol
Diffstat (limited to '')
-rw-r--r-- | UMain.c | 110 |
1 files changed, 110 insertions, 0 deletions
@@ -0,0 +1,110 @@ +#include "UCWInterface.h" + +// 1C40 to 2008 + +// TODO move me +// TODO move me + +// unsure where this is, may be here, maybe not? +extern char cmdline_build_date[32]; +extern char cmdline_build_time[32]; + +int main(int argc, const char **argv) { + unsigned long cpu; + unsigned long os; + unsigned long language; + unsigned long plugintype; + unsigned long style; + int result; + + if (CmdLine_Initialize(argc, argv, CMDLINE_BUILD_DATE, CMDLINE_BUILD_TIME)) + exit(1); + + if (!RegisterStaticParserResources() || !RegisterStaticTargetResources()) { + fprintf(stderr, "\nFATAL ERROR: Could not initialize resource strings\n"); + exit(1); + } + + if (!RegisterStaticParserPlugins() || !RegisterStaticTargetPlugins()) { + fprintf(stderr, "\nFATAL ERROR: Could not initialize built-in plugins\n"); + exit(1); + } + + if (!RegisterStaticParserToolInfo()) { + fprintf(stderr, "\nFATAL ERROR: Could not initialize options\n"); + exit(1); + } + + GetStaticTarget(&cpu, &os); + SetBuildTarget(cpu, os); + GetStaticPluginType(&language, &plugintype); + SetPluginType(language, plugintype); + GetStaticParserPluginType(&style); + SetParserType(style); + + result = CmdLine_Driver(); + if (result) { + if (result == 2) + fprintf(stderr, "\nUser break, cancelled...\n"); + else + fprintf(stderr, "\nErrors caused tool to abort.\n"); + } + CmdLine_Terminate(result); + return result; +} + +int RegisterResource(const char *name, short index, void *data) { + Handle r; + + if (data == 0) { + r = GetResource('STR#', index); + if (r == 0) { + CLFatalError("Resource ('STR#',%d) '%s' not found in executable\n", index, name); + return 0; + } + ReleaseResource(r); + return 1; + } else { + return Res_AddResource(name, index, data); + } +} + +int RegisterStaticPlugin(const BasePluginCallbacks *cb) { + return Plugins_Add(Plugin_New(cb, 0, 0)); +} + +int RegisterStaticCompilerLinkerPlugin(const BasePluginCallbacks *cb, void *b) { + return Plugins_Add(Plugin_New(cb, b, 0)); +} + +int RegisterStaticParserPlugin(const BasePluginCallbacks *cb, void *b) { + return Plugins_Add(Plugin_New(cb, 0, b)); +} + +void SetBuildTarget(CWDataType cpu, CWDataType os) { + clState.cpu = cpu; + clState.os = os; +} + +void SetParserType(CWDataType style) { + clState.style = style; +} + +void SetPluginType(CWDataType language, CWDataType plugintype) { + clState.language = language; + clState.plugintype = plugintype; +} + +int CmdLine_Initialize(int argc, const char **argv, const char *buildDate, const char *buildTime) { + strncpy(cmdline_build_date, buildDate, sizeof(cmdline_build_date)); + strncpy(cmdline_build_time, buildTime, sizeof(cmdline_build_time)); + return Main_Initialize(argc, argv); +} + +int CmdLine_Driver() { + return Main_Driver(); +} + +int CmdLine_Terminate(int code) { + return Main_Terminate(code); +} |