Index: ppapi/cpp/dev/var_dictionary_dev.cc |
diff --git a/ppapi/cpp/dev/var_dictionary_dev.cc b/ppapi/cpp/dev/var_dictionary_dev.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cb0ba5c81e2fd495d2973529750779fd5f7e98f7 |
--- /dev/null |
+++ b/ppapi/cpp/dev/var_dictionary_dev.cc |
@@ -0,0 +1,97 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "ppapi/cpp/dev/var_dictionary_dev.h" |
+ |
+#include "ppapi/c/dev/ppb_var_dictionary_dev.h" |
+#include "ppapi/cpp/logging.h" |
+#include "ppapi/cpp/module_impl.h" |
+ |
+namespace pp { |
+ |
+namespace { |
+ |
+template <> const char* interface_name<PPB_VarDictionary_Dev_0_1>() { |
+ return PPB_VAR_DICTIONARY_DEV_INTERFACE_0_1; |
+} |
+ |
+} // namespace |
+ |
+VarDictionary_Dev::VarDictionary_Dev() : Var(Null()) { |
+ if (has_interface<PPB_VarDictionary_Dev_0_1>()) |
+ var_ = get_interface<PPB_VarDictionary_Dev_0_1>()->Create(); |
+ else |
+ PP_NOTREACHED(); |
+} |
+ |
+VarDictionary_Dev::VarDictionary_Dev(const Var& var) : Var(var) { |
+ if (!var.is_dictionary()) { |
+ PP_NOTREACHED(); |
+ |
+ // This takes care of releasing the reference that this object holds. |
+ Var::operator=(Var(Null())); |
+ } |
+} |
+ |
+VarDictionary_Dev::VarDictionary_Dev(const VarDictionary_Dev& other) |
+ : Var(other) { |
+} |
+ |
+VarDictionary_Dev::~VarDictionary_Dev() { |
+} |
+ |
+VarDictionary_Dev& VarDictionary_Dev::operator=( |
+ const VarDictionary_Dev& other) { |
+ Var::operator=(other); |
+ return *this; |
+} |
+ |
+Var& VarDictionary_Dev::operator=(const Var& other) { |
+ if (other.is_dictionary()) { |
+ Var::operator=(other); |
+ } else { |
+ PP_NOTREACHED(); |
+ Var::operator=(Var(Null())); |
+ } |
+ return *this; |
+} |
+ |
+Var VarDictionary_Dev::Get(const Var& key) const { |
+ if (!has_interface<PPB_VarDictionary_Dev_0_1>()) |
+ return Var(); |
+ |
+ return Var( |
+ PASS_REF, |
+ get_interface<PPB_VarDictionary_Dev_0_1>()->Get(var_, key.pp_var())); |
+} |
+ |
+PP_Bool VarDictionary_Dev::Set(const Var& key, const Var& value) { |
+ if (!has_interface<PPB_VarDictionary_Dev_0_1>()) |
+ return PP_FALSE; |
+ |
+ return get_interface<PPB_VarDictionary_Dev_0_1>()->Set(var_, key.pp_var(), |
+ value.pp_var()); |
+} |
+ |
+void VarDictionary_Dev::Delete(const Var& key) { |
+ if (has_interface<PPB_VarDictionary_Dev_0_1>()) |
+ get_interface<PPB_VarDictionary_Dev_0_1>()->Delete(var_, key.pp_var()); |
+} |
+ |
+PP_Bool VarDictionary_Dev::HasKey(const Var& key) const { |
+ if (!has_interface<PPB_VarDictionary_Dev_0_1>()) |
+ return PP_FALSE; |
+ |
+ return get_interface<PPB_VarDictionary_Dev_0_1>()->HasKey(var_, key.pp_var()); |
+} |
+ |
+Var VarDictionary_Dev::GetKeys() const { |
+ if (!has_interface<PPB_VarDictionary_Dev_0_1>()) |
+ return Var(Null()); |
+ |
+ return Var(PASS_REF, |
+ get_interface<PPB_VarDictionary_Dev_0_1>()->GetKeys(var_)); |
+} |
+ |
+} // namespace pp |