1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef PPAPI_CPP_VAR_DICTIONARY_H_ 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PPAPI_CPP_VAR_DICTIONARY_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_bool.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/cpp/var.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/cpp/var_array.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/// @file 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/// This file defines the API for interacting with dictionary vars. 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace pp { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass VarDictionary : public Var { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// Constructs a new dictionary var. 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch VarDictionary(); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// Constructs a <code>VarDictionary</code> given a var for which 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// is_dictionary() is true. This will refer to the same dictionary var, but 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// allow you to access methods specific to dictionary. 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @param[in] var A dictionary var. 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch explicit VarDictionary(const Var& var); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// Constructs a <code>VarDictionary</code> given a <code>PP_Var</code> 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// of type PP_VARTYPE_DICTIONARY. 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @param[in] var A <code>PP_Var</code> of type PP_VARTYPE_DICTIONARY. 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch explicit VarDictionary(const PP_Var& var); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// Copy constructor. 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch VarDictionary(const VarDictionary& other); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~VarDictionary(); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// Assignment operator. 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch VarDictionary& operator=(const VarDictionary& other); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// The <code>Var</code> assignment operator is overridden here so that we can 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// check for assigning a non-dictionary var to a 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// <code>VarDictionary</code>. 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @param[in] other The dictionary var to be assigned. 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// @return The resulting <code>VarDictionary</code> (as a 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// <code>Var</code>&). 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual Var& operator=(const Var& other); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// Gets the value associated with the specified key. 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @param[in] key A string var. 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @return The value that is associated with <code>key</code>. If 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// <code>key</code> is not a string var, or it doesn't exist in the 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// dictionary, an undefined var is returned. 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Var Get(const Var& key) const; 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// Sets the value associated with the specified key. 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @param[in] key A string var. If this key hasn't existed in the dictionary, 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// it is added and associated with <code>value</code>; otherwise, the 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// previous value is replaced with <code>value</code>. 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @param[in] value The value to set. 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// @return A <code>bool</code> indicating whether the operation succeeds. 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool Set(const Var& key, const Var& value); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// Deletes the specified key and its associated value, if the key exists. 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @param[in] key A string var. 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Delete(const Var& key); 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// Checks whether a key exists. 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @param[in] key A string var. 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// @return A <code>bool</code> indicating whether the key exists. 82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool HasKey(const Var& key) const; 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// Gets all the keys in the dictionary. 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// @return An array var which contains all the keys of the dictionary. 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /// The elements are string vars. Returns an empty array var if failed. 88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch VarArray GetKeys() const; 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace pp 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif // PPAPI_CPP_VAR_DICTIONARY_H_ 94