📄 attribute.h
字号:
void init(const ConstPtr<AttributeDefinitionList> &); // was a conref attribute specified? Boolean conref() const; size_t size() const; const StringC &name(unsigned) const; const AttributeValue *value(unsigned) const; size_t specIndex(size_t) const; const ConstPtr<AttributeValue> &valuePointer(unsigned) const; const AttributeSemantics *semantics(unsigned) const; Boolean tokenized(unsigned index) const; Boolean tokenIndex(const StringC &, unsigned &) const; Boolean tokenIndexUnique(const StringC &, unsigned) const; Boolean attributeIndex(const StringC &, unsigned &) const; void finish(AttributeContext &); Boolean setValue(unsigned index, Text &, AttributeContext &, unsigned &specLength); void setValueToken(unsigned index, Text &, AttributeContext &, unsigned &specLength); void setSpec(unsigned index, AttributeContext &); Boolean recoverUnquoted(const StringC &, const Location &, AttributeContext &); Boolean handleAsUnterminated(AttributeContext &context); void swap(AttributeList &); size_t nSpec() const; size_t defIndex() const; // is the attribute #current Boolean current(unsigned) const; Boolean anyCurrent() const; Boolean specified(unsigned) const; Boolean id(unsigned) const; Boolean idref(unsigned) const; const Vector<StringC> *getAllowedTokens(unsigned) const; const StringC *getId() const; // null if none Boolean idIndex(unsigned &) const; void noteInvalidSpec(); void changeDef(const ConstPtr<AttributeDefinitionList> &); const ConstPtr<AttributeDefinitionList> &def() const;private: const AttributeDefinition *def(size_t) const; PackedBoolean conref_; unsigned nIdrefs_; unsigned nEntityNames_; size_t nSpec_; Vector<Attribute> vec_; ConstPtr<AttributeDefinitionList> def_;};class SP_API AttributeContext : public Messenger {public: AttributeContext(); virtual ~AttributeContext(); virtual Boolean defineId(const StringC &, const Location &, Location &); virtual void noteIdref(const StringC &, const Location &); virtual void noteCurrentAttribute(size_t, AttributeValue *); virtual ConstPtr<AttributeValue> getCurrentAttribute(size_t) const; virtual ConstPtr<Entity> getAttributeEntity(const StringC &, const Location &); virtual ConstPtr<Notation> getAttributeNotation(const StringC &, const Location &); virtual const Syntax &attributeSyntax() const = 0; ConstPtr<AttributeValue> makeImpliedAttributeValue(); Boolean mayDefaultAttribute() const; Boolean validate() const;protected: Boolean mayDefaultAttribute_; Boolean validate_;private: ConstPtr<AttributeValue> impliedAttributeValue_;};inlineBoolean AttributeDefinition::tokenized() const{ return declaredValue_->tokenized();}inlineBoolean AttributeDefinition::isNotation() const{ return declaredValue_->isNotation();}inlineBoolean AttributeDefinition::isEntity() const{ return declaredValue_->isEntity();}inlineBoolean AttributeDefinition::isId() const{ return declaredValue_->isId();}inlineBoolean AttributeDefinition::isIdref() const{ return declaredValue_->isIdref();}inlineconst Vector<StringC> *AttributeDefinition::getTokens() const{ return declaredValue_->getTokens();}inlineAttributeSemantics *AttributeDefinition::makeSemantics(const AttributeValue *value, AttributeContext &context, unsigned &nIdrefs, unsigned &nEntityNames) const{ return value->makeSemantics(declaredValue_.pointer(), context, name_, nIdrefs, nEntityNames);}inlineAttributeValue *AttributeDefinition::makeValue(Text &text, AttributeContext &context, unsigned &specLength) const{ return checkValue(declaredValue_->makeValue(text, context, name_, specLength), context);}inlineAttributeValue *AttributeDefinition::makeValueFromToken(Text &text, AttributeContext &context, unsigned &specLength) const{ return checkValue(declaredValue_->makeValueFromToken(text, context, name_, specLength), context);}inlineBoolean AttributeDefinition::containsToken(const StringC &token) const{ return declaredValue_->containsToken(token);}inlineconst StringC &AttributeDefinition::name() const{ return name_;}inlinevoid AttributeDefinition::setDeclaredValue(DeclaredValue *declaredValue){ declaredValue_ = declaredValue;}inlinesize_t AttributeDefinitionList::size() const{ return defs_.size();}inlinesize_t AttributeDefinitionList::index() const{ return index_;}inlinevoid AttributeDefinitionList::setIndex(size_t index){ index_ = index;}inlinesize_t AttributeDefinitionList::idIndex() const{ return idIndex_;}inlinesize_t AttributeDefinitionList::notationIndex() const{ return notationIndex_;}inlineBoolean AttributeDefinitionList::anyCurrent() const{ return anyCurrent_;}inlineAttributeDefinition *AttributeDefinitionList::def(size_t i){ return defs_[i].pointer();}inlineconst AttributeDefinition *AttributeDefinitionList::def(size_t i) const{ return defs_[i].pointer();}inlinesize_t TokenizedAttributeValue::nTokens() const{ return spaceIndex_.size() + 1;}inlineconst StringC &TokenizedAttributeValue::string() const{ return text_.string();}inlinevoid TokenizedAttributeValue::token(size_t i, const Char *&ptr, size_t &len) const{ size_t startIndex = i == 0 ? 0 : spaceIndex_[i - 1] + 1; ptr = text_.string().data() + startIndex; len = (i == spaceIndex_.size() ? text_.size() : spaceIndex_[i]) - startIndex;}inlineStringC TokenizedAttributeValue::token(size_t i) const{ const Char *ptr; size_t len; token(i, ptr, len); return StringC(ptr, len);}inlineLocation TokenizedAttributeValue::tokenLocation(size_t i) const{ return text_.charLocation(i == 0 ? 0 : spaceIndex_[i - 1] + 1);}inlineBoolean TokenizedAttributeValue::tokenLocation(size_t i, const ConstPtr<Origin> *&origin, Index &index) const{ return text_.charLocation(i == 0 ? 0 : spaceIndex_[i - 1] + 1, origin, index);}inlinesize_t Attribute::specIndex() const{ return specIndexPlus_ - 1;}inlineBoolean Attribute::specified() const{ return specIndexPlus_ != 0;}inlineconst AttributeValue *Attribute::value() const{ return value_.pointer();}inlineconst ConstPtr<AttributeValue> &Attribute::valuePointer() const{ return value_;}inlineconst AttributeSemantics *Attribute::semantics() const{ return semantics_.pointer();}inlinevoid Attribute::setSpec(size_t index){ specIndexPlus_ = index + 1;}inlinevoid Attribute::setValue(const ConstPtr<AttributeValue> &value){ value_ = value;}inlinevoid Attribute::setSemantics(AttributeSemantics *semantics){ semantics_ = semantics;}inlinesize_t AttributeList::size() const{ return vec_.size();}inlineconst AttributeDefinition *AttributeList::def(size_t i) const{ return def_->def(i);}inlineconst ConstPtr<AttributeDefinitionList> &AttributeList::def() const{ return def_;}inlineBoolean AttributeList::tokenized(unsigned i) const{ return def(i)->tokenized();}inlineBoolean AttributeList::tokenIndex(const StringC &name, unsigned &index) const{ return !def_.isNull() && def_->tokenIndex(name, index);}inlineBoolean AttributeList::tokenIndexUnique(const StringC &name, unsigned index) const{ return def_->tokenIndexUnique(name, index);}inlineBoolean AttributeList::attributeIndex(const StringC &name, unsigned &index) const{ return !def_.isNull() && def_->attributeIndex(name, index);}inlineconst StringC &AttributeList::name(unsigned i) const{ return def(i)->name();}inlineconst Vector<StringC> *AttributeList::getAllowedTokens(unsigned i) const{ return def(i)->getTokens();}inlineconst AttributeValue *AttributeList::value(unsigned i) const{ return vec_[i].value();}inlineconst ConstPtr<AttributeValue> &AttributeList::valuePointer(unsigned i) const{ return vec_[i].valuePointer();}inlineconst AttributeSemantics *AttributeList::semantics(unsigned i) const{ return vec_[i].semantics();}inlinesize_t AttributeList::specIndex(size_t i) const{ return vec_[i].specIndex();}inlinesize_t AttributeList::nSpec() const{ return nSpec_;}inlineBoolean AttributeList::conref() const{ return conref_;}inlinesize_t AttributeList::defIndex() const{ return def_.isNull() ? size_t(-1) : def_->index();}inlineBoolean AttributeList::current(unsigned i) const{ return def(i)->isCurrent();}inlineBoolean AttributeList::anyCurrent() const{ return !def_.isNull() && def_->anyCurrent();}inlineconst AttributeValue *DefaultAttributeDefinition::defaultValue(const AttributeValue *) const{ return value_.pointer();}inlineBoolean AttributeList::idIndex(unsigned &ind) const{ if (def_.isNull() || def_->idIndex() == size_t(-1)) return 0; else { ind = def_->idIndex(); return 1; }}inlineBoolean AttributeList::id(unsigned i) const{ return def(i)->isId();}inlineBoolean AttributeList::idref(unsigned i) const{ return def(i)->isIdref();}inlineBoolean AttributeList::specified(unsigned i) const{ return vec_[i].specified();}inlineBoolean AttributeContext::mayDefaultAttribute() const{ return mayDefaultAttribute_;}inlineBoolean AttributeContext::validate() const{ return validate_;}#ifdef SP_NAMESPACE}#endif#endif /* not Attribute_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -