Blame include/ExternalId.h

Packit 8a864e
// Copyright (c) 1994 James Clark
Packit 8a864e
// See the file COPYING for copying permission.
Packit 8a864e
Packit 8a864e
#ifndef ExternalId_INCLUDED
Packit 8a864e
#define ExternalId_INCLUDED 1
Packit 8a864e
#ifdef __GNUG__
Packit 8a864e
#pragma interface
Packit 8a864e
#endif
Packit 8a864e
Packit 8a864e
#include "Boolean.h"
Packit 8a864e
#include "StringC.h"
Packit 8a864e
#include "Text.h"
Packit 8a864e
#include "types.h"
Packit 8a864e
#include "Message.h"
Packit 8a864e
Packit 8a864e
#ifdef SP_NAMESPACE
Packit 8a864e
namespace SP_NAMESPACE {
Packit 8a864e
#endif
Packit 8a864e
Packit 8a864e
class CharsetInfo;
Packit 8a864e
Packit 8a864e
class SP_API PublicId {
Packit 8a864e
public:
Packit 8a864e
  enum Type {
Packit 8a864e
    informal,
Packit 8a864e
    fpi,
Packit 8a864e
    urn
Packit 8a864e
  };
Packit 8a864e
  enum TextClass {
Packit 8a864e
    CAPACITY,
Packit 8a864e
    CHARSET,
Packit 8a864e
    DOCUMENT,
Packit 8a864e
    DTD,
Packit 8a864e
    ELEMENTS,
Packit 8a864e
    ENTITIES,
Packit 8a864e
    LPD,
Packit 8a864e
    NONSGML,
Packit 8a864e
    NOTATION,
Packit 8a864e
    SD,
Packit 8a864e
    SHORTREF,
Packit 8a864e
    SUBDOC,
Packit 8a864e
    SYNTAX,
Packit 8a864e
    TEXT
Packit 8a864e
  };
Packit 8a864e
  enum OwnerType {
Packit 8a864e
    ISO,
Packit 8a864e
    registered,
Packit 8a864e
    unregistered
Packit 8a864e
    };
Packit 8a864e
  PublicId();
Packit 8a864e
  // FPI parts
Packit 8a864e
  Boolean getOwnerType(OwnerType &) const;
Packit 8a864e
  Boolean getOwner(StringC &) const;
Packit 8a864e
  Boolean getTextClass(TextClass &) const;
Packit 8a864e
  Boolean getUnavailable(Boolean &) const;
Packit 8a864e
  Boolean getDescription(StringC &) const;
Packit 8a864e
  Boolean getLanguage(StringC &) const;
Packit 8a864e
  Boolean getDesignatingSequence(StringC &) const;
Packit 8a864e
  Boolean getDisplayVersion(StringC &) const;
Packit 8a864e
  // URN parts
Packit 8a864e
  Boolean getNamespaceIdentifier(StringC &) const;
Packit 8a864e
  Boolean getNamespaceSpecificString(StringC &) const;
Packit 8a864e
  // The return value describes what has been successfully parsed
Packit 8a864e
  // charset describes the character set to use for parsing the
Packit 8a864e
  // id.
Packit 8a864e
  Type init(Text &, const CharsetInfo &, Char space,
Packit 8a864e
	       const MessageType1 *&fpierror, 
Packit 8a864e
               const MessageType1 *&urnerror);
Packit 8a864e
  const StringC &string() const;
Packit 8a864e
  const Text &text() const;
Packit 8a864e
  const Type type() const { return type_; }
Packit 8a864e
private:
Packit 8a864e
  Boolean initFpi(const StringC &, const CharsetInfo &, Char, 
Packit 8a864e
               const MessageType1 *&);
Packit 8a864e
  Boolean initUrn(const StringC &, const CharsetInfo &, Char,
Packit 8a864e
               const MessageType1 *&);
Packit 8a864e
  static Boolean nextField(Char solidus,
Packit 8a864e
			   const Char *&next,
Packit 8a864e
			   const Char *lim,
Packit 8a864e
			   const Char *&fieldStart,
Packit 8a864e
			   size_t &fieldLength,
Packit 8a864e
                           Boolean dup = 1);
Packit 8a864e
  static Boolean lookupTextClass(const StringC &, const CharsetInfo &,
Packit 8a864e
				 TextClass &);
Packit 8a864e
  static const char *const textClasses[];
Packit 8a864e
Packit 8a864e
  Type type_;
Packit 8a864e
  OwnerType ownerType_;
Packit 8a864e
  StringC owner_;
Packit 8a864e
  TextClass textClass_;
Packit 8a864e
  PackedBoolean unavailable_;
Packit 8a864e
  StringC description_;
Packit 8a864e
  StringC languageOrDesignatingSequence_;
Packit 8a864e
  PackedBoolean haveDisplayVersion_;
Packit 8a864e
  StringC displayVersion_;
Packit 8a864e
  Text text_;
Packit 8a864e
  StringC nid_;
Packit 8a864e
  StringC nss_;
Packit 8a864e
};
Packit 8a864e
Packit 8a864e
class SP_API ExternalId {
Packit 8a864e
public:
Packit 8a864e
  ExternalId();
Packit 8a864e
  const StringC *systemIdString() const;
Packit 8a864e
  const StringC *publicIdString() const;
Packit 8a864e
  const StringC &effectiveSystemId() const;
Packit 8a864e
  const Text *systemIdText() const;
Packit 8a864e
  const Text *publicIdText() const;
Packit 8a864e
  const PublicId *publicId() const;
Packit 8a864e
  void setSystem(Text &);
Packit 8a864e
  void setEffectiveSystem(StringC &);
Packit 8a864e
  // The return value tells what has been successfully parsed. 
Packit 8a864e
  // charset describes the character set to use for parsing the
Packit 8a864e
  // id.
Packit 8a864e
  PublicId::Type setPublic(Text &, const CharsetInfo &, Char space,
Packit 8a864e
		    const MessageType1 *&fpierror,
Packit 8a864e
		    const MessageType1 *&urnerror);
Packit 8a864e
  void setLocation(const Location &);
Packit 8a864e
  // location of keyword
Packit 8a864e
  const Location &location() const;
Packit 8a864e
private:
Packit 8a864e
  PackedBoolean haveSystem_;
Packit 8a864e
  PackedBoolean havePublic_;
Packit 8a864e
  Text system_;
Packit 8a864e
  PublicId public_;
Packit 8a864e
  Location loc_;
Packit 8a864e
  StringC effectiveSystem_;
Packit 8a864e
};
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
const StringC &PublicId::string() const
Packit 8a864e
{
Packit 8a864e
  return text_.string();
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
const Text &PublicId::text() const
Packit 8a864e
{
Packit 8a864e
  return text_;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
const StringC *ExternalId::systemIdString() const
Packit 8a864e
{
Packit 8a864e
  return haveSystem_ ? &system_.string() : 0;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
const StringC *ExternalId::publicIdString() const
Packit 8a864e
{
Packit 8a864e
  return havePublic_ ? &public_.string() : 0;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
const Text *ExternalId::systemIdText() const
Packit 8a864e
{
Packit 8a864e
  return haveSystem_ ? &system_ : 0;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
const Text *ExternalId::publicIdText() const
Packit 8a864e
{
Packit 8a864e
  return havePublic_ ? &public_.text() : 0;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
const PublicId *ExternalId::publicId() const
Packit 8a864e
{
Packit 8a864e
  return havePublic_ ? &public_ : 0;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
const Location &ExternalId::location() const
Packit 8a864e
{
Packit 8a864e
  return loc_;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
const StringC &ExternalId::effectiveSystemId() const
Packit 8a864e
{
Packit 8a864e
  return effectiveSystem_;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
inline
Packit 8a864e
void ExternalId::setEffectiveSystem(StringC &str)
Packit 8a864e
{
Packit 8a864e
  str.swap(effectiveSystem_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
#ifdef SP_NAMESPACE
Packit 8a864e
}
Packit 8a864e
#endif
Packit 8a864e
Packit 8a864e
#endif /* not ExternalId_INCLUDED */