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