Initial import of the CDE 2.1.30 sources from the Open Group.
[oweals/cde.git] / cde / programs / nsgmls / Notation.C
1 /* $XConsortium: Notation.C /main/1 1996/07/29 16:58:43 cde-hp $ */
2 // Copyright (c) 1994 James Clark
3 // See the file COPYING for copying permission.
4
5 #ifdef __GNUG__
6 #pragma implementation
7 #endif
8 #include "splib.h"
9 #include "Notation.h"
10 #include "ParserState.h"
11 #include "Sd.h"
12 #include "Syntax.h"
13 #include "MessageArg.h"
14 #include "ParserMessages.h"
15
16 #ifdef SP_NAMESPACE
17 namespace SP_NAMESPACE {
18 #endif
19
20 Notation::Notation(const StringC &name,
21                    const ConstPtr<StringResource<Char> > &dtdName,
22                    Boolean dtdIsBase)
23 : EntityDecl(name, notation, ndata, Location()), defined_(0)
24 {
25   setDeclIn(dtdName, dtdIsBase);
26 }
27
28 void Notation::setExternalId(const ExternalId &id, const Location &defLocation)
29 {
30   externalId_ = id;
31   defined_ = 1;
32   setDefLocation(defLocation);
33 }
34
35 void Notation::generateSystemId(ParserState &parser)
36 {
37   StringC str;
38   if (parser.entityCatalog().lookup(*this,
39                                     parser.syntax(),
40                                     parser.sd().docCharset(),
41                                     parser.messenger(),
42                                     str))
43     externalId_.setEffectiveSystem(str);
44   else if (parser.options().warnNotationSystemId)
45     parser.message(ParserMessages::cannotGenerateSystemIdNotation,
46                    StringMessageArg(name()));
47 }
48
49 const StringC *Notation::systemIdPointer() const
50 {
51   return externalId_.systemIdString();
52 }
53
54 const StringC *Notation::publicIdPointer() const
55 {
56   return externalId_.publicIdString();
57 }
58
59
60 #ifdef SP_NAMESPACE
61 }
62 #endif