blob: 6b3e773a32fdc978bc711fcbca8e6e016fc2d043 [file] [log] [blame]
namespace WebCore {
class String;
}
#include "PlatformString.h"
namespace XBL
{
class XBLPrototypeBinding;
class XBLPrototypeMember
{
public:
XBLPrototypeMember(const WebCore::String& name);
virtual ~XBLPrototypeMember() { delete m_next; }
void appendData(const WebCore::String& data);
void setNext(XBLPrototypeMember* next) { m_next = next; }
XBLPrototypeMember* next() const { return m_next; }
protected:
WebCore::String m_name;
WebCore::String m_data;
XBLPrototypeMember* m_next;
};
class XBLPrototypeImplementation
{
public:
XBLPrototypeImplementation(const WebCore::String& name, XBLPrototypeBinding* binding);
~XBLPrototypeImplementation() { delete m_member; }
void setMember(XBLPrototypeMember* m) { m_member = m; }
private:
WebCore::String m_name;
XBLPrototypeBinding* m_binding;
XBLPrototypeMember* m_member;
bool m_compiled;
};
class XBLPrototypeParameter
{
public:
XBLPrototypeParameter(const WebCore::String& name) :m_name(name), m_next(0) {}
~XBLPrototypeParameter() { delete m_next; }
XBLPrototypeParameter* next() const { return m_next; }
void setNext(XBLPrototypeParameter* next) { m_next = next; }
private:
WebCore::String m_name;
XBLPrototypeParameter* m_next;
};
class XBLPrototypeMethod: public XBLPrototypeMember
{
public:
XBLPrototypeMethod(const WebCore::String& name);
virtual ~XBLPrototypeMethod() { delete m_parameter; }
virtual bool isConstructor() const;
virtual bool isDestructor() const;
void addParameter(const WebCore::String& name);
XBLPrototypeParameter* parameter() const { return m_parameter; }
private:
XBLPrototypeParameter* m_parameter;
};
class XBLPrototypeConstructor: public XBLPrototypeMethod
{
public:
XBLPrototypeConstructor();
virtual bool isConstructor() const;
};
class XBLPrototypeDestructor: public XBLPrototypeMethod
{
public:
XBLPrototypeDestructor();
virtual bool isDestructor() const;
};
class XBLPrototypeField : public XBLPrototypeMember
{
public:
XBLPrototypeField(const WebCore::String& name, bool readonly);
private:
bool m_readonly;
};
class XBLPrototypeProperty : public XBLPrototypeMember
{
public:
XBLPrototypeProperty(const WebCore::String& name, bool readonly,
const WebCore::String& onget,
const WebCore::String& onset);
void appendGetterText(const WebCore::String& text);
void appendSetterText(const WebCore::String& text);
private:
WebCore::String m_setter;
bool m_readonly;
};
}