summaryrefslogtreecommitdiffstats
path: root/WebCore/rendering/style/ContentData.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/rendering/style/ContentData.h')
-rw-r--r--WebCore/rendering/style/ContentData.h50
1 files changed, 47 insertions, 3 deletions
diff --git a/WebCore/rendering/style/ContentData.h b/WebCore/rendering/style/ContentData.h
index d924d1a..24d5f86 100644
--- a/WebCore/rendering/style/ContentData.h
+++ b/WebCore/rendering/style/ContentData.h
@@ -25,16 +25,18 @@
#ifndef ContentData_h
#define ContentData_h
+#include "PlatformString.h"
#include "RenderStyleConstants.h"
+#include "StringImpl.h"
+#include "StyleImage.h"
#include <wtf/Noncopyable.h>
namespace WebCore {
class CounterContent;
-class StringImpl;
-class StyleImage;
struct ContentData : Noncopyable {
+public:
ContentData()
: m_type(CONTENT_NONE)
, m_next(0)
@@ -48,7 +50,49 @@ struct ContentData : Noncopyable {
void clear();
- ContentType m_type;
+ bool isCounter() const { return m_type == CONTENT_COUNTER; }
+ bool isImage() const { return m_type == CONTENT_OBJECT; }
+ bool isNone() const { return m_type == CONTENT_NONE; }
+ bool isText() const { return m_type == CONTENT_TEXT; }
+
+ StyleContentType type() const { return m_type; }
+
+ bool dataEquivalent(const ContentData&) const;
+
+ StyleImage* image() const { return m_content.m_image; }
+ void setImage(PassRefPtr<StyleImage> image)
+ {
+ deleteContent();
+ m_type = CONTENT_OBJECT;
+ m_content.m_image = image.releaseRef();
+ }
+
+ StringImpl* text() const { return m_content.m_text; }
+ void setText(PassRefPtr<StringImpl> text)
+ {
+ deleteContent();
+ m_type = CONTENT_TEXT;
+ m_content.m_text = text.releaseRef();
+ }
+
+ CounterContent* counter() const { return m_content.m_counter; }
+ void setCounter(CounterContent* counter)
+ {
+ deleteContent();
+ m_type = CONTENT_COUNTER;
+ m_content.m_counter = counter;
+ }
+
+ ContentData* next() const { return m_next; }
+ void setNext(ContentData* next)
+ {
+ m_next = next;
+ }
+
+private:
+ void deleteContent();
+
+ StyleContentType m_type;
union {
StyleImage* m_image;
StringImpl* m_text;