| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef PPAPI_CPP_VAR_H_ | 5 #ifndef PPAPI_CPP_VAR_H_ |
| 6 #define PPAPI_CPP_VAR_H_ | 6 #define PPAPI_CPP_VAR_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "ppapi/c/pp_var.h" | 11 #include "ppapi/c/pp_var.h" |
| 12 | 12 #include "ppapi/cpp/pass_ref.h" |
| 13 | 13 |
| 14 /// @file | 14 /// @file |
| 15 /// This file defines the API for handling the passing of data types between | 15 /// This file defines the API for handling the passing of data types between |
| 16 /// your module and the page. | 16 /// your module and the page. |
| 17 namespace pp { | 17 namespace pp { |
| 18 | 18 |
| 19 /// A generic type used for passing data types between the module and the page. | 19 /// A generic type used for passing data types between the module and the page. |
| 20 class Var { | 20 class Var { |
| 21 public: | 21 public: |
| 22 /// Special value passed to constructor to make <code>NULL</code>. | 22 /// Special value passed to constructor to make <code>NULL</code>. |
| (...skipping 20 matching lines...) Expand all Loading... |
| 43 /// | 43 /// |
| 44 /// @param[in] d A double value. | 44 /// @param[in] d A double value. |
| 45 Var(double d); | 45 Var(double d); |
| 46 | 46 |
| 47 /// A constructor used to create a UTF-8 character <code>Var</code>. | 47 /// A constructor used to create a UTF-8 character <code>Var</code>. |
| 48 Var(const char* utf8_str); // Must be encoded in UTF-8. | 48 Var(const char* utf8_str); // Must be encoded in UTF-8. |
| 49 | 49 |
| 50 /// A constructor used to create a UTF-8 character <code>Var</code>. | 50 /// A constructor used to create a UTF-8 character <code>Var</code>. |
| 51 Var(const std::string& utf8_str); // Must be encoded in UTF-8. | 51 Var(const std::string& utf8_str); // Must be encoded in UTF-8. |
| 52 | 52 |
| 53 /// PassRef can be used to construct a <code>Var</code> with a | |
| 54 /// <code>PP_Var</code> when the <code>PP_Var</code> | |
| 55 /// already has had its reference count incremented. For example: | |
| 56 /// <code>pp::Var my_var(PassRef(), my_pp_var);</code> | |
| 57 struct PassRef {}; | |
| 58 | |
| 59 /// A constructor used when you have received a <code>Var</code> as a return | 53 /// A constructor used when you have received a <code>Var</code> as a return |
| 60 /// value that has had its reference count incremented for you. | 54 /// value that has had its reference count incremented for you. |
| 61 /// | 55 /// |
| 62 /// You will not normally need to use this constructor because | 56 /// You will not normally need to use this constructor because |
| 63 /// the reference count will not normally be incremented for you. | 57 /// the reference count will not normally be incremented for you. |
| 64 Var(PassRef, PP_Var var) { | 58 Var(PassRef, PP_Var var) { |
| 65 var_ = var; | 59 var_ = var; |
| 66 needs_release_ = true; | 60 needs_release_ = true; |
| 67 } | 61 } |
| 68 | 62 |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 262 temp_ = output_->var_; | 256 temp_ = output_->var_; |
| 263 } else { | 257 } else { |
| 264 temp_.padding = 0; | 258 temp_.padding = 0; |
| 265 temp_.type = PP_VARTYPE_UNDEFINED; | 259 temp_.type = PP_VARTYPE_UNDEFINED; |
| 266 } | 260 } |
| 267 } | 261 } |
| 268 | 262 |
| 269 /// Destructor. | 263 /// Destructor. |
| 270 ~OutException() { | 264 ~OutException() { |
| 271 if (output_ && !originally_had_exception_) | 265 if (output_ && !originally_had_exception_) |
| 272 *output_ = Var(PassRef(), temp_); | 266 *output_ = Var(PASS_REF, temp_); |
| 273 } | 267 } |
| 274 | 268 |
| 275 PP_Var* get() { | 269 PP_Var* get() { |
| 276 if (output_) | 270 if (output_) |
| 277 return &temp_; | 271 return &temp_; |
| 278 return NULL; | 272 return NULL; |
| 279 } | 273 } |
| 280 | 274 |
| 281 private: | 275 private: |
| 282 Var* output_; | 276 Var* output_; |
| 283 bool originally_had_exception_; | 277 bool originally_had_exception_; |
| 284 PP_Var temp_; | 278 PP_Var temp_; |
| 285 }; | 279 }; |
| 286 | 280 |
| 287 protected: | 281 protected: |
| 288 PP_Var var_; | 282 PP_Var var_; |
| 289 bool needs_release_; | 283 bool needs_release_; |
| 290 | 284 |
| 291 private: | 285 private: |
| 292 // Prevent an arbitrary pointer argument from being implicitly converted to | 286 // Prevent an arbitrary pointer argument from being implicitly converted to |
| 293 // a bool at Var construction. If somebody makes such a mistake, (s)he will | 287 // a bool at Var construction. If somebody makes such a mistake, (s)he will |
| 294 // get a compilation error. | 288 // get a compilation error. |
| 295 Var(void* non_scriptable_object_pointer); | 289 Var(void* non_scriptable_object_pointer); |
| 296 }; | 290 }; |
| 297 | 291 |
| 298 } // namespace pp | 292 } // namespace pp |
| 299 | 293 |
| 300 #endif // PPAPI_CPP_VAR_H_ | 294 #endif // PPAPI_CPP_VAR_H_ |
| OLD | NEW |