| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 O3D_GPU_PLUGIN_NP_UTILS_NP_UTILS_H_ | 5 #ifndef O3D_GPU_PLUGIN_NP_UTILS_NP_UTILS_H_ |
| 6 #define O3D_GPU_PLUGIN_NP_UTILS_NP_UTILS_H_ | 6 #define O3D_GPU_PLUGIN_NP_UTILS_NP_UTILS_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "o3d/gpu_plugin/np_utils/np_browser.h" | 10 #include "o3d/gpu_plugin/np_utils/np_browser.h" |
| 11 #include "o3d/gpu_plugin/np_utils/np_class.h" |
| 11 #include "o3d/gpu_plugin/np_utils/np_object_pointer.h" | 12 #include "o3d/gpu_plugin/np_utils/np_object_pointer.h" |
| 12 #include "third_party/npapi/bindings/npapi.h" | 13 #include "third_party/npapi/bindings/npapi.h" |
| 13 #include "third_party/npapi/bindings/npruntime.h" | 14 #include "third_party/npapi/bindings/npruntime.h" |
| 14 | 15 |
| 15 namespace o3d { | 16 namespace o3d { |
| 16 namespace gpu_plugin { | 17 namespace gpu_plugin { |
| 17 | 18 |
| 18 // Convert NPVariant to C++ type. Returns whether the conversion was successful. | 19 // Convert NPVariant to C++ type. Returns whether the conversion was successful. |
| 19 bool NPVariantToValue(bool* value, const NPVariant& variant); | 20 bool NPVariantToValue(bool* value, const NPVariant& variant); |
| 20 bool NPVariantToValue(int32* value, const NPVariant& variant); | 21 bool NPVariantToValue(int32* value, const NPVariant& variant); |
| 21 bool NPVariantToValue(float* value, const NPVariant& variant); | 22 bool NPVariantToValue(float* value, const NPVariant& variant); |
| 22 bool NPVariantToValue(double* value, const NPVariant& variant); | 23 bool NPVariantToValue(double* value, const NPVariant& variant); |
| 23 bool NPVariantToValue(std::string* value, const NPVariant& variant); | 24 bool NPVariantToValue(std::string* value, const NPVariant& variant); |
| 24 | 25 |
| 25 template <typename T> | 26 template <typename T> |
| 26 bool NPVariantToValue(NPObjectPointer<T>* value, | 27 bool NPVariantToValue(NPObjectPointer<T>* value, |
| 27 const NPVariant& variant) { | 28 const NPVariant& variant) { |
| 28 if (NPVARIANT_IS_NULL(variant)) { | 29 if (NPVARIANT_IS_NULL(variant)) { |
| 29 *value = NPObjectPointer<T>(); | 30 *value = NPObjectPointer<T>(); |
| 30 return true; | 31 return true; |
| 31 } else if (NPVARIANT_IS_OBJECT(variant)) { | 32 } else if (NPVARIANT_IS_OBJECT(variant)) { |
| 32 NPObject* object = NPVARIANT_TO_OBJECT(variant); | 33 NPObject* object = NPVARIANT_TO_OBJECT(variant); |
| 33 if (object->_class == BaseNPObject::GetNPClass<T>()) { | 34 if (object->_class == NPGetClass<T>()) { |
| 34 *value = NPObjectPointer<T>(static_cast<T*>( | 35 *value = NPObjectPointer<T>(static_cast<T*>( |
| 35 NPVARIANT_TO_OBJECT(variant))); | 36 NPVARIANT_TO_OBJECT(variant))); |
| 36 return true; | 37 return true; |
| 37 } | 38 } |
| 38 } | 39 } |
| 39 | 40 |
| 40 return false; | 41 return false; |
| 41 } | 42 } |
| 42 | 43 |
| 43 // Specialization for NPObject does not check for mismatched NPClass. | 44 // Specialization for NPObject does not check for mismatched NPClass. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 71 } else { | 72 } else { |
| 72 NULL_TO_NPVARIANT(*variant); | 73 NULL_TO_NPVARIANT(*variant); |
| 73 } | 74 } |
| 74 } | 75 } |
| 75 | 76 |
| 76 // NPVariant that automatically manages lifetime of string and object variants. | 77 // NPVariant that automatically manages lifetime of string and object variants. |
| 77 class SmartNPVariant : public NPVariant { | 78 class SmartNPVariant : public NPVariant { |
| 78 public: | 79 public: |
| 79 SmartNPVariant(); | 80 SmartNPVariant(); |
| 80 SmartNPVariant(const SmartNPVariant& rhs); | 81 SmartNPVariant(const SmartNPVariant& rhs); |
| 81 SmartNPVariant(const NPVariant& rhs); | 82 explicit SmartNPVariant(const NPVariant& rhs); |
| 82 | 83 |
| 83 template <typename T> | 84 template <typename T> |
| 84 explicit SmartNPVariant(const T& v) { | 85 explicit SmartNPVariant(const T& v) { |
| 85 ValueToNPVariant(v, this); | 86 ValueToNPVariant(v, this); |
| 86 } | 87 } |
| 87 | 88 |
| 88 ~SmartNPVariant(); | 89 ~SmartNPVariant(); |
| 89 | 90 |
| 90 SmartNPVariant& operator=(const SmartNPVariant& rhs); | 91 SmartNPVariant& operator=(const SmartNPVariant& rhs); |
| 91 SmartNPVariant& operator=(const NPVariant& rhs); | 92 SmartNPVariant& operator=(const NPVariant& rhs); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 NPBrowser::get()->GetStringIdentifier(name), | 255 NPBrowser::get()->GetStringIdentifier(name), |
| 255 &variant); | 256 &variant); |
| 256 } | 257 } |
| 257 | 258 |
| 258 bool NPRemoveProperty(NPP npp, | 259 bool NPRemoveProperty(NPP npp, |
| 259 const NPObjectPointer<NPObject>& object, | 260 const NPObjectPointer<NPObject>& object, |
| 260 const NPUTF8* name); | 261 const NPUTF8* name); |
| 261 | 262 |
| 262 template <typename NPObjectType> | 263 template <typename NPObjectType> |
| 263 NPObjectPointer<NPObjectType> NPCreateObject(NPP npp) { | 264 NPObjectPointer<NPObjectType> NPCreateObject(NPP npp) { |
| 264 const NPClass* np_class = BaseNPObject::GetNPClass<NPObjectType>(); | 265 const NPClass* np_class = NPGetClass<NPObjectType>(); |
| 265 NPObjectType* object = static_cast<NPObjectType*>( | 266 NPObjectType* object = static_cast<NPObjectType*>( |
| 266 NPBrowser::get()->CreateObject(npp, np_class)); | 267 NPBrowser::get()->CreateObject(npp, np_class)); |
| 267 return NPObjectPointer<NPObjectType>::FromReturned(object); | 268 return NPObjectPointer<NPObjectType>::FromReturned(object); |
| 268 } | 269 } |
| 269 | 270 |
| 270 } // namespace gpu_plugin | 271 } // namespace gpu_plugin |
| 271 } // namespace o3d | 272 } // namespace o3d |
| 272 | 273 |
| 273 #endif // O3D_GPU_PLUGIN_NP_UTILS_NP_UTILS_H_ | 274 #endif // O3D_GPU_PLUGIN_NP_UTILS_NP_UTILS_H_ |
| OLD | NEW |