1 /* 2 * (C) 1999-2003 Lars Knoll (knoll (at) kde.org) 3 * (C) 2002-2003 Dirk Mueller (mueller (at) kde.org) 4 * Copyright (C) 2002, 2006 Apple Computer, Inc. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Library General Public 8 * License as published by the Free Software Foundation; either 9 * version 2 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Library General Public License for more details. 15 * 16 * You should have received a copy of the GNU Library General Public License 17 * along with this library; see the file COPYING.LIB. If not, write to 18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 * Boston, MA 02110-1301, USA. 20 */ 21 22 #ifndef CSSRuleList_h 23 #define CSSRuleList_h 24 25 #include <wtf/PassRefPtr.h> 26 #include <wtf/RefCounted.h> 27 #include <wtf/RefPtr.h> 28 #include <wtf/Vector.h> 29 30 namespace WebCore { 31 32 class CSSRule; 33 class StyleList; 34 35 class CSSRuleList : public RefCounted<CSSRuleList> { 36 public: 37 static PassRefPtr<CSSRuleList> create(StyleList* list, bool omitCharsetRules = false) 38 { 39 return adoptRef(new CSSRuleList(list, omitCharsetRules)); 40 } 41 static PassRefPtr<CSSRuleList> create() 42 { 43 return adoptRef(new CSSRuleList); 44 } 45 ~CSSRuleList(); 46 47 unsigned length() const; 48 CSSRule* item(unsigned index); 49 50 // FIXME: Not part of the DOM. Only used by media rules. We should be able to remove them if we changed media rules to work 51 // as StyleLists instead. 52 unsigned insertRule(CSSRule*, unsigned index); 53 void deleteRule(unsigned index); 54 void append(CSSRule*); 55 56 StyleList* styleList() 57 { 58 return m_list.get(); 59 } 60 61 private: 62 CSSRuleList(); 63 CSSRuleList(StyleList*, bool omitCharsetRules); 64 65 RefPtr<StyleList> m_list; 66 Vector<RefPtr<CSSRule> > m_lstCSSRules; // FIXME: Want to eliminate, but used by IE rules() extension and still used by media rules. 67 }; 68 69 } // namespace WebCore 70 71 #endif // CSSRuleList_h 72