aboutsummaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-10-13 15:21:23 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-10-13 15:21:23 +0200
commit108a6216a987edaa68c8739468069f4e1fc6f60c (patch)
tree8f074e59a8a4a7a365f275373d86c693f60b612b /main.cpp
parent165c1ae6e4a4eea35d7ea2f2a6518ff36cf0112f (diff)
more WIP
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp53
1 files changed, 26 insertions, 27 deletions
diff --git a/main.cpp b/main.cpp
index 50565a0..40be196 100644
--- a/main.cpp
+++ b/main.cpp
@@ -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;