15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright © 2004, Apple Computer, Inc. and The Mozilla Foundation. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * All rights reserved. 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * modification, are permitted provided that the following conditions are 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * met: 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * documentation and/or other materials provided with the distribution. 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3. Neither the names of Apple Computer, Inc. ("Apple") or The Mozilla 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Foundation ("Mozilla") nor the names of their contributors may be used 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to endorse or promote products derived from this software without 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * specific prior written permission. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE, MOZILLA AND THEIR CONTRIBUTORS "AS 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, MOZILLA OR 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * THEIR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Revision 1 (March 4, 2004): 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Initial proposal. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Revision 2 (March 10, 2004): 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * All calls into script were made asynchronous. Results are 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * provided via the NPScriptResultFunctionPtr callback. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Revision 3 (March 10, 2004): 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Corrected comments to not refer to class retain/release FunctionPtrs. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Revision 4 (March 11, 2004): 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Added additional convenience NPN_SetExceptionWithUTF8(). 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Changed NPHasPropertyFunctionPtr and NPHasMethodFunctionPtr to take NPClass 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * pointers instead of NPObject pointers. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Added NPIsValidIdentifier(). 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Revision 5 (March 17, 2004): 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Added context parameter to result callbacks from ScriptObject functions. 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Revision 6 (March 29, 2004): 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Renamed functions implemented by user agent to NPN_*. Removed _ from 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * type names. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Renamed "JavaScript" types to "Script". 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Revision 7 (April 21, 2004): 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NPIdentifier becomes a void*, was int32_t 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Remove NP_IsValidIdentifier, renamed NP_IdentifierFromUTF8 to NP_GetIdentifier 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Added NPVariant and modified functions to use this new type. 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Revision 8 (July 9, 2004): 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updated to joint Apple-Mozilla license. 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _NP_RUNTIME_H_ 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _NP_RUNTIME_H_ 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "nptypes.h" 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) This API is used to facilitate binding code written in C to script 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objects. The API in this header does not assume the presence of a 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user agent. That is, it can be used to bind C code to scripting 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) environments outside of the context of a user agent. 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) However, the normal use of the this API is in the context of a 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scripting environment running in a browser or other user agent. 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) In particular it is used to support the extended Netscape 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) script-ability API for plugins (NP-SAP). NP-SAP is an extension 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) of the Netscape plugin API. As such we have adopted the use of 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) the "NP" prefix for this API. 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) The following NP{N|P}Variables were added to the Netscape plugin 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) API (in npapi.h): 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPNVWindowNPObject 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPNVPluginElementNPObject 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPPVpluginScriptableNPObject 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) These variables are exposed through NPN_GetValue() and 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPP_GetValue() (respectively) and are used to establish the 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) initial binding between the user agent and native code. The DOM 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) objects in the user agent can be examined and manipulated using 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) the NPN_ functions that operate on NPObjects described in this 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) header. 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) To the extent possible the assumptions about the scripting 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) language used by the scripting environment have been minimized. 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NP_BEGIN_MACRO do { 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NP_END_MACRO } while (0) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Objects (non-primitive data) passed between 'C' and script is 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) always wrapped in an NPObject. The 'interface' of an NPObject is 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) described by an NPClass. 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct NPObject NPObject; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct NPClass NPClass; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef char NPUTF8; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _NPString { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NPUTF8 *utf8characters; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t utf8length; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} NPString; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum { 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Void, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Null, 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Bool, 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Int32, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Double, 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_String, 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Object 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} NPVariantType; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _NPVariant { 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType type; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) union { 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool boolValue; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t intValue; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double doubleValue; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPString stringValue; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPObject *objectValue; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } value; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} NPVariant; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPN_ReleaseVariantValue is called on all 'out' parameters 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) references. Specifically it is to be called on variants that own 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) their value, as is the case with all non-const NPVariant* 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arguments after a successful call to any methods (except this one) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) in this API. 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) After calling NPN_ReleaseVariantValue, the type of the variant 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) will be NPVariantType_Void. 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NPN_ReleaseVariantValue(NPVariant *variant); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_IS_VOID(_v) ((_v).type == NPVariantType_Void) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_IS_NULL(_v) ((_v).type == NPVariantType_Null) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_IS_BOOLEAN(_v) ((_v).type == NPVariantType_Bool) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_IS_INT32(_v) ((_v).type == NPVariantType_Int32) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_IS_DOUBLE(_v) ((_v).type == NPVariantType_Double) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_IS_STRING(_v) ((_v).type == NPVariantType_String) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_IS_OBJECT(_v) ((_v).type == NPVariantType_Object) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_TO_BOOLEAN(_v) ((_v).value.boolValue) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_TO_INT32(_v) ((_v).value.intValue) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_TO_DOUBLE(_v) ((_v).value.doubleValue) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_TO_STRING(_v) ((_v).value.stringValue) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NPVARIANT_TO_OBJECT(_v) ((_v).value.objectValue) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define VOID_TO_NPVARIANT(_v) \ 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_BEGIN_MACRO \ 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).type = NPVariantType_Void; \ 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).value.objectValue = NULL; \ 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_END_MACRO 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NULL_TO_NPVARIANT(_v) \ 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_BEGIN_MACRO \ 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).type = NPVariantType_Null; \ 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).value.objectValue = NULL; \ 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_END_MACRO 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define BOOLEAN_TO_NPVARIANT(_val, _v) \ 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_BEGIN_MACRO \ 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).type = NPVariantType_Bool; \ 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).value.boolValue = !!(_val); \ 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_END_MACRO 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define INT32_TO_NPVARIANT(_val, _v) \ 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_BEGIN_MACRO \ 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).type = NPVariantType_Int32; \ 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).value.intValue = _val; \ 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_END_MACRO 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define DOUBLE_TO_NPVARIANT(_val, _v) \ 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_BEGIN_MACRO \ 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).type = NPVariantType_Double; \ 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).value.doubleValue = _val; \ 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_END_MACRO 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STRINGZ_TO_NPVARIANT(_val, _v) \ 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_BEGIN_MACRO \ 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).type = NPVariantType_String; \ 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPString str = { _val, strlen(_val) }; \ 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).value.stringValue = str; \ 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_END_MACRO 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STRINGN_TO_NPVARIANT(_val, _len, _v) \ 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_BEGIN_MACRO \ 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).type = NPVariantType_String; \ 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPString str = { _val, _len }; \ 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).value.stringValue = str; \ 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_END_MACRO 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define OBJECT_TO_NPVARIANT(_val, _v) \ 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_BEGIN_MACRO \ 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).type = NPVariantType_Object; \ 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (_v).value.objectValue = _val; \ 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NP_END_MACRO 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Type mappings (JavaScript types have been used for illustration 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) purposes): 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JavaScript to C (NPVariant with type:) 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) undefined NPVariantType_Void 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) null NPVariantType_Null 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Boolean NPVariantType_Bool 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Number NPVariantType_Double or NPVariantType_Int32 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) String NPVariantType_String 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Object NPVariantType_Object 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) C (NPVariant with type:) to JavaScript 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Void undefined 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Null null 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Bool Boolean 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Int32 Number 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Double Number 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_String String 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariantType_Object Object 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void *NPIdentifier; 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPObjects have methods and properties. Methods and properties are 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identified with NPIdentifiers. These identifiers may be reflected 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) in script. NPIdentifiers can be either strings or integers, IOW, 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) methods and properties can be identified by either strings or 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) integers (i.e. foo["bar"] vs foo[1]). NPIdentifiers can be 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) compared using ==. In case of any errors, the requested 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPIdentifier(s) will be NULL. 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NPIdentifier NPN_GetStringIdentifier(const NPUTF8 *name); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NPN_GetStringIdentifiers(const NPUTF8 **names, int32_t nameCount, 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPIdentifier *identifiers); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NPIdentifier NPN_GetIntIdentifier(int32_t intid); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_IdentifierIsString(NPIdentifier identifier); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) The NPUTF8 returned from NPN_UTF8FromIdentifier SHOULD be freed. 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Get the integer represented by identifier. If identifier is not an 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) integer identifier, the behaviour is undefined. 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int32_t NPN_IntFromIdentifier(NPIdentifier identifier); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPObject behavior is implemented using the following set of 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callback functions. 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) The NPVariant *result argument of these functions (where 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) applicable) should be released using NPN_ReleaseVariantValue(). 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NPObject *(*NPAllocateFunctionPtr)(NPP npp, NPClass *aClass); 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*NPDeallocateFunctionPtr)(NPObject *npobj); 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*NPInvalidateFunctionPtr)(NPObject *npobj); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef bool (*NPHasMethodFunctionPtr)(NPObject *npobj, NPIdentifier name); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef bool (*NPInvokeFunctionPtr)(NPObject *npobj, NPIdentifier name, 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NPVariant *args, uint32_t argCount, 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariant *result); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef bool (*NPInvokeDefaultFunctionPtr)(NPObject *npobj, 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NPVariant *args, 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t argCount, 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariant *result); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef bool (*NPHasPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef bool (*NPGetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name, 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariant *result); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef bool (*NPSetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name, 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NPVariant *value); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef bool (*NPRemovePropertyFunctionPtr)(NPObject *npobj, 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPIdentifier name); 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef bool (*NPEnumerationFunctionPtr)(NPObject *npobj, NPIdentifier **value, 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t *count); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPObjects returned by create, retain, invoke, and getProperty pass 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) a reference count to the caller. That is, the callee adds a 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) reference count which passes to the caller. It is the caller's 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) responsibility to release the returned object. 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPInvokeFunctionPtr function may return 0 to indicate a void 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result. 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPInvalidateFunctionPtr is called by the scripting environment 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) when the native code is shutdown. Any attempt to message a 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPObject instance after the invalidate callback has been 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) called will result in undefined behavior, even if the native code 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is still retaining those NPObject instances. (The runtime 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) will typically return immediately, with 0 or NULL, from an attempt 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to dispatch to a NPObject, but this behavior should not be 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) depended upon.) 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) The NPEnumerationFunctionPtr function may pass an array of 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPIdentifiers back to the caller. The callee allocs the memory of 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) the array using NPN_MemAlloc(), and it's the caller's responsibility 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) to release it using NPN_MemFree(). 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct NPClass 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t structVersion; 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPAllocateFunctionPtr allocate; 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPDeallocateFunctionPtr deallocate; 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPInvalidateFunctionPtr invalidate; 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPHasMethodFunctionPtr hasMethod; 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPInvokeFunctionPtr invoke; 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPInvokeDefaultFunctionPtr invokeDefault; 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPHasPropertyFunctionPtr hasProperty; 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPGetPropertyFunctionPtr getProperty; 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPSetPropertyFunctionPtr setProperty; 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPRemovePropertyFunctionPtr removeProperty; 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPEnumerationFunctionPtr enumerate; 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NP_CLASS_STRUCT_VERSION 2 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NP_CLASS_STRUCT_VERSION_ENUM 2 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NP_CLASS_STRUCT_VERSION_HAS_ENUM(npclass) \ 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ((npclass)->structVersion >= NP_CLASS_STRUCT_VERSION_ENUM) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct NPObject { 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPClass *_class; 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t referenceCount; 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Additional space may be allocated here by types of NPObjects 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) If the class has an allocate function, NPN_CreateObject invokes 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) that function, otherwise a NPObject is allocated and 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) returned. This method will initialize the referenceCount member of 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) the NPObject to 1. 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NPObject *NPN_CreateObject(NPP npp, NPClass *aClass); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Increment the NPObject's reference count. 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NPObject *NPN_RetainObject(NPObject *npobj); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Decremented the NPObject's reference count. If the reference 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) count goes to zero, the class's destroy function is invoke if 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) specified, otherwise the object is freed directly. 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NPN_ReleaseObject(NPObject *npobj); 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Functions to access script objects represented by NPObject. 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Calls to script objects are synchronous. If a function returns a 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) value, it will be supplied via the result NPVariant 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) argument. Successful calls will return true, false will be 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) returned in case of an error. 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Calls made from plugin code to script must be made from the thread 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) on which the plugin was initialized. 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_Invoke(NPP npp, NPObject *npobj, NPIdentifier methodName, 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NPVariant *args, uint32_t argCount, NPVariant *result); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_InvokeDefault(NPP npp, NPObject *npobj, const NPVariant *args, 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t argCount, NPVariant *result); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_Evaluate(NPP npp, NPObject *npobj, NPString *script, 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariant *result); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_GetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName, 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPVariant *result); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_SetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName, 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NPVariant *value); 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_RemoveProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName); 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_HasProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName); 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_HasMethod(NPP npp, NPObject *npobj, NPIdentifier methodName); 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool NPN_Enumerate(NPP npp, NPObject *npobj, NPIdentifier **identifier, 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t *count); 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPN_SetException may be called to trigger a script exception upon 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return from entry points into NPObjects. Typical usage: 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NPN_SetException (npobj, message); 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NPN_SetException(NPObject *npobj, const NPUTF8 *message); 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 412