7d1af7b95952318daca15addb148d13b7686ca52
[oweals/cde.git] / cde / programs / nsgmls / MessageEventHandler.C
1 /* $XConsortium: MessageEventHandler.C /main/1 1996/07/29 16:57:23 cde-hp $ */
2 // Copyright (c) 1994 James Clark
3 // See the file COPYING for copying permission.
4
5 #include "splib.h"
6 #include "MessageEventHandler.h"
7 #include "SgmlParser.h"
8 #include "ParserOptions.h"
9 #ifdef __GNUG__
10 #include "Entity.h"
11 #endif
12
13 #ifdef SP_NAMESPACE
14 namespace SP_NAMESPACE {
15 #endif
16
17 MessageEventHandler::MessageEventHandler(Messenger *messenger,
18                                          const SgmlParser *parser)
19 : messenger_(messenger), parser_(parser)
20 {
21 }
22
23 void MessageEventHandler::subdocEntity(SubdocEntityEvent *event)
24 {
25   const SubdocEntity *entity = event->entity();
26   if (entity && parser_) {
27     SgmlParser::Params params;
28     params.subdocReferenced = 1;
29     params.subdocInheritActiveLinkTypes = 1;
30     params.origin = event->entityOrigin()->copy();
31     params.parent = parser_;
32     params.sysid = entity->externalId().effectiveSystemId();
33     params.entityType = SgmlParser::Params::subdoc;
34     SgmlParser parser(params);
35     const SgmlParser *oldParser = parser_;
36     parser_ = &parser;
37     parser.parseAll(*this);
38     parser_ = oldParser;
39   }
40   delete event;
41 }
42
43 void MessageEventHandler::message(MessageEvent *event)
44 {
45   messenger_->dispatchMessage(event->message());
46   ErrorCountEventHandler::message(event);
47 }
48
49 #ifdef SP_NAMESPACE
50 }
51 #endif