1/*
2 * Copyright (C) 2011 Google Inc. All Rights Reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 *    notice, this list of conditions and the following disclaimer in the
11 *    documentation and/or other materials provided with the distribution.
12 *
13 *  THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
14 *  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 *  DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17 *  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 */
25
26#ifndef StyleGridData_h
27#define StyleGridData_h
28
29#include "GridTrackSize.h"
30#include "RenderStyleConstants.h"
31#include <wtf/PassRefPtr.h>
32#include <wtf/RefCounted.h>
33#include <wtf/Vector.h>
34
35namespace WebCore {
36
37class StyleGridData : public RefCounted<StyleGridData> {
38public:
39    static PassRefPtr<StyleGridData> create() { return adoptRef(new StyleGridData); }
40    PassRefPtr<StyleGridData> copy() const { return adoptRef(new StyleGridData(*this)); }
41
42    bool operator==(const StyleGridData& o) const
43    {
44        return m_gridColumns == o.m_gridColumns && m_gridRows == o.m_gridRows && m_gridAutoFlow == o.m_gridAutoFlow && m_gridAutoRows == o.m_gridAutoRows && m_gridAutoColumns == o.m_gridAutoColumns;
45    }
46
47    bool operator!=(const StyleGridData& o) const
48    {
49        return !(*this == o);
50    }
51
52    // FIXME: Update the naming of the following variables.
53    Vector<GridTrackSize> m_gridColumns;
54    Vector<GridTrackSize> m_gridRows;
55
56    GridAutoFlow m_gridAutoFlow;
57
58    GridTrackSize m_gridAutoRows;
59    GridTrackSize m_gridAutoColumns;
60
61private:
62    StyleGridData();
63    StyleGridData(const StyleGridData&);
64};
65
66} // namespace WebCore
67
68#endif // StyleGridData_h
69