summaryrefslogtreecommitdiffstats
path: root/JavaScriptCore/wtf/Bitmap.h
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-05-06 11:45:16 +0100
committerSteve Block <steveblock@google.com>2011-05-12 13:44:10 +0100
commitcad810f21b803229eb11403f9209855525a25d57 (patch)
tree29a6fd0279be608e0fe9ffe9841f722f0f4e4269 /JavaScriptCore/wtf/Bitmap.h
parent121b0cf4517156d0ac5111caf9830c51b69bae8f (diff)
downloadexternal_webkit-cad810f21b803229eb11403f9209855525a25d57.zip
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.gz
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.bz2
Merge WebKit at r75315: Initial merge by git.
Change-Id: I570314b346ce101c935ed22a626b48c2af266b84
Diffstat (limited to 'JavaScriptCore/wtf/Bitmap.h')
-rw-r--r--JavaScriptCore/wtf/Bitmap.h131
1 files changed, 0 insertions, 131 deletions
diff --git a/JavaScriptCore/wtf/Bitmap.h b/JavaScriptCore/wtf/Bitmap.h
deleted file mode 100644
index 4dd88f6..0000000
--- a/JavaScriptCore/wtf/Bitmap.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-#ifndef Bitmap_h
-#define Bitmap_h
-
-#include "FixedArray.h"
-#include "StdLibExtras.h"
-
-#include <stdint.h>
-
-namespace WTF {
-
-template<size_t size>
-class Bitmap {
-private:
- typedef uint32_t WordType;
-
-public:
- Bitmap();
-
- bool get(size_t) const;
- void set(size_t);
- void clear(size_t);
- void clearAll();
- void advanceToNextFreeBit(size_t&) const;
- size_t count(size_t = 0) const;
- size_t isEmpty() const;
- size_t isFull() const;
-
-private:
- static const WordType wordSize = sizeof(WordType) * 8;
- static const WordType words = (size + wordSize - 1) / wordSize;
-
- // the literal '1' is of type signed int. We want to use an unsigned
- // version of the correct size when doing the calculations because if
- // WordType is larger than int, '1 << 31' will first be sign extended
- // and then casted to unsigned, meaning that set(31) when WordType is
- // a 64 bit unsigned int would give 0xffff8000
- static const WordType one = 1;
-
- FixedArray<WordType, words> bits;
-};
-
-template<size_t size>
-inline Bitmap<size>::Bitmap()
-{
- clearAll();
-}
-
-template<size_t size>
-inline bool Bitmap<size>::get(size_t n) const
-{
- return !!(bits[n / wordSize] & (one << (n % wordSize)));
-}
-
-template<size_t size>
-inline void Bitmap<size>::set(size_t n)
-{
- bits[n / wordSize] |= (one << (n % wordSize));
-}
-
-template<size_t size>
-inline void Bitmap<size>::clear(size_t n)
-{
- bits[n / wordSize] &= ~(one << (n % wordSize));
-}
-
-template<size_t size>
-inline void Bitmap<size>::clearAll()
-{
- memset(bits.data(), 0, sizeof(bits));
-}
-
-template<size_t size>
-inline void Bitmap<size>::advanceToNextFreeBit(size_t& start) const
-{
- if (!~bits[start / wordSize])
- start = ((start / wordSize) + 1) * wordSize;
- else
- ++start;
-}
-
-template<size_t size>
-inline size_t Bitmap<size>::count(size_t start) const
-{
- size_t result = 0;
- for ( ; (start % wordSize); ++start) {
- if (get(start))
- ++result;
- }
- for (size_t i = start / wordSize; i < words; ++i)
- result += WTF::bitCount(bits[i]);
- return result;
-}
-
-template<size_t size>
-inline size_t Bitmap<size>::isEmpty() const
-{
- for (size_t i = 0; i < words; ++i)
- if (bits[i])
- return false;
- return true;
-}
-
-template<size_t size>
-inline size_t Bitmap<size>::isFull() const
-{
- for (size_t i = 0; i < words; ++i)
- if (~bits[i])
- return false;
- return true;
-}
-
-}
-#endif