split attributes into mapped and unmapped parts

This commit is contained in:
peterl%netscape.com 1999-07-07 01:32:28 +00:00
parent 704fe7a511
commit 75f67b7a05
3 changed files with 101 additions and 28 deletions

View File

@ -32,16 +32,30 @@ class nsIHTMLStyleSheet;
{0xa18f85f0, 0xc058, 0x11d1, \
{0x80, 0x31, 0x00, 0x60, 0x08, 0x15, 0x9b, 0x5a}}
// IID for the nsIHTMLMappedAttributes interface {0fdd27a0-2e7b-11d3-8060-006008159b5a}
#define NS_IHTML_MAPPED_ATTRIBUTES_IID \
{0x0fdd27a0, 0x2e7b, 0x11d3, \
{0x80, 0x60, 0x00, 0x60, 0x08, 0x15, 0x9b, 0x5a}}
class nsIHTMLAttributes : public nsISupports {
public:
NS_IMETHOD SetAttribute(nsIAtom* aAttribute, const nsHTMLValue& aValue,
PRInt32& aAttrCount) = 0;
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IHTML_ATTRIBUTES_IID);
NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsHTMLValue& aValue,
PRBool aMappedToStyle,
nsIHTMLContent* aContent,
nsIHTMLStyleSheet* aSheet,
PRInt32& aAttrCount) = 0;
// this string value version lets you avoid an extra string copy,
// the value is still stored in a nsHTMLValue
NS_IMETHOD SetAttribute(nsIAtom* aAttribute, const nsString& aValue,
PRInt32& aAttrCount) = 0;
NS_IMETHOD UnsetAttribute(nsIAtom* aAttribute, PRInt32& aAttrCount) = 0;
NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsString& aValue,
PRBool aMappedToStyle,
nsIHTMLContent* aContent,
nsIHTMLStyleSheet* aSheet) = 0;
NS_IMETHOD UnsetAttributeFor(nsIAtom* aAttribute,
nsIHTMLContent* aContent,
nsIHTMLStyleSheet* aSheet,
PRInt32& aAttrCount) = 0;
NS_IMETHOD GetAttribute(nsIAtom* aAttribute,
nsHTMLValue& aValue) const = 0;
@ -50,30 +64,49 @@ public:
nsIAtom*& aName) const = 0;
NS_IMETHOD GetAttributeCount(PRInt32& aAttrCount) const = 0;
NS_IMETHOD Equals(const nsIHTMLAttributes* aAttributes, PRBool& aResult) const = 0;
NS_IMETHOD HashValue(PRUint32& aValue) const = 0;
NS_IMETHOD GetID(nsIAtom*& aResult) const = 0;
NS_IMETHOD GetClasses(nsVoidArray& aArray) const = 0;
NS_IMETHOD HasClass(nsIAtom* aClass) const = 0;
NS_IMETHOD Clone(nsIHTMLAttributes** aInstancePtrResult) const = 0;
NS_IMETHOD SetStyleSheet(nsIHTMLStyleSheet* aSheet) = 0;
NS_IMETHOD GetMappedAttributeStyleRules(nsISupportsArray* aArray) const = 0;
#ifdef UNIQUE_ATTR_SUPPORT
NS_IMETHOD Equals(const nsIHTMLAttributes* aAttributes, PRBool& aResult) const = 0;
NS_IMETHOD HashValue(PRUint32& aValue) const = 0;
NS_IMETHOD AddContentRef(void) = 0;
NS_IMETHOD ReleaseContentRef(void) = 0;
NS_IMETHOD GetContentRefCount(PRInt32& aCount) const = 0;
NS_IMETHOD Clone(nsIHTMLAttributes** aInstancePtrResult) const = 0;
NS_IMETHOD Reset(void) = 0;
NS_IMETHOD SetMappingFunctions(nsMapAttributesFunc aFontMapFunc, nsMapAttributesFunc aMapFunc) = 0;
NS_IMETHOD SetStyleSheet(nsIHTMLStyleSheet* aSheet) = 0;
#endif
NS_IMETHOD List(FILE* out = stdout, PRInt32 aIndent = 0) const = 0;
};
class nsIHTMLMappedAttributes : public nsISupports {
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IHTML_MAPPED_ATTRIBUTES_IID);
NS_IMETHOD GetAttribute(nsIAtom* aAttrName, nsHTMLValue& aValue) const = 0;
NS_IMETHOD GetAttributeCount(PRInt32& aCount) const = 0;
NS_IMETHOD Equals(const nsIHTMLMappedAttributes* aAttributes, PRBool& aResult) const = 0;
NS_IMETHOD HashValue(PRUint32& aValue) const = 0;
// Sheet accessors for unique table management
NS_IMETHOD SetUniqued(PRBool aUniqued) = 0;
NS_IMETHOD GetUniqued(PRBool& aUniqued) = 0;
NS_IMETHOD DropStyleSheetReference(void) = 0;
};
extern NS_HTML nsresult
NS_NewHTMLAttributes(nsIHTMLAttributes** aInstancePtrResult,
nsIHTMLStyleSheet* aSheet,
nsMapAttributesFunc aFontMapFunc,
nsMapAttributesFunc aMapFunc);
NS_NewHTMLAttributes(nsIHTMLAttributes** aInstancePtrResult);
#endif /* nsIHTMLAttributes_h___ */

View File

@ -32,16 +32,30 @@ class nsIHTMLStyleSheet;
{0xa18f85f0, 0xc058, 0x11d1, \
{0x80, 0x31, 0x00, 0x60, 0x08, 0x15, 0x9b, 0x5a}}
// IID for the nsIHTMLMappedAttributes interface {0fdd27a0-2e7b-11d3-8060-006008159b5a}
#define NS_IHTML_MAPPED_ATTRIBUTES_IID \
{0x0fdd27a0, 0x2e7b, 0x11d3, \
{0x80, 0x60, 0x00, 0x60, 0x08, 0x15, 0x9b, 0x5a}}
class nsIHTMLAttributes : public nsISupports {
public:
NS_IMETHOD SetAttribute(nsIAtom* aAttribute, const nsHTMLValue& aValue,
PRInt32& aAttrCount) = 0;
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IHTML_ATTRIBUTES_IID);
NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsHTMLValue& aValue,
PRBool aMappedToStyle,
nsIHTMLContent* aContent,
nsIHTMLStyleSheet* aSheet,
PRInt32& aAttrCount) = 0;
// this string value version lets you avoid an extra string copy,
// the value is still stored in a nsHTMLValue
NS_IMETHOD SetAttribute(nsIAtom* aAttribute, const nsString& aValue,
PRInt32& aAttrCount) = 0;
NS_IMETHOD UnsetAttribute(nsIAtom* aAttribute, PRInt32& aAttrCount) = 0;
NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsString& aValue,
PRBool aMappedToStyle,
nsIHTMLContent* aContent,
nsIHTMLStyleSheet* aSheet) = 0;
NS_IMETHOD UnsetAttributeFor(nsIAtom* aAttribute,
nsIHTMLContent* aContent,
nsIHTMLStyleSheet* aSheet,
PRInt32& aAttrCount) = 0;
NS_IMETHOD GetAttribute(nsIAtom* aAttribute,
nsHTMLValue& aValue) const = 0;
@ -50,30 +64,49 @@ public:
nsIAtom*& aName) const = 0;
NS_IMETHOD GetAttributeCount(PRInt32& aAttrCount) const = 0;
NS_IMETHOD Equals(const nsIHTMLAttributes* aAttributes, PRBool& aResult) const = 0;
NS_IMETHOD HashValue(PRUint32& aValue) const = 0;
NS_IMETHOD GetID(nsIAtom*& aResult) const = 0;
NS_IMETHOD GetClasses(nsVoidArray& aArray) const = 0;
NS_IMETHOD HasClass(nsIAtom* aClass) const = 0;
NS_IMETHOD Clone(nsIHTMLAttributes** aInstancePtrResult) const = 0;
NS_IMETHOD SetStyleSheet(nsIHTMLStyleSheet* aSheet) = 0;
NS_IMETHOD GetMappedAttributeStyleRules(nsISupportsArray* aArray) const = 0;
#ifdef UNIQUE_ATTR_SUPPORT
NS_IMETHOD Equals(const nsIHTMLAttributes* aAttributes, PRBool& aResult) const = 0;
NS_IMETHOD HashValue(PRUint32& aValue) const = 0;
NS_IMETHOD AddContentRef(void) = 0;
NS_IMETHOD ReleaseContentRef(void) = 0;
NS_IMETHOD GetContentRefCount(PRInt32& aCount) const = 0;
NS_IMETHOD Clone(nsIHTMLAttributes** aInstancePtrResult) const = 0;
NS_IMETHOD Reset(void) = 0;
NS_IMETHOD SetMappingFunctions(nsMapAttributesFunc aFontMapFunc, nsMapAttributesFunc aMapFunc) = 0;
NS_IMETHOD SetStyleSheet(nsIHTMLStyleSheet* aSheet) = 0;
#endif
NS_IMETHOD List(FILE* out = stdout, PRInt32 aIndent = 0) const = 0;
};
class nsIHTMLMappedAttributes : public nsISupports {
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IHTML_MAPPED_ATTRIBUTES_IID);
NS_IMETHOD GetAttribute(nsIAtom* aAttrName, nsHTMLValue& aValue) const = 0;
NS_IMETHOD GetAttributeCount(PRInt32& aCount) const = 0;
NS_IMETHOD Equals(const nsIHTMLMappedAttributes* aAttributes, PRBool& aResult) const = 0;
NS_IMETHOD HashValue(PRUint32& aValue) const = 0;
// Sheet accessors for unique table management
NS_IMETHOD SetUniqued(PRBool aUniqued) = 0;
NS_IMETHOD GetUniqued(PRBool& aUniqued) = 0;
NS_IMETHOD DropStyleSheetReference(void) = 0;
};
extern NS_HTML nsresult
NS_NewHTMLAttributes(nsIHTMLAttributes** aInstancePtrResult,
nsIHTMLStyleSheet* aSheet,
nsMapAttributesFunc aFontMapFunc,
nsMapAttributesFunc aMapFunc);
NS_NewHTMLAttributes(nsIHTMLAttributes** aInstancePtrResult);
#endif /* nsIHTMLAttributes_h___ */

View File

@ -26,6 +26,7 @@ class nsIAtom;
class nsString;
class nsHTMLValue;
class nsIHTMLAttributes;
class nsIHTMLMappedAttributes;
class nsIHTMLContent;
class nsIDocument;
@ -45,14 +46,20 @@ public:
NS_IMETHOD SetAttributesFor(nsIHTMLContent* aContent,
nsIHTMLAttributes*& aAttributes) = 0;
NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsString& aValue,
PRBool aMappedToStyle,
nsIHTMLContent* aContent,
nsIHTMLAttributes*& aAttributes) = 0;
NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsHTMLValue& aValue,
PRBool aMappedToStyle,
nsIHTMLContent* aContent,
nsIHTMLAttributes*& aAttributes) = 0;
NS_IMETHOD UnsetAttributeFor(nsIAtom* aAttribute, nsIHTMLContent* aContent,
nsIHTMLAttributes*& aAttributes) = 0;
// Mapped Attribute management methods
NS_IMETHOD UniqueMappedAttributes(nsIHTMLMappedAttributes* aMapped,
nsIHTMLMappedAttributes*& aUniqueMapped) = 0;
NS_IMETHOD DropMappedAttributes(nsIHTMLMappedAttributes* aMapped) = 0;
};