[WTF] Import std::optional reference implementation as WTF::Optional
[WebKit-https.git] / Source / WebCore / Modules / webdatabase / SQLResultSet.h
index 28ea431..e228399 100644 (file)
@@ -10,7 +10,7 @@
  * 2.  Redistributions in binary form must reproduce the above copyright
  *     notice, this list of conditions and the following disclaimer in the
  *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
  *     its contributors may be used to endorse or promote products derived
  *     from this software without specific prior written permission.
  *
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef SQLResultSet_h
-#define SQLResultSet_h
+#pragma once
 
-#if ENABLE(SQL_DATABASE)
-
-#include "DatabaseBasicTypes.h"
+#include "ExceptionOr.h"
 #include "SQLResultSetRowList.h"
 #include <wtf/ThreadSafeRefCounted.h>
 
@@ -39,28 +36,33 @@ namespace WebCore {
 
 class SQLResultSet : public ThreadSafeRefCounted<SQLResultSet> {
 public:
-    static PassRefPtr<SQLResultSet> create() { return adoptRef(new SQLResultSet); }
+    static Ref<SQLResultSet> create() { return adoptRef(*new SQLResultSet); }
 
-    SQLResultSetRowList* rows() const;
+    SQLResultSetRowList& rows() { return m_rows.get(); }
 
-    int64_t insertId(ExceptionCode&) const;
-    int rowsAffected() const;
+    ExceptionOr<int64_t> insertId() const;
+    int rowsAffected() const { return m_rowsAffected; }
 
-// For internal (non-JS) use
     void setInsertId(int64_t);
     void setRowsAffected(int);
 
 private:
     SQLResultSet();
 
-    RefPtr<SQLResultSetRowList> m_rows;
-    int64_t m_insertId;
-    bool m_insertIdSet;
-    int m_rowsAffected;
+    Ref<SQLResultSetRowList> m_rows;
+    std::optional<int64_t> m_insertId;
+    int m_rowsAffected { 0 };
 };
 
-} // namespace WebCore
+inline void SQLResultSet::setInsertId(int64_t id)
+{
+    ASSERT(!m_insertId);
+    m_insertId = id;
+}
 
-#endif
+inline void SQLResultSet::setRowsAffected(int count)
+{
+    m_rowsAffected = count;
+}
 
-#endif // SQLResultSet_h
+} // namespace WebCore