1 // Copyright (c) 1994 James Clark
2 // See the file COPYING for copying permission.
4 #ifndef SgmlParser_INCLUDED
5 #define SgmlParser_INCLUDED 1
14 #include "EntityManager.h"
19 namespace SP_NAMESPACE {
24 class UnivCharsetDesc;
27 template<class T> class Ptr;
28 template<class T> class ConstPtr;
29 class InputSourceOrigin;
34 class SP_API SgmlParser {
36 struct SP_API Params {
43 EntityType entityType; // defaults to document
44 StringC sysid; // must be specified
45 Ptr<InputSourceOrigin> origin;
46 Ptr<EntityManager> entityManager;
47 const SgmlParser *parent;
49 ConstPtr<Syntax> prologSyntax;
50 ConstPtr<Syntax> instanceSyntax;
52 const ParserOptions *options;
53 PackedBoolean subdocInheritActiveLinkTypes;
54 // referenced subdocs count against SUBDOC limit in SGML declaration
55 PackedBoolean subdocReferenced;
58 SgmlParser(); // must call init
59 SgmlParser(const Params ¶ms);
60 void init(const Params ¶ms);
63 void parseAll(EventHandler &, const volatile sig_atomic_t *cancelPtr = 0);
64 ConstPtr<Sd> sd() const;
65 ConstPtr<Syntax> instanceSyntax() const;
66 ConstPtr<Syntax> prologSyntax() const;
67 EntityManager &entityManager() const;
68 const EntityCatalog &entityCatalog() const;
69 const ParserOptions &options() const;
70 // Only to be called after the parse has ended.
72 void activateLinkType(const StringC &);
73 void allLinkTypesActivated();
74 void swap(SgmlParser &);
76 friend class PiAttspecParser;
78 SgmlParser(const SgmlParser &);
79 void operator=(const SgmlParser &);
87 #endif /* not SgmlParser_INCLUDED */