// 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_array_dev.h" #include "ppapi/c/dev/ppb_var_array_dev.h" #include "ppapi/cpp/logging.h" #include "ppapi/cpp/module_impl.h" namespace pp { namespace { template <> const char* interface_name() { return PPB_VAR_ARRAY_DEV_INTERFACE_0_1; } } // namespace VarArray_Dev::VarArray_Dev() : Var(Null()) { if (has_interface()) var_ = get_interface()->Create(); else PP_NOTREACHED(); } VarArray_Dev::VarArray_Dev(const Var& var) : Var(var) { if (!var.is_array()) { PP_NOTREACHED(); // This takes care of releasing the reference that this object holds. Var::operator=(Var(Null())); } } VarArray_Dev::VarArray_Dev(const PP_Var& var) : Var(var) { if (var.type != PP_VARTYPE_ARRAY) { PP_NOTREACHED(); // This takes care of releasing the reference that this object holds. Var::operator=(Var(Null())); } } VarArray_Dev::VarArray_Dev(const VarArray_Dev& other) : Var(other) { } VarArray_Dev::~VarArray_Dev() { } VarArray_Dev& VarArray_Dev::operator=(const VarArray_Dev& other) { Var::operator=(other); return *this; } Var& VarArray_Dev::operator=(const Var& other) { if (other.is_array()) { Var::operator=(other); } else { PP_NOTREACHED(); Var::operator=(Var(Null())); } return *this; } Var VarArray_Dev::Get(uint32_t index) const { if (!has_interface()) return Var(); return Var(PASS_REF, get_interface()->Get(var_, index)); } PP_Bool VarArray_Dev::Set(uint32_t index, const Var& value) { if (!has_interface()) return PP_FALSE; return get_interface()->Set(var_, index, value.pp_var()); } uint32_t VarArray_Dev::GetLength() const { if (!has_interface()) return 0; return get_interface()->GetLength(var_); } PP_Bool VarArray_Dev::SetLength(uint32_t length) { if (!has_interface()) return PP_FALSE; return get_interface()->SetLength(var_, length); } } // namespace pp