18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * Copyright (C) 2010 Google Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 9ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 12ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 27ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include "IDBKey.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 29ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#if ENABLE(INDEXED_DATABASE) 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 33ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve BlockIDBKey::IDBKey() 34ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block : m_type(NullType) 35ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{ 36ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} 37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 38ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve BlockIDBKey::~IDBKey() 39ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{ 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochbool IDBKey::isLessThan(const IDBKey* other) const 435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen{ 4481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch ASSERT(other); 4581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (other->m_type < m_type) 4681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return true; 4781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (other->m_type > m_type) 485ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen return false; 495ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 505ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen switch (m_type) { 515ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen case StringType: 5281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return codePointCompare(other->m_string, m_string) > 0; 53f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case DateType: 5481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return other->m_date > m_date; 555ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen case NumberType: 5681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return other->m_number > m_number; 575ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen case NullType: 585ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen return true; 595ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen } 605ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 615ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen ASSERT_NOT_REACHED(); 625ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen return false; 635ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen} 645ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 6581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochbool IDBKey::isEqual(const IDBKey* other) const 6668513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 6781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (!other || other->m_type != m_type) 6881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return false; 6968513a70bcd92384395513322f1b801e7bf9c729Steve Block 7068513a70bcd92384395513322f1b801e7bf9c729Steve Block switch (m_type) { 7168513a70bcd92384395513322f1b801e7bf9c729Steve Block case StringType: 7281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return other->m_string == m_string; 73f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch case DateType: 7481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return other->m_date == m_date; 7568513a70bcd92384395513322f1b801e7bf9c729Steve Block case NumberType: 7681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return other->m_number == m_number; 7768513a70bcd92384395513322f1b801e7bf9c729Steve Block case NullType: 7881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return true; 795abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick } 805abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 815abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick ASSERT_NOT_REACHED(); 8281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return false; 835abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick} 845abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 86ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 87ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#endif 88