Lpd.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
// Copyright (c) 1994 James Clark
// See the file COPYING for copying permission.
#pragma ident "%Z%%M% %I% %E% SMI"
#ifndef Lpd_INCLUDED
#define Lpd_INCLUDED 1
#ifdef __GNUG__
#pragma interface
#endif
#include "Attribute.h"
#include "StringC.h"
#include "Ptr.h"
#include "Resource.h"
#include "Boolean.h"
#include "Named.h"
#include "NamedTable.h"
#include "Syntax.h"
#include "Location.h"
#include "Dtd.h"
#ifdef SP_NAMESPACE
#endif
struct SP_API ResultElementSpec {
const ElementType *elementType;
void swap(ResultElementSpec &);
};
void activate();
};
};
// A link rule whose source element specification is not implied.
void setLinkAttributes(AttributeList &);
void setUselink(const LinkSet *);
void setPostlink(const LinkSet *);
void setPostlinkRestore();
void swap(SourceLinkRule &);
const AttributeList &attributes() const;
const ResultElementSpec &resultElementSpec() const;
Boolean postlinkRestore() const;
};
};
void setDefined();
Boolean defined() const;
void addLinkRule(const ElementType *,
const ConstPtr<SourceLinkRuleResource> &);
size_t nImpliedLinkRules() const;
const AttributeList *&);
// indexed by typeIndex of source elements
};
IdLinkRule();
void swap(IdLinkRule &);
};
// A collection of link rules in a ID link set that are
// assocated with the same name (unique identifier).
IdLinkRuleGroup(const StringC &);
size_t nLinkRules() const;
void addLinkRule(IdLinkRule &);
};
// An implicit or explicit LPD.
const Location &,
size_t nAttributeDefinitionList() const;
const LinkSet *initialLinkSet() const;
const LinkSet *emptyLinkSet() const;
void insertIdLink(IdLinkRuleGroup *);
ConstLinkSetIter linkSetIter() const;
Boolean hadIdLinkSet() const;
void setHadIdLinkSet();
const ConstPtr<AttributeDefinitionList> &
attributeDef(const ElementType *) const;
void setAttributeDef(const ElementType *,
const ConstPtr<AttributeDefinitionList> &);
};
inline
{
return type_;
}
inline
{
return location_;
}
inline
{
return active_;
}
inline
{
active_ = 1;
}
inline
{
return sourceDtd_;
}
inline
{
return sourceDtd_;
}
inline
{
return name_;
}
inline
{
return *name_;
}
inline
{
}
inline
{
return linkAttributes_;
}
inline
{
}
inline
{
return resultElementSpec_;
}
inline
{
}
inline
{
}
inline
void SourceLinkRule::setPostlinkRestore()
{
postlinkRestore_ = 1;
}
inline
{
return uselink_;
}
inline
{
return postlink_;
}
inline
{
return postlinkRestore_;
}
inline
{
return defined_;
}
inline
void LinkSet::setDefined()
{
defined_ = 1;
}
inline
{
return *linkRules_[e->index()][i];
}
inline
{
return impliedSourceLinkRules_.size();
}
inline
{
return impliedSourceLinkRules_[i];
}
inline
{
return resultDtd_;
}
inline
{
return resultDtd_;
}
inline
{
return &initialLinkSet_;
}
inline
{
return &initialLinkSet_;
}
inline
{
return &emptyLinkSet_;
}
inline
{
}
inline
{
}
inline
{
return linkSetTable_.insert(e);
}
inline
{
return nAttributeDefinitionList_;
}
inline
{
return nAttributeDefinitionList_++;
}
inline
{
// Avoid use of typedef to work around MSVC 2.0 bug.
}
inline
const ConstPtr<AttributeDefinitionList> &
{
return linkAttributeDefs_[e->index()];
}
inline
{
}
inline
{
return hadIdLinkSet_;
}
inline
void ComplexLpd::setHadIdLinkSet()
{
hadIdLinkSet_ = 1;
}
inline
{
}
inline
{
return linkRules_.size();
}
inline
{
return linkRules_[i];
}
#ifdef SP_NAMESPACE
}
#endif
#endif /* not Lpd_INCLUDED */