Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ppapi / shared_impl / array_var.h
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
40   const ElementVector& elements() const { return elements_; }
41
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_