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: SelectOneArcDirector(const Vector<StringC> & select,EventHandler & eh)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