Home | History | Annotate | Download | only in include
      1 // Copyright (c) 1996 James Clark
      2 // See the file COPYING for copying permission.
      3 #pragma ident	"%Z%%M%	%I%	%E% SMI"
      4 
      5 #ifndef ArcEngine_INCLUDED
      6 #define ArcEngine_INCLUDED 1
      7 
      8 #ifdef __GNUG__
      9 #pragma interface
     10 #endif
     11 
     12 #include "Event.h"
     13 #include "Vector.h"
     14 #include "SgmlParser.h"
     15 #include <stddef.h>
     16 
     17 #ifdef SP_NAMESPACE
     18 namespace SP_NAMESPACE {
     19 #endif
     20 
     21 class SP_API ArcDirector {
     22 public:
     23   virtual EventHandler *arcEventHandler(const Notation *,
     24 					const Vector<StringC> &,
     25 					const SubstTable<Char> *) = 0;
     26 };
     27 
     28 class SP_API SelectOneArcDirector : public ArcDirector, public Messenger {
     29 public:
     30   SelectOneArcDirector(const Vector<StringC> &select, EventHandler &eh)
     31     : select_(select), eh_(&eh) { }
     32   EventHandler *arcEventHandler(const Notation *,
     33 				const Vector<StringC> &,
     34 				const SubstTable<Char> *);
     35   void dispatchMessage(const Message &);
     36   void dispatchMessage(Message &);
     37 private:
     38   Vector<StringC> select_;
     39   EventHandler *eh_;
     40 };
     41 
     42 class SP_API ArcEngine {
     43 public:
     44   static void parseAll(SgmlParser &,
     45 		       Messenger &,
     46 		       ArcDirector &,
     47 		       const volatile sig_atomic_t *cancelPtr = 0);
     48 private:
     49   ArcEngine();
     50 };
     51 
     52 #ifdef SP_NAMESPACE
     53 }
     54 #endif
     55 
     56 #endif /* not ArcEngine_INCLUDED */
     57