OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2011 Apple Inc. All rights reserved. |
haraken
2013/05/15 12:09:43
Please use this:
/*
* Copyright (C) 2013 Google
| |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
11 * documentation and/or other materials provided with the distribution. | 11 * documentation and/or other materials provided with the distribution. |
12 * | 12 * |
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY | 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY |
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR | 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR |
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
24 */ | 24 */ |
25 | 25 |
26 #ifndef BitArray_h | 26 #ifndef UnionType_h |
27 #define BitArray_h | 27 #define UnionType_h |
28 | |
29 #include <string.h> | |
30 #include <wtf/Assertions.h> | |
31 | 28 |
32 namespace WTF { | 29 namespace WTF { |
33 | 30 |
34 template<unsigned arraySize> | 31 /* |
35 class BitArray { | 32 * UnionTypeN holds multiple types of objects. |
haraken
2013/05/15 12:09:43
Nit: Blink uses // for multiline comments.
| |
33 * | |
34 * WebIDL(UnionType): | |
35 * http://www.w3.org/TR/WebIDL/#prod-UnionType | |
36 * | |
37 * Example IDL: | |
38 * http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interf aces.html#htmlformcontrolscollection | |
39 */ | |
40 template<typename Type0, typename Type1> | |
41 class UnionType2 { | |
36 public: | 42 public: |
37 BitArray() | 43 explicit UnionType2() |
haraken
2013/05/15 12:09:43
'explicit' is needed only for one-argument constru
| |
38 { | 44 { |
39 memset(m_data, 0, sizeof(m_data)); | |
40 } | 45 } |
46 explicit UnionType2(PassRefPtr<Type0> value) | |
47 { | |
48 m_value0 = value; | |
49 } | |
50 explicit UnionType2(PassRefPtr<Type1> value) | |
51 { | |
52 m_value1 = value; | |
53 } | |
54 bool isNull() const | |
55 { | |
56 return !m_value0 && !m_value1; | |
57 } | |
58 PassRefPtr<Type0> enabledValue0() const | |
jsbell
2013/05/15 21:37:52
Naming suggestion: in Web IDL, a UnionType is comp
| |
59 { | |
60 return m_value0; | |
61 } | |
62 PassRefPtr<Type1> enabledValue1() const | |
63 { | |
64 return m_value1; | |
65 } | |
66 private: | |
67 RefPtr<Type0> m_value0; | |
68 RefPtr<Type1> m_value1; | |
69 }; | |
41 | 70 |
42 void set(unsigned index) | |
43 { | |
44 ASSERT_WITH_SECURITY_IMPLICATION(index < arraySize); | |
45 m_data[index / 8] |= 1 << (index & 7); | |
46 } | |
47 | |
48 bool get(unsigned index) const | |
49 { | |
50 ASSERT_WITH_SECURITY_IMPLICATION(index < arraySize); | |
51 return !!(m_data[index / 8] & (1 << (index & 7))); | |
52 } | |
53 | |
54 private: | |
55 unsigned char m_data[arraySize / 8 + 1]; | |
56 }; | |
57 | 71 |
58 } // namespace WTF | 72 } // namespace WTF |
59 | 73 |
60 using WTF::BitArray; | 74 #endif // UnionType_h |
61 | |
62 #endif // BitArray_h | |
OLD | NEW |