diff options
Diffstat (limited to 'gpu/np_utils/np_utils.h')
-rw-r--r-- | gpu/np_utils/np_utils.h | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/gpu/np_utils/np_utils.h b/gpu/np_utils/np_utils.h deleted file mode 100644 index 5c7e3b7..0000000 --- a/gpu/np_utils/np_utils.h +++ /dev/null @@ -1,271 +0,0 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef GPU_NP_UTILS_NP_UTILS_H_ -#define GPU_NP_UTILS_NP_UTILS_H_ - -#include <string> - -#include "gpu/np_utils/np_browser.h" -#include "gpu/np_utils/np_class.h" -#include "gpu/np_utils/np_object_pointer.h" -#include "gpu/np_utils/np_headers.h" - -namespace np_utils { - -// Convert NPVariant to C++ type. Returns whether the conversion was successful. -bool NPVariantToValue(bool* value, const NPVariant& variant); -bool NPVariantToValue(int32* value, const NPVariant& variant); -bool NPVariantToValue(float* value, const NPVariant& variant); -bool NPVariantToValue(double* value, const NPVariant& variant); -bool NPVariantToValue(std::string* value, const NPVariant& variant); - -template <typename T> -bool NPVariantToValue(NPObjectPointer<T>* value, - const NPVariant& variant) { - if (NPVARIANT_IS_NULL(variant)) { - *value = NPObjectPointer<T>(); - return true; - } else if (NPVARIANT_IS_OBJECT(variant)) { - NPObject* object = NPVARIANT_TO_OBJECT(variant); - if (object->_class == NPGetClass<T>()) { - *value = NPObjectPointer<T>(static_cast<T*>( - NPVARIANT_TO_OBJECT(variant))); - return true; - } - } - - return false; -} - -// Specialization for NPObject does not check for mismatched NPClass. -template <> -inline bool NPVariantToValue(NPObjectPointer<NPObject>* value, - const NPVariant& variant) { - if (NPVARIANT_IS_NULL(variant)) { - *value = NPObjectPointer<NPObject>(); - return true; - } else if (NPVARIANT_IS_OBJECT(variant)) { - *value = NPObjectPointer<NPObject>(NPVARIANT_TO_OBJECT(variant)); - return true; - } - - return false; -} - -// Convert C++ type to NPVariant. -void ValueToNPVariant(bool value, NPVariant* variant); -void ValueToNPVariant(int32 value, NPVariant* variant); -void ValueToNPVariant(float value, NPVariant* variant); -void ValueToNPVariant(double value, NPVariant* variant); -void ValueToNPVariant(const std::string& value, NPVariant* variant); - -template <typename T> -void ValueToNPVariant(const NPObjectPointer<T>& value, - NPVariant* variant) { - if (value.Get()) { - NPBrowser::get()->RetainObject(value.Get()); - OBJECT_TO_NPVARIANT(value.Get(), *variant); - } else { - NULL_TO_NPVARIANT(*variant); - } -} - -// NPVariant that automatically manages lifetime of string and object variants. -class SmartNPVariant : public NPVariant { - public: - SmartNPVariant(); - SmartNPVariant(const SmartNPVariant& rhs); - explicit SmartNPVariant(const NPVariant& rhs); - - template <typename T> - explicit SmartNPVariant(const T& v) { - ValueToNPVariant(v, this); - } - - ~SmartNPVariant(); - - SmartNPVariant& operator=(const SmartNPVariant& rhs); - SmartNPVariant& operator=(const NPVariant& rhs); - - template <typename T> - bool GetValue(T* v) const { - return NPVariantToValue(v, *this); - } - - bool IsVoid() const; - - template <typename T> - void SetValue(const T& v) { - Release(); - ValueToNPVariant(v, this); - } - - void CopyTo(NPVariant* target) const; - - // Sets the variant to void. - void Release(); - - // Called when an NPObject is invalidated to clear any references to other - // NPObjects. Does not release the object as it might no longer be valid. - void Invalidate(); -}; - -// These allow a method to be invoked with automatic conversion of C++ -// types to variants for arguments and return values. - -bool NPHasMethod(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name); - -inline bool NPInvokeVoid(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name) { - SmartNPVariant result; - return NPBrowser::get()->Invoke( - npp, - object.Get(), - NPBrowser::get()->GetStringIdentifier(name), - NULL, 0, - &result); -} - -template<typename R> -bool NPInvoke(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name, - R* r) { - SmartNPVariant result; - if (NPBrowser::get()->Invoke( - npp, - object.Get(), - NPBrowser::get()->GetStringIdentifier(name), - NULL, 0, - &result)) { - return result.GetValue(r); - } - return false; -} - -template<typename P0> -bool NPInvokeVoid(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name, - P0 p0) { - SmartNPVariant args[1]; - args[0].SetValue(p0); - SmartNPVariant result; - return NPBrowser::get()->Invoke( - npp, - object.Get(), - NPBrowser::get()->GetStringIdentifier(name), - &args[0], 1, - &result); -} - -template<typename R, typename P0> -bool NPInvoke(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name, - P0 p0, - R* r) { - SmartNPVariant args[1]; - args[0].SetValue(p0); - SmartNPVariant result; - if (NPBrowser::get()->Invoke( - npp, - object.Get(), - NPBrowser::get()->GetStringIdentifier(name), - &args[0], 1, - &result)) { - return result.GetValue(r); - } - return false; -} - -template<typename P0, typename P1> -bool NPInvokeVoid(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name, - P0 p0, P1 p1) { - SmartNPVariant args[2]; - args[0].SetValue(p0); - args[1].SetValue(p1); - SmartNPVariant result; - return NPBrowser::get()->Invoke( - npp, - object.Get(), - NPBrowser::get()->GetStringIdentifier(name), - &args[0], 2, - &result); -} - -template<typename R, typename P0, typename P1> -bool NPInvoke(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name, - P0 p0, P1 p1, - R* r) { - SmartNPVariant args[2]; - args[0].SetValue(p0); - args[1].SetValue(p1); - SmartNPVariant result; - if (NPBrowser::get()->Invoke( - npp, - object.Get(), - NPBrowser::get()->GetStringIdentifier(name), - &args[0], 2, - &result)) { - return result.GetValue(r); - } - return false; -} - -bool NPHasProperty(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name); - -template <typename T> -bool NPGetProperty(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name, - T* value) { - SmartNPVariant result; - if (NPBrowser::get()->GetProperty(npp, - object.Get(), - NPBrowser::get()->GetStringIdentifier(name), - &result)) { - return result.GetValue(value); - } - return false; -} - -template <typename T> -bool NPSetProperty(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name, - const T& value) { - SmartNPVariant variant(value); - return NPBrowser::get()->SetProperty( - npp, - object.Get(), - NPBrowser::get()->GetStringIdentifier(name), - &variant); -} - -bool NPRemoveProperty(NPP npp, - const NPObjectPointer<NPObject>& object, - const NPUTF8* name); - -template <typename NPObjectType> -NPObjectPointer<NPObjectType> NPCreateObject(NPP npp) { - const NPClass* np_class = NPGetClass<NPObjectType>(); - NPObjectType* object = static_cast<NPObjectType*>( - NPBrowser::get()->CreateObject(npp, np_class)); - return NPObjectPointer<NPObjectType>::FromReturned(object); -} - -} // namespace np_utils - -#endif // GPU_NP_UTILS_NP_UTILS_H_ |