1 // Copyright (c) 1995 James Clark
2 // See the file COPYING for copying permission.
3 #pragma ident	"%Z%%M%	%I%	%E% SMI"
4 
5 #ifndef EntityDecl_INCLUDED
6 #define EntityDecl_INCLUDED 1
7 
8 #ifdef __GNUG__
9 #pragma interface
10 #endif
11 
12 #include "NamedResource.h"
13 #include "Ptr.h"
14 #include "StringResource.h"
15 #include "Location.h"
16 #include "types.h"
17 
18 #ifdef SP_NAMESPACE
19 namespace SP_NAMESPACE {
20 #endif
21 
22 class SP_API EntityDecl : public NamedResource {
23 public:
24   enum DeclType { generalEntity, parameterEntity, doctype, linktype,
25 		  notation, sgml };
26   enum DataType { sgmlText, pi, cdata, sdata, ndata, subdoc };
27   EntityDecl(const StringC &, DeclType declType, DataType dataType,
28 	     const Location &defLocation);
29   DataType dataType() const;
30   DeclType declType() const;
31   const Location &defLocation() const;
32   Boolean declInDtdIsBase() const;
33   Boolean declInActiveLpd() const;
34   const StringC *declInDtdNamePointer() const;
35   const StringC *declInLpdNamePointer() const;
36   void setDeclIn(const ConstPtr<StringResource<Char> > &dtdName,
37 		 Boolean dtdIsBase,
38 		 const ConstPtr<StringResource<Char> > &lpdName,
39 		 Boolean lpdIsActive);
40   void setDeclIn(const ConstPtr<StringResource<Char> > &dtdName,
41 		 Boolean dtdIsBase);
42   void setDefLocation(const Location &);
43   virtual const StringC *systemIdPointer() const;
44   virtual const StringC *publicIdPointer() const;
45   virtual const StringC *effectiveSystemIdPointer() const;
46 private:
47   DeclType declType_;
48   DataType dataType_;
49   PackedBoolean dtdIsBase_;
50   PackedBoolean lpdIsActive_;
51   Location defLocation_;
52   ConstPtr<StringResource<Char> > dtdName_;
53   ConstPtr<StringResource<Char> > lpdName_;
54 };
55 
56 inline
defLocation()57 const Location &EntityDecl::defLocation() const
58 {
59   return defLocation_;
60 }
61 
62 inline
declType()63 EntityDecl::DeclType EntityDecl::declType() const
64 {
65   return declType_;
66 }
67 
68 inline
dataType()69 EntityDecl::DataType EntityDecl::dataType() const
70 {
71   return dataType_;
72 }
73 
74 inline
declInDtdNamePointer()75 const StringC *EntityDecl::declInDtdNamePointer() const
76 {
77   return dtdName_.pointer();
78 }
79 
80 inline
declInLpdNamePointer()81 const StringC *EntityDecl::declInLpdNamePointer() const
82 {
83   return lpdName_.pointer();
84 }
85 
86 inline
declInDtdIsBase()87 Boolean EntityDecl::declInDtdIsBase() const
88 {
89   return dtdIsBase_;
90 }
91 
92 inline
declInActiveLpd()93 Boolean EntityDecl::declInActiveLpd() const
94 {
95   return lpdIsActive_;
96 }
97 
98 inline
setDefLocation(const Location & loc)99 void EntityDecl::setDefLocation(const Location &loc)
100 {
101   defLocation_ = loc;
102 }
103 
104 #ifdef SP_NAMESPACE
105 }
106 #endif
107 
108 #endif /* not EntityDecl_INCLUDED */
109