1/* 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) 3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. 4 * Copyright (C) 2013 Intel Corporation. All rights reserved. 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 StylePropertyShorthand_h 23#define StylePropertyShorthand_h 24 25#include "CSSPropertyNames.h" 26#include "wtf/Vector.h" 27 28namespace WebCore { 29 30class StylePropertyShorthand { 31 WTF_MAKE_FAST_ALLOCATED; 32public: 33 StylePropertyShorthand() 34 : m_properties(0) 35 , m_propertiesForInitialization(0) 36 , m_length(0) 37 , m_shorthandID(CSSPropertyInvalid) 38 { 39 } 40 41 StylePropertyShorthand(CSSPropertyID id, const CSSPropertyID* properties, unsigned numProperties) 42 : m_properties(properties) 43 , m_propertiesForInitialization(0) 44 , m_length(numProperties) 45 , m_shorthandID(id) 46 { 47 } 48 49 StylePropertyShorthand(CSSPropertyID id, const CSSPropertyID* properties, const StylePropertyShorthand** propertiesForInitialization, unsigned numProperties) 50 : m_properties(properties) 51 , m_propertiesForInitialization(propertiesForInitialization) 52 , m_length(numProperties) 53 , m_shorthandID(id) 54 { 55 } 56 57 const CSSPropertyID* properties() const { return m_properties; } 58 const StylePropertyShorthand** propertiesForInitialization() const { return m_propertiesForInitialization; } 59 unsigned length() const { return m_length; } 60 CSSPropertyID id() const { return m_shorthandID; } 61 62private: 63 const CSSPropertyID* m_properties; 64 const StylePropertyShorthand** m_propertiesForInitialization; 65 unsigned m_length; 66 CSSPropertyID m_shorthandID; 67}; 68 69{% for property_id, property in properties.items() %} 70{%- set camel_case_name = property.camel_case_name %} 71const StylePropertyShorthand& {{ camel_case_name }}Shorthand(); 72{%- endfor %} 73 74// Returns an empty list if the property is not a shorthand, otherwise the list of longhands for parsing. 75const StylePropertyShorthand& parsingShorthandForProperty(CSSPropertyID); 76 77// Returns an empty list if the property is not a shorthand. 78const StylePropertyShorthand& shorthandForProperty(CSSPropertyID); 79 80// Return the list of shorthands for a given longhand. 81// The client must pass in an empty result vector. 82void getMatchingShorthandsForLonghand(CSSPropertyID, Vector<StylePropertyShorthand, 4>* result); 83 84unsigned indexOfShorthandForLonghand(CSSPropertyID, const Vector<StylePropertyShorthand, 4>&); 85 86bool isExpandedShorthand(CSSPropertyID); 87 88} // namespace WebCore 89 90#endif // StylePropertyShorthand_h 91