1 /* $XConsortium: ExternalId.h /main/1 1996/07/29 16:51:56 cde-hp $ */
2 // Copyright (c) 1994 James Clark
3 // See the file COPYING for copying permission.
5 #ifndef ExternalId_INCLUDED
6 #define ExternalId_INCLUDED 1
18 namespace SP_NAMESPACE {
23 class SP_API PublicId {
47 Boolean getOwnerType(OwnerType &) const;
48 Boolean getOwner(StringC &) const;
49 Boolean getTextClass(TextClass &) const;
50 Boolean getUnavailable(Boolean &) const;
51 Boolean getDescription(StringC &) const;
52 Boolean getLanguage(StringC &) const;
53 Boolean getDesignatingSequence(StringC &) const;
54 Boolean getDisplayVersion(StringC &) const;
55 // If it's not a valid formal public identifier, return 0
56 // and set error, otherwise return 1.
57 // charset describes the character set to use for parsing the
59 Boolean init(Text &, const CharsetInfo &, Char space,
60 const MessageType1 *&error);
61 const StringC &string() const;
62 const Text &text() const;
64 static Boolean nextField(Char solidus,
67 const Char *&fieldStart,
69 static Boolean lookupTextClass(const StringC &, const CharsetInfo &,
71 static const char *const textClasses[];
73 PackedBoolean formal_;
77 PackedBoolean unavailable_;
79 StringC languageOrDesignatingSequence_;
80 PackedBoolean haveDisplayVersion_;
81 StringC displayVersion_;
85 class SP_API ExternalId {
88 const StringC *systemIdString() const;
89 const StringC *publicIdString() const;
90 const StringC &effectiveSystemId() const;
91 const Text *systemIdText() const;
92 const Text *publicIdText() const;
93 const PublicId *publicId() const;
94 void setSystem(Text &);
95 void setEffectiveSystem(StringC &);
96 // If it's not a valid formal public identifier, return 0
97 // and set error, otherwise return 1.
98 // charset describes the character set to use for parsing the
100 Boolean setPublic(Text &, const CharsetInfo &, Char space,
101 const MessageType1 *&error);
102 void setLocation(const Location &);
103 // location of keyword
104 const Location &location() const;
106 PackedBoolean haveSystem_;
107 PackedBoolean havePublic_;
111 StringC effectiveSystem_;
115 const StringC &PublicId::string() const
117 return text_.string();
121 const Text &PublicId::text() const
127 const StringC *ExternalId::systemIdString() const
129 return haveSystem_ ? &system_.string() : 0;
133 const StringC *ExternalId::publicIdString() const
135 return havePublic_ ? &public_.string() : 0;
139 const Text *ExternalId::systemIdText() const
141 return haveSystem_ ? &system_ : 0;
145 const Text *ExternalId::publicIdText() const
147 return havePublic_ ? &public_.text() : 0;
151 const PublicId *ExternalId::publicId() const
153 return havePublic_ ? &public_ : 0;
157 const Location &ExternalId::location() const
163 const StringC &ExternalId::effectiveSystemId() const
165 return effectiveSystem_;
169 void ExternalId::setEffectiveSystem(StringC &str)
171 str.swap(effectiveSystem_);
178 #endif /* not ExternalId_INCLUDED */