1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26 #include "config.h"
27 #include "IDBKey.h"
28
29 #if ENABLE(INDEXED_DATABASE)
30
31 namespace WebCore {
32
IDBKey()33 IDBKey::IDBKey()
34 : m_type(NullType)
35 {
36 }
37
~IDBKey()38 IDBKey::~IDBKey()
39 {
40 }
41
isLessThan(const IDBKey * other) const42 bool IDBKey::isLessThan(const IDBKey* other) const
43 {
44 ASSERT(other);
45 if (other->m_type < m_type)
46 return true;
47 if (other->m_type > m_type)
48 return false;
49
50 switch (m_type) {
51 case StringType:
52 return codePointCompare(other->m_string, m_string) > 0;
53 case DateType:
54 return other->m_date > m_date;
55 case NumberType:
56 return other->m_number > m_number;
57 case NullType:
58 return true;
59 }
60
61 ASSERT_NOT_REACHED();
62 return false;
63 }
64
isEqual(const IDBKey * other) const65 bool IDBKey::isEqual(const IDBKey* other) const
66 {
67 if (!other || other->m_type != m_type)
68 return false;
69
70 switch (m_type) {
71 case StringType:
72 return other->m_string == m_string;
73 case DateType:
74 return other->m_date == m_date;
75 case NumberType:
76 return other->m_number == m_number;
77 case NullType:
78 return true;
79 }
80
81 ASSERT_NOT_REACHED();
82 return false;
83 }
84
85 } // namespace WebCore
86
87 #endif
88