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 "IDBAny.h"
28 
29 #if ENABLE(INDEXED_DATABASE)
30 
31 #include "IDBCursorWithValue.h"
32 #include "IDBDatabase.h"
33 #include "IDBFactory.h"
34 #include "IDBIndex.h"
35 #include "IDBObjectStore.h"
36 #include "SerializedScriptValue.h"
37 
38 namespace WebCore {
39 
createInvalid()40 PassRefPtr<IDBAny> IDBAny::createInvalid()
41 {
42     return adoptRef(new IDBAny());
43 }
44 
createNull()45 PassRefPtr<IDBAny> IDBAny::createNull()
46 {
47     RefPtr<IDBAny> idbAny = adoptRef(new IDBAny());
48     idbAny->setNull();
49     return idbAny.release();
50 }
51 
IDBAny()52 IDBAny::IDBAny()
53     : m_type(UndefinedType)
54 {
55 }
56 
~IDBAny()57 IDBAny::~IDBAny()
58 {
59 }
60 
idbCursor()61 PassRefPtr<IDBCursor> IDBAny::idbCursor()
62 {
63     ASSERT(m_type == IDBCursorType);
64     return m_idbCursor;
65 }
66 
67 
idbCursorWithValue()68 PassRefPtr<IDBCursorWithValue> IDBAny::idbCursorWithValue()
69 {
70     ASSERT(m_type == IDBCursorWithValueType);
71     return m_idbCursorWithValue;
72 }
73 
idbDatabase()74 PassRefPtr<IDBDatabase> IDBAny::idbDatabase()
75 {
76     ASSERT(m_type == IDBDatabaseType);
77     return m_idbDatabase;
78 }
79 
idbFactory()80 PassRefPtr<IDBFactory> IDBAny::idbFactory()
81 {
82     ASSERT(m_type == IDBFactoryType);
83     return m_idbFactory;
84 }
85 
idbIndex()86 PassRefPtr<IDBIndex> IDBAny::idbIndex()
87 {
88     ASSERT(m_type == IDBIndexType);
89     return m_idbIndex;
90 }
91 
idbKey()92 PassRefPtr<IDBKey> IDBAny::idbKey()
93 {
94     ASSERT(m_type == IDBKeyType);
95     return m_idbKey;
96 }
97 
idbObjectStore()98 PassRefPtr<IDBObjectStore> IDBAny::idbObjectStore()
99 {
100     ASSERT(m_type == IDBObjectStoreType);
101     return m_idbObjectStore;
102 }
103 
idbTransaction()104 PassRefPtr<IDBTransaction> IDBAny::idbTransaction()
105 {
106     ASSERT(m_type == IDBTransactionType);
107     return m_idbTransaction;
108 }
109 
serializedScriptValue()110 PassRefPtr<SerializedScriptValue> IDBAny::serializedScriptValue()
111 {
112     ASSERT(m_type == SerializedScriptValueType);
113     return m_serializedScriptValue;
114 }
115 
setNull()116 void IDBAny::setNull()
117 {
118     ASSERT(m_type == UndefinedType);
119     m_type = NullType;
120 }
121 
set(PassRefPtr<IDBCursorWithValue> value)122 void IDBAny::set(PassRefPtr<IDBCursorWithValue> value)
123 {
124     ASSERT(m_type == UndefinedType);
125     m_type = IDBCursorWithValueType;
126     m_idbCursorWithValue = value;
127 }
128 
set(PassRefPtr<IDBCursor> value)129 void IDBAny::set(PassRefPtr<IDBCursor> value)
130 {
131     ASSERT(m_type == UndefinedType);
132     m_type = IDBCursorType;
133     m_idbCursor = value;
134 }
135 
set(PassRefPtr<IDBDatabase> value)136 void IDBAny::set(PassRefPtr<IDBDatabase> value)
137 {
138     ASSERT(m_type == UndefinedType);
139     m_type = IDBDatabaseType;
140     m_idbDatabase = value;
141 }
142 
set(PassRefPtr<IDBFactory> value)143 void IDBAny::set(PassRefPtr<IDBFactory> value)
144 {
145     ASSERT(m_type == UndefinedType);
146     m_type = IDBFactoryType;
147     m_idbFactory = value;
148 }
149 
set(PassRefPtr<IDBIndex> value)150 void IDBAny::set(PassRefPtr<IDBIndex> value)
151 {
152     ASSERT(m_type == UndefinedType);
153     m_type = IDBIndexType;
154     m_idbIndex = value;
155 }
156 
set(PassRefPtr<IDBKey> value)157 void IDBAny::set(PassRefPtr<IDBKey> value)
158 {
159     ASSERT(m_type == UndefinedType);
160     m_type = IDBKeyType;
161     m_idbKey = value;
162 }
163 
set(PassRefPtr<IDBTransaction> value)164 void IDBAny::set(PassRefPtr<IDBTransaction> value)
165 {
166     ASSERT(m_type == UndefinedType);
167     m_type = IDBTransactionType;
168     m_idbTransaction = value;
169 }
170 
set(PassRefPtr<IDBObjectStore> value)171 void IDBAny::set(PassRefPtr<IDBObjectStore> value)
172 {
173     ASSERT(m_type == UndefinedType);
174     m_type = IDBObjectStoreType;
175     m_idbObjectStore = value;
176 }
177 
set(PassRefPtr<SerializedScriptValue> value)178 void IDBAny::set(PassRefPtr<SerializedScriptValue> value)
179 {
180     ASSERT(m_type == UndefinedType);
181     m_type = SerializedScriptValueType;
182     m_serializedScriptValue = value;
183 }
184 
185 } // namespace WebCore
186 
187 #endif
188