From 4296951e94a43c723e9522b588cab178eb66d144 Mon Sep 17 00:00:00 2001 From: Søren Sandmann Date: Tue, 21 Dec 2004 23:57:26 +0000 Subject: New directory with the beginning of a .dvi backend. Tue Dec 21 18:55:06 2004 Søren Sandmann * dvi/*: New directory with the beginning of a .dvi backend. --- (limited to 'dvi/model.hh') diff --git a/dvi/model.hh b/dvi/model.hh new file mode 100755 index 0000000..749c640 --- /dev/null +++ b/dvi/model.hh @@ -0,0 +1,61 @@ +#ifndef MODEL_HH +#define MODEL_HH + +#include "dl-refcounted.hh" +#include "dl-dvi-file.hh" +#include "observer.hh" +#include + +enum ModelState { + HAS_FILE, + NO_FILE, + ERROR +}; + +using DviLib::FileLoader; +using DviLib::DviFile; +using DviLib::RefCounted; +using std::string; + +class Model : public RefCounted { + ModelState state; + DviFile *dvi_file; + string file_name; + string err_msg; + vector observers; + +public: + Model (string file_name); + Model (void); + void add_observer (Observer& o) + { + observers.push_back (&o); + } + void notify (void) + { + typedef vector ::const_iterator It; + for (It i = observers.begin(); i != observers.end(); ++i) + (*i)->notify (); + } + ModelState get_state (void) { return state; } + string get_error (void) { + if (state == ERROR) + return err_msg; + else + return ""; + }; + DviFile *get_dvi_file (void) { + if (state == HAS_FILE) + return dvi_file; + else + return 0; + }; + string get_file_name (void) { + if (state == HAS_FILE) + return file_name; + else + return ""; + }; +}; + +#endif -- cgit v0.9.1