xref: /onnv-gate/usr/src/cmd/man/src/util/nsgmls.src/include/ArcEngine.h (revision 0:68f95e015346)
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