Chromium Code Reviews| Index: Source/wtf/UnionType.h |
| diff --git a/Source/wtf/BitArray.h b/Source/wtf/UnionType.h |
| similarity index 59% |
| copy from Source/wtf/BitArray.h |
| copy to Source/wtf/UnionType.h |
| index 9ad1e0a1f95af02ac4c8e8eeced254d260a9255a..c49461324f59a0bd2a1ee4e91d9314740ec6a802 100644 |
| --- a/Source/wtf/BitArray.h |
| +++ b/Source/wtf/UnionType.h |
| @@ -1,5 +1,5 @@ |
| /* |
| - * Copyright (C) 2012 Apple Inc. All rights reserved. |
| + * Copyright (C) 2009, 2011 Apple Inc. All rights reserved. |
|
haraken
2013/05/15 12:09:43
Please use this:
/*
* Copyright (C) 2013 Google
|
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| @@ -20,43 +20,55 @@ |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| -#ifndef BitArray_h |
| -#define BitArray_h |
| - |
| -#include <string.h> |
| -#include <wtf/Assertions.h> |
| +#ifndef UnionType_h |
| +#define UnionType_h |
| namespace WTF { |
| -template<unsigned arraySize> |
| -class BitArray { |
| +/* |
| + * UnionTypeN holds multiple types of objects. |
|
haraken
2013/05/15 12:09:43
Nit: Blink uses // for multiline comments.
|
| + * |
| + * WebIDL(UnionType): |
| + * http://www.w3.org/TR/WebIDL/#prod-UnionType |
| + * |
| + * Example IDL: |
| + * http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#htmlformcontrolscollection |
| + */ |
| +template<typename Type0, typename Type1> |
| +class UnionType2 { |
| public: |
| - BitArray() |
| + explicit UnionType2() |
|
haraken
2013/05/15 12:09:43
'explicit' is needed only for one-argument constru
|
| { |
| - memset(m_data, 0, sizeof(m_data)); |
| } |
| - |
| - void set(unsigned index) |
| + explicit UnionType2(PassRefPtr<Type0> value) |
| { |
| - ASSERT_WITH_SECURITY_IMPLICATION(index < arraySize); |
| - m_data[index / 8] |= 1 << (index & 7); |
| + m_value0 = value; |
| } |
| - |
| - bool get(unsigned index) const |
| + explicit UnionType2(PassRefPtr<Type1> value) |
| { |
| - ASSERT_WITH_SECURITY_IMPLICATION(index < arraySize); |
| - return !!(m_data[index / 8] & (1 << (index & 7))); |
| + m_value1 = value; |
| + } |
| + bool isNull() const |
| + { |
| + return !m_value0 && !m_value1; |
| + } |
| + PassRefPtr<Type0> enabledValue0() const |
|
jsbell
2013/05/15 21:37:52
Naming suggestion: in Web IDL, a UnionType is comp
|
| + { |
| + return m_value0; |
| + } |
| + PassRefPtr<Type1> enabledValue1() const |
| + { |
| + return m_value1; |
| } |
| - |
| private: |
| - unsigned char m_data[arraySize / 8 + 1]; |
| + RefPtr<Type0> m_value0; |
| + RefPtr<Type1> m_value1; |
| }; |
| -} // namespace WTF |
| -using WTF::BitArray; |
| +} // namespace WTF |
| -#endif // BitArray_h |
| +#endif // UnionType_h |