diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-13 15:21:23 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-13 15:21:23 +0200 |
commit | 108a6216a987edaa68c8739468069f4e1fc6f60c (patch) | |
tree | 8f074e59a8a4a7a365f275373d86c693f60b612b /main.cpp | |
parent | 165c1ae6e4a4eea35d7ea2f2a6518ff36cf0112f (diff) |
more WIP
Diffstat (limited to 'main.cpp')
-rw-r--r-- | main.cpp | 53 |
1 files changed, 26 insertions, 27 deletions
@@ -10,39 +10,37 @@ using namespace std; -void load_museum(Museum & museum, int argc, char** argv) { - Deserializer d {}; - d.set_target(&museum); - - for (int i = 1; i < argc; i++) { - char * url = argv[i]; - FileStrategy * f = nullptr; - - try { - f = &FileReader::open(url); - } catch (Exception & e) { - printf("FileStrategy open error: %s\n", e.what()); - exit(EXIT_FAILURE); - } - - try { - Parser::parse(*f, d); - } catch (Exception & e) { - printf("Parser error: %s (%s)\n", e.what(), url); - exit(EXIT_FAILURE); - } - - f->close(); +static unique_ptr<FileStrategy> open(const char * url) noexcept { + try { + unique_ptr<FileStrategy> file = FileReader::open(url); + return file; + } catch (Exception & e) { + printf("FileStrategy open error: %s\n", e.what()); + exit(EXIT_FAILURE); } +} - d.finalize(); +static void parse(FileStrategy & file, Deserializer & deserializer, const char * url) noexcept { + try { + Parser::parse(file, deserializer); + } catch (Exception & e) { + printf("Parser error: %s (%s)\n", e.what(), url); + exit(EXIT_FAILURE); + } } int main(int argc, char** argv) { Museum museum {}; - museum.paused = true; + museum.set_pause(true); - load_museum(museum, argc, argv); + Deserializer deserializer { museum }; + + for (int i = 1; i < argc; i++) { + char * url = argv[i]; + + unique_ptr<FileStrategy> file = open(url); + parse(*file, deserializer, url); + } // printf("%s", museum.canvas.to_string(true).c_str()); // printf("%s", museum.people.to_string().c_str()); @@ -50,7 +48,8 @@ int main(int argc, char** argv) { ViewController controller { museum }; View view { controller }; - museum.paused = false; + museum.set_pause(false); + while (view.open); return EXIT_SUCCESS; |