65 #ifndef _NP_RUNTIME_H_
66 #define _NP_RUNTIME_H_
105 #define NP_BEGIN_MACRO do {
106 #define NP_END_MACRO } while (0)
118 const NPUTF8 *UTF8Characters;
127 NPVariantType_Double,
128 NPVariantType_String,
153 void NPN_ReleaseVariantValue(
NPVariant *variant);
155 #define NPVARIANT_IS_VOID(_v) ((_v).type == NPVariantType_Void)
156 #define NPVARIANT_IS_NULL(_v) ((_v).type == NPVariantType_Null)
157 #define NPVARIANT_IS_BOOLEAN(_v) ((_v).type == NPVariantType_Bool)
158 #define NPVARIANT_IS_INT32(_v) ((_v).type == NPVariantType_Int32)
159 #define NPVARIANT_IS_DOUBLE(_v) ((_v).type == NPVariantType_Double)
160 #define NPVARIANT_IS_STRING(_v) ((_v).type == NPVariantType_String)
161 #define NPVARIANT_IS_OBJECT(_v) ((_v).type == NPVariantType_Object)
163 #define NPVARIANT_TO_BOOLEAN(_v) ((_v).value.boolValue)
164 #define NPVARIANT_TO_INT32(_v) ((_v).value.intValue)
165 #define NPVARIANT_TO_DOUBLE(_v) ((_v).value.doubleValue)
166 #define NPVARIANT_TO_STRING(_v) ((_v).value.stringValue)
167 #define NPVARIANT_TO_OBJECT(_v) ((_v).value.objectValue)
169 #define VOID_TO_NPVARIANT(_v) \
171 (_v).type = NPVariantType_Void; \
172 (_v).value.objectValue = NULL; \
175 #define NULL_TO_NPVARIANT(_v) \
177 (_v).type = NPVariantType_Null; \
178 (_v).value.objectValue = NULL; \
181 #define BOOLEAN_TO_NPVARIANT(_val, _v) \
183 (_v).type = NPVariantType_Bool; \
184 (_v).value.boolValue = !!(_val); \
187 #define INT32_TO_NPVARIANT(_val, _v) \
189 (_v).type = NPVariantType_Int32; \
190 (_v).value.intValue = _val; \
193 #define DOUBLE_TO_NPVARIANT(_val, _v) \
195 (_v).type = NPVariantType_Double; \
196 (_v).value.doubleValue = _val; \
199 #define STRINGZ_TO_NPVARIANT(_val, _v) \
201 (_v).type = NPVariantType_String; \
202 NPString str = { _val, strlen(_val) }; \
203 (_v).value.stringValue = str; \
206 #define STRINGN_TO_NPVARIANT(_val, _len, _v) \
208 (_v).type = NPVariantType_String; \
209 NPString str = { _val, _len }; \
210 (_v).value.stringValue = str; \
213 #define OBJECT_TO_NPVARIANT(_val, _v) \
215 (_v).type = NPVariantType_Object; \
216 (_v).value.objectValue = _val; \
242 typedef void *NPIdentifier;
255 NPIdentifier NPN_GetStringIdentifier(
const NPUTF8 *name);
256 void NPN_GetStringIdentifiers(
const NPUTF8 **names, int32_t nameCount,
257 NPIdentifier *identifiers);
258 NPIdentifier NPN_GetIntIdentifier(int32_t intid);
259 bool NPN_IdentifierIsString(NPIdentifier identifier);
264 NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier);
270 int32_t NPN_IntFromIdentifier(NPIdentifier identifier);
280 typedef void (*NPDeallocateFunctionPtr)(
NPObject *npobj);
281 typedef void (*NPInvalidateFunctionPtr)(
NPObject *npobj);
282 typedef bool (*NPHasMethodFunctionPtr)(
NPObject *npobj, NPIdentifier name);
283 typedef bool (*NPInvokeFunctionPtr)(
NPObject *npobj, NPIdentifier name,
284 const NPVariant *args, uint32_t argCount,
286 typedef bool (*NPInvokeDefaultFunctionPtr)(
NPObject *npobj,
290 typedef bool (*NPHasPropertyFunctionPtr)(
NPObject *npobj, NPIdentifier name);
291 typedef bool (*NPGetPropertyFunctionPtr)(
NPObject *npobj, NPIdentifier name,
293 typedef bool (*NPSetPropertyFunctionPtr)(
NPObject *npobj, NPIdentifier name,
295 typedef bool (*NPRemovePropertyFunctionPtr)(
NPObject *npobj,
297 typedef bool (*NPEnumerationFunctionPtr)(
NPObject *npobj, NPIdentifier **value,
299 typedef bool (*NPConstructFunctionPtr)(
NPObject *npobj,
329 uint32_t structVersion;
330 NPAllocateFunctionPtr allocate;
331 NPDeallocateFunctionPtr deallocate;
332 NPInvalidateFunctionPtr invalidate;
333 NPHasMethodFunctionPtr hasMethod;
334 NPInvokeFunctionPtr invoke;
335 NPInvokeDefaultFunctionPtr invokeDefault;
336 NPHasPropertyFunctionPtr hasProperty;
337 NPGetPropertyFunctionPtr getProperty;
338 NPSetPropertyFunctionPtr setProperty;
339 NPRemovePropertyFunctionPtr removeProperty;
340 NPEnumerationFunctionPtr enumerate;
341 NPConstructFunctionPtr construct;
344 #define NP_CLASS_STRUCT_VERSION 3
346 #define NP_CLASS_STRUCT_VERSION_ENUM 2
347 #define NP_CLASS_STRUCT_VERSION_CTOR 3
349 #define NP_CLASS_STRUCT_VERSION_HAS_ENUM(npclass) \
350 ((npclass)->structVersion >= NP_CLASS_STRUCT_VERSION_ENUM)
352 #define NP_CLASS_STRUCT_VERSION_HAS_CTOR(npclass) \
353 ((npclass)->structVersion >= NP_CLASS_STRUCT_VERSION_CTOR)
357 uint32_t referenceCount;
381 void NPN_ReleaseObject(
NPObject *npobj);
395 bool NPN_Invoke(
NPP npp,
NPObject *npobj, NPIdentifier methodName,
401 bool NPN_GetProperty(
NPP npp,
NPObject *npobj, NPIdentifier propertyName,
403 bool NPN_SetProperty(
NPP npp,
NPObject *npobj, NPIdentifier propertyName,
405 bool NPN_RemoveProperty(
NPP npp,
NPObject *npobj, NPIdentifier propertyName);
406 bool NPN_HasProperty(
NPP npp,
NPObject *npobj, NPIdentifier propertyName);
407 bool NPN_HasMethod(
NPP npp,
NPObject *npobj, NPIdentifier methodName);
408 bool NPN_Enumerate(
NPP npp,
NPObject *npobj, NPIdentifier **identifier,
419 void NPN_SetException(
NPObject *npobj,
const NPUTF8 *message);