• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef PPAPI_SHARED_IMPL_ARRAY_VAR_H_
6 #define PPAPI_SHARED_IMPL_ARRAY_VAR_H_
7 
8 #include <vector>
9 
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "ppapi/c/pp_var.h"
13 #include "ppapi/shared_impl/ppapi_shared_export.h"
14 #include "ppapi/shared_impl/scoped_pp_var.h"
15 #include "ppapi/shared_impl/var.h"
16 
17 namespace ppapi {
18 
19 class PPAPI_SHARED_EXPORT ArrayVar : public Var {
20  public:
21   typedef std::vector<ScopedPPVar> ElementVector;
22 
23   ArrayVar();
24 
25   // Helper function that converts a PP_Var to an ArrayVar. This will return
26   // NULL if the PP_Var is not of type PP_VARTYPE_ARRAY or the array cannot be
27   // found from the var tracker.
28   static ArrayVar* FromPPVar(const PP_Var& var);
29 
30   // Var overrides.
31   virtual ArrayVar* AsArrayVar() OVERRIDE;
32   virtual PP_VarType GetType() const OVERRIDE;
33 
34   // The returned PP_Var has had a ref added on behalf of the caller.
35   PP_Var Get(uint32_t index) const;
36   PP_Bool Set(uint32_t index, const PP_Var& value);
37   uint32_t GetLength() const;
38   PP_Bool SetLength(uint32_t length);
39 
elements()40   const ElementVector& elements() const { return elements_; }
41 
elements()42   ElementVector& elements() { return elements_; }
43 
44  protected:
45   virtual ~ArrayVar();
46 
47  private:
48   ElementVector elements_;
49 
50   DISALLOW_COPY_AND_ASSIGN(ArrayVar);
51 };
52 
53 }  // namespace ppapi
54 
55 #endif  // PPAPI_SHARED_IMPL_ARRAY_VAR_H_
56